OS Portfolio Template
A developer portfolio template that looks and feels like a desktop operating system, inspired by posthog's website.
What is this?
A developer portfolio template that looks and feels like a desktop operating system. Built with Next.js 16, React 19, and Tailwind CSS v4 — featuring draggable windows, a macOS-style navbar, an interactive terminal, and a single config file to make it entirely your own.
Who is this for?
You are a developer who wants a portfolio that stands out. Instead of a standard scrolling page, this template gives your visitors a full desktop OS experience — complete with windows they can drag, resize, and maximize, a real terminal with commands, and an immersive UI that showcases your work in a memorable way.
Installation
Prerequisites
- Node.js 18+
- npm, yarn, pnpm, or bun
Clone Repository
Install Dependencies & Run Dev Server
Features
- Desktop OS UI — A full-screen desktop with draggable, resizable, and maximizable windows
- Desktop Icons — Clickable icons that open corresponding windows (files, folders, apps, media, mail, terminal)
- macOS-style Navbar — Dropdown navigation with grouped links to all sections
- Interactive Terminal — A real command-line interface with commands like
bio,skills,ops,contact, andgithub - Hero / Summary Window — Code-snippet style bio with avatar, role, specializations, and a "Now Building" progress widget
- Projects Window — Image/video project cards with tags and links
- Tech Stack Window — Badge grid of your technologies and skills
- Experience Window — Work history with role, company, period, and bullet points
- Education Window — Academic and certification details
- Contact Window — Contact information panel
- Demo Window — Embedded video/image showcase
- Static Export Ready — Configured for
output: "export"for easy deployment to GitHub Pages, Netlify, or Vercel
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Next.js 16 |
| UI Library | React 19 |
| Styling | Tailwind CSS v4 |
| Components | Radix UI Slot |
| Icons | Lucide React |
| Utilities | clsx, tailwind-merge, class-variance-authority |
| Language | TypeScript |
Project Structure
Customization
Everything you need to personalize is in a single file: global.config.ts
Personal Info
Hero Code Snippet
Projects
Tech Stack / Skills
Work Experience
Education
Terminal Commands
Window IDs Reference
Each window is identified by a WindowId. You can control which windows open by default via defaultOpen in constants.tsx.
| ID | Default Title | Opens by Default |
|---|---|---|
hero | summary.mdx | No |
projects | Project Explorer | No |
stack | Tech Stack | No |
resume | experience.mdx | No |
about | Education | No |
contact | Contact Information | No |
terminal | username@portfolio: ~ | Yes |
demo | demo.mov | No |
