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.jswith your repository name - Run:
npm run build npm run export - Deploy the
outdirectory 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: littlecodr@gmail.com
- πΌ 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