A fully immersive, desktop OS–themed developer portfolio built with Next.js 16 (App Router). Rather than a conventional scrolling site, it renders an interactive desktop environment complete with draggable windows, a taskbar, native-feeling apps, and a BIOS boot sequence.
- Boot Sequence — Fake BIOS/kernel log stream on first visit, with a progress bar and CRT scanline overlay. Skipped on repeat visits (sessionStorage).
- MenuBar — Fixed top bar with live clock (weekday + time), WiFi bars, real Battery API indicator, ThemeToggle, and a Power button for reboot.
- Taskbar / Dock — Bottom dock with quick-launch icons and running app indicators. Click a running app to restore/focus it.
- Desktop Drag-Select — Click-drag on empty desktop to draw a translucent selection box.
- Shutdown Animation — Classic CRT power-off effect (vertical collapse → scan line → black) before reboot.
- Context Menu — Right-click desktop for quick app launchers (Terminal, My Computer, Notepad, Settings, Properties).
- Draggable & resizable windows via Framer Motion.
- Z-index focus snapping on click.
- Minimize, Maximize, and Close controls.
- Windows restore from taskbar on click.
| App | Description |
|---|---|
| Terminal | Full command-line interface. Commands: help, ls, whoami, open <repo>, sysinfo, theme, clear. Auto-runs whoami after boot. |
| My Computer | Live GitHub file explorer — browse repos, drill into folders, view files. |
| Document Viewer | Renders Markdown, code files, images, and text fetched from GitHub. |
| Project Viewer | Shows README, commit timeline, and language bar for a repo. |
| Browser Previewer | iframe-based live demo viewer for project homepages. |
| Notepad | Multi-note editor with localStorage persistence. Ctrl/⌘+S to save. |
| Image Viewer | Zoom (scroll), pan (drag), rotate, gallery mode, download. |
| Settings | Personalization / theme switcher. |
| Properties | System info panel. |
- Carbon-dark theme with
cyan-glowingandemerald-burntaccent palette. - Glassmorphism window chrome.
- Framer Motion animations throughout.
- CRT scanlines, vignette, custom cursor.
- Google Fonts: Geist Sans + Geist Mono.
Press Ctrl+K / ⌘K to open the global command palette. Search repos, open apps, switch themes.
- Framework: Next.js 16 (App Router, RSC)
- Styling: Tailwind CSS v4
- Animation: Framer Motion
- State: Zustand (with localStorage persistence)
- Icons: Lucide React
- API: Next.js Route Handlers proxying GitHub REST API
npm install
npm run devOpen http://localhost:3000.
GITHUB_TOKEN=your_github_pat # Required for GitHub API requestsCreate a .env.local file in the project root with the above variable.
src/
├── app/
│ ├── page.tsx # Root page (server component, fetches repos)
│ └── api/github/ # GitHub API proxy routes
├── components/
│ ├── apps/ # OS applications
│ │ ├── TerminalApp.tsx
│ │ ├── FileExplorer.tsx
│ │ ├── DocumentViewer.tsx
│ │ ├── ProjectViewer.tsx
│ │ ├── BrowserPreviewer.tsx
│ │ ├── NotepadApp.tsx
│ │ ├── ImageViewer.tsx
│ │ ├── SettingsApp.tsx
│ │ └── PropertiesApp.tsx
│ └── ui/ # OS shell components
│ ├── DesktopManager.tsx
│ ├── Window.tsx
│ ├── MenuBar.tsx
│ ├── Taskbar.tsx
│ ├── CommandPalette.tsx
│ ├── BootSequence.tsx
│ ├── BootWrapper.tsx
│ ├── ShutdownOverlay.tsx
│ └── DesktopDragSelect.tsx
├── store/
│ └── useOSStore.ts # Zustand OS state (windows, repos, settings)
└── lib/
├── github.ts # GitHub API helpers
└── sysinfo.ts # System info helpers
Deploy on Vercel — add GITHUB_TOKEN as an environment variable in the project settings.