A fully interactive Operating System-style portfolio hosted on GitHub Pages.
π Live Demo: pravin-python.github.io/Web-OS-Portfolio
A real desktop OS experience in the browser β built with React, TypeScript, Zustand, and TailwindCSS v4. Drag windows, use the terminal, open apps, play games, and explore my work β all without a backend.
- Window Manager β Draggable, resizable, minimizable, maximizable windows with macOS-style traffic light buttons
- Taskbar & Dock β Running apps shown in taskbar with minimize/restore support
- System Tray β Clock, notifications, and quick-access menu
- Right-click Context Menu β Desktop-level actions
- Mobile Support β Responsive layout with mobile orientation guard and popup
| Layer | Technology |
|---|---|
| Framework | React 19 + TypeScript |
| Build Tool | Vite |
| State Management | Zustand |
| Styling | TailwindCSS v4 |
| Routing | React Router v7 (BrowserRouter) |
| Window Interactions | react-rnd |
| Icons | Lucide React + Custom SVGs |
| Persistence | localStorage |
| Hosting | GitHub Pages |
URL: https://pravin-python.github.io/Web-OS-Portfolio
This app uses React Router BrowserRouter with clean paths (no #).
A custom public/404.html handles GitHub Pages SPA deep-link redirects, allowing direct URL access to any route like /about or /dsa-lab.
git clone https://github.com/pravin-python/Web-OS-Portfolio.git
cd Web-OS-Portfolionpm installnpm run devApp runs at: http://localhost:5173/Web-OS-Portfolio/
npm run buildGenerates a dist/ folder. Deploy it to GitHub Pages with:
npm run deployRequires
gh-pagesand adeployscript inpackage.json.
src/
βββ apps/ # Individual applications (Terminal, Games, DSALab, MLLab, etc.)
βββ core/ # OS core (appRegistry, appLauncher, state, device detection)
β βββ appRegistry.ts # All app definitions & routes
β βββ appLauncher.ts # App launch logic
β βββ state/ # Zustand stores (windows, notifications, etc.)
βββ components/ # Shared UI components (Window, Taskbar, Dock, Tray, etc.)
βββ layouts/ # DesktopLayout β wraps all apps in the OS shell
βββ router/ # OSRouter β bridges URL changes to window management
βββ hooks/ # Custom hooks (useDraggable, etc.)
βββ data/ # Static JSON data (filesystem, projects, skills)
public/
βββ svg/ # App icons (system/, apps/)
βββ 404.html # GitHub Pages SPA redirect handler
βββ manifest.json # PWA manifest
βββ sitemap.xml # SEO sitemap
This is a 100% frontend-only static application.
- No server, no database, no API calls
- All data served from static JSON files
- State persisted via
localStorage - Deployable on any static host (GitHub Pages, Vercel, Netlify)
Pravin Prajapati β Freelance Full-Stack Developer
Python Β· Java Β· AI Agent Development Β· Web Scraping Β· PHP eCommerce
- π Portfolio
- πΌ LinkedIn
- π GitHub
- π§ pravin.prajapati0126@gmail.com
MIT License