
A unique, interactive portfolio website with an Ubuntu 20.04-inspired interface
Live Demo β’ Report Bug β’ Request Feature
- About
- Features
- Tech Stack
- Getting Started
- Usage
- Deployment
- Project Structure
- Customization
- Contributing
- License
- Contact
- Acknowledgments
This is my personal portfolio website featuring an Ubuntu 20.04-inspired desktop interface. Built with modern web technologies, it provides an interactive and engaging way to explore my skills, projects, and professional experience. The website mimics a real Ubuntu desktop environment with functional applications, a terminal, and a window management system.
- π§ Ubuntu-themed Interface: Authentic Ubuntu 20.04 desktop experience
- πΌ Professional Showcase: Comprehensive display of skills, projects, and experience
- π¨ Modern Design: Clean, responsive UI that works on all devices
- β‘ Fast Performance: Built with Next.js for optimal loading speeds
- π± Mobile Responsive: Fully functional on smartphones and tablets
- Draggable Windows: Fully functional window management system
- Taskbar: Launch and manage applications from the bottom taskbar
- System Tray: Display system information and quick actions
- Desktop Icons: Quick access to main applications
-
Terminal: Interactive command-line interface with custom commands
about-mayank
: Display information about mecd
,ls
,pwd
: Navigate through virtual file systemcode
: Open VS Code with my GitHub repositorychrome
: Open browser with my website- And many more!
-
About Me: Detailed information about my background and skills
-
Projects Showcase: Interactive display of my key projects with tech stacks
-
VS Code: View my portfolio source code in an embedded VS Code instance
-
Contact Form: Functional email form powered by EmailJS
-
External Links: Direct links to GitHub, LinkedIn, and other profiles
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Smooth Animations: Fluid transitions and interactions
- Custom Cursor: Enhanced visual feedback
- Keyboard Shortcuts: Navigate efficiently using keyboard
- SEO Optimized: Proper meta tags and social media integration
- Google Analytics: Integrated analytics for visitor tracking
- Performance Monitoring: Track page load times and user interactions
- Framework: Next.js 13.1.2 - React framework with SSR/SSG
- UI Library: React 18.2.0 - Component-based UI library
- Styling: Tailwind CSS 3.2.4 - Utility-first CSS framework
- Drag & Drop: React-Draggable - Draggable windows
- Icons: Custom SVG icons
- Email Service: EmailJS - Contact form functionality
- Analytics: Google Analytics 4 - Visitor tracking
- Hosting: Optimized for deployment on Vercel, Netlify, or similar platforms
- Package Manager: npm / yarn
- Code Quality: ESLint for linting
- Build Tool: Next.js built-in webpack configuration
- Version Control: Git & GitHub
Before you begin, ensure you have the following installed:
-
Clone the repository
git clone https://github.com/LittleCodr/portfolio.git cd portfolio
-
Install dependencies
npm install # or yarn install
-
Run the development server
npm run dev # or yarn dev
-
Open your browser
Navigate to http://localhost:3000 to see the application running.
- Create a free account at EmailJS
- Create an email service (Gmail, Outlook, etc.)
- Create an email template with the following variables:
{{name}}
- Sender's name{{subject}}
- Email subject{{message}}
- Email message body
- Update the credentials in
components/apps/gedit.js
:// Current configuration const serviceID = 'service_vz46lwf'; const templateID = 'template_8i60bqj'; const publicKey = 'DeVMnnb1zkvXuFF1v';
- Create a Google Analytics 4 property at Google Analytics
- Get your Measurement ID (format: G-XXXXXXXXXX)
- Update the ID in
pages/_app.js
:const GA_TRACKING_ID = 'G-0EEBPFMJN4';
The integrated terminal supports the following commands:
Command | Description |
---|---|
about-mayank |
Display information about me |
ls |
List files in current directory |
cd <dir> |
Change directory |
pwd |
Print working directory |
echo <text> |
Display text |
clear |
Clear terminal screen |
code |
Open VS Code with portfolio code |
spotify |
Open Spotify player |
chrome |
Open Chrome browser |
settings |
Open system settings |
exit |
Close terminal |
- Drag: Click and drag the title bar to move windows
- Close: Click the X button on the title bar
- Minimize: Click the minimize button
- Maximize: Click the maximize button (if available)
- Focus: Click anywhere on a window to bring it to front
# Create optimized production build
npm run build
# Start production server
npm start
# Export as static site (optional)
npm run export
-
Install Vercel CLI:
npm install -g vercel
-
Deploy:
vercel
-
Follow the prompts to complete deployment
-
Install Netlify CLI:
npm install -g netlify-cli
-
Build and deploy:
npm run build netlify deploy --prod
- Update
next.config.js
with your repository name - Run:
npm run build npm run export
- Deploy the
out
directory to GitHub Pages
portfolio/
βββ components/ # React components
β βββ apps/ # Application components (Terminal, VS Code, etc.)
β βββ context/ # React context providers
β βββ screen/ # Screen/layout components
β βββ SEO/ # SEO and meta components
βββ lib/ # Utility libraries
β βββ gtag.js # Google Analytics utilities
βββ pages/ # Next.js pages
β βββ _app.js # Custom App component
β βββ _document.js # Custom Document component
β βββ index.js # Home page
βββ public/ # Static assets
β βββ images/ # Images and icons
β βββ themes/ # Theme assets
βββ styles/ # Global styles
βββ apps.config.js # Application configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ package.json # Project dependencies
βββ README.md # This file
- About Section: Edit
components/apps/mayank.js
- Projects: Update project data in
components/apps/mayank.js
- Skills: Modify skills section in
components/apps/mayank.js
- Social Links: Update URLs in
apps.config.js
Edit tailwind.config.js
:
module.exports = {
theme: {
extend: {
colors: {
'ub-orange': '#E95420', // Main Ubuntu orange
// Add your custom colors
}
}
}
}
- Create component in
components/apps/
- Add configuration in
apps.config.js
- Import and integrate in the main app
Contributions, issues, and feature requests are welcome!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2024 Mayank Agrawal
Mayank Agrawal - iOS & Android Developer | Full Stack Engineer
- π Website: mayank1406.pro
- π§ Email: [email protected]
- πΌ LinkedIn: @mayank1406
- π GitHub: @LittleCodr
- π¦ Twitter: @mindflayer_69
Project Link: https://github.com/LittleCodr/portfolio
- Original Concept: Inspired by Vivek Patel's Ubuntu portfolio
- Ubuntu Design: Based on Ubuntu 20.04 Focal Fossa
- Icons & Assets: Ubuntu design team
- Framework: Next.js team for the amazing framework
- Styling: Tailwind CSS team
- Community: All the open-source contributors who made this possible
β Star this repository if you found it helpful! β
Made with β€οΈ by Mayank Agrawal