A VS Codeβinspired developer portfolio. Built to impress. Crafted to perform.
- Utkarsh Priyadarshi β Developer Portfolio
This is not your average developer portfolio. It's a fully interactive, VS Codeβinspired single-page application that reimagines the traditional portfolio format as a living code editor β complete with a file explorer, draggable tabs, an embedded terminal, breadcrumb navigation, and a Git commits panel.
Why this exists:
Most portfolios are static pages. This one behaves like an IDE. Every section of the portfolio maps to a "file" inside the editor. Visitors navigate the way developers do β through files and tabs β making the experience memorable, immersive, and uniquely on-brand for a software developer.
Problems it solves:
- π― Stands out in a sea of template-based portfolios
- π¨ Communicates personality through the UI itself, not just text
- β‘ Delivers exceptional performance via code splitting, PWA caching, image optimization, compression, and lazy loading
- π± Works beautifully on both desktop and mobile, with swipe navigation on touch devices
- π» VS Code Editor UI β Authentic file explorer, draggable/closeable tabs, breadcrumbs, status bar, and outline panel
- π Git Blame Annotations β Inline per-section git blame metadata (commit hash, date, author, message) sourced from pre-generated
git-meta.json, mirroring the VS Code GitLens experience. Disabled on mobile. - π Git Commits Panel β Browsable commit history panel rendered inside the editor UI
- π Resume Section β Interactive resume as a VS Code editor tab (experience, education, projects, skills) with VS Code outline integration and a downloadable PDF
- β¨οΈ Interactive Terminal β A real-feeling terminal with custom commands:
help,about,projects,skills,contact, and more - π D3 Data Visualizations β Dynamic, animated charts for skills and learning journey sections
- π« CSS Module Animations β Performant, zero-runtime-cost animations via CSS modules + AnimeJS for complex sequences
- π¬ Narrative Loading Screen β A story-driven boot sequence (
Bridge β Compilation β macOS β Panic β Portfolio) before the main UI appears - π Project Showcase β Filterable, searchable project cards with descriptions, tech tags, GitHub links, and demo videos
- π Articles Section β Highlights technical writing, blog posts, and dev content
- π₯ Git Commit Heatmap β Visual GitHub-style contribution heatmap powered by real commit data
- π± Swipe Navigation β Mobile-first swipe gestures (via
react-swipeable) for navigating sections and projects - π¨ Multi-Theme Support β Catppuccin flavor picker (Mocha, Macchiato, FrappΓ©, Latte) with persisted preference
- β‘ PWA Ready β Installable, offline-capable, and lightning-fast with Vite's service worker plugin
- π¬ React Compiler β Powered by the React 19 compiler beta for automatic memoization and optimized re-renders
| Layer | Technology |
|---|---|
| UI Framework | React 18.3 + TypeScript 5 |
| Build Tool | Vite 5 |
| Styling | Tailwind CSS 3 (Catppuccin Mocha palette) + CSS Modules |
| Routing | React Router DOM 7 |
| State Mgt | Zustand 5 |
| Pkg Manager | Bun |
| Compiler | React Compiler (beta) |
| Purpose | Library |
|---|---|
| Headless Primitives | Radix UI (Dialog, Tabs, Tooltip, Dropdown, Avatar, β¦) |
| Component System | shadcn/ui (style: new-york) |
| Icons | Lucide React + React Icons |
| Drawer | Vaul |
| Resizable Layouts | react-resizable-panels |
| Swipe Gestures | react-swipeable |
| Scroll Observers | react-intersection-observer |
| Code Highlighting | PrismJS + react-syntax-highlighter |
| Markdown Rendering | react-markdown + rehype-highlight + rehype-raw + remark-gfm |
| Purpose | Library |
|---|---|
| Complex Sequences | AnimeJS 3 |
| Transition Animations | CSS Modules + tailwindcss-animate |
| Data Visualization | D3 7 |
| Purpose | Tool |
|---|---|
| Bundler | Vite 5 + Rollup |
| Type Checking | TypeScript 5 + vite-plugin-checker |
| Linting | ESLint 8 + typescript-eslint + react-hooks + simple-import-sort |
| Formatting | Prettier 3 |
| Git Hooks | Husky 9 |
| Bundle Analysis | rollup-plugin-visualizer |
| Image Optimization | vite-imagetools + sharp |
| Compression | vite-plugin-compression (gzip/brotli) |
| PWA | vite-plugin-pwa |
portfolio/
βββ app/ # All source code lives here
β βββ src/
β β βββ App.tsx # Routes (all β PortfolioStory)
β β βββ types.ts # Global TypeScript types
β β βββ components/
β β β βββ animations/ # Floating elements, Matrix rain, Reveal effects
β β β βββ base/ # ThemeProvider, TechBadge, icon mapping
β β β βββ home/
β β β β βββ editor/ # VS Code chrome: tabs, explorer, terminal, status bar
β β β β β βββ git-blame/ # Git blame annotations (manager + portal tooltip)
β β β β β βββ git-commits/ # Commit history panel
β β β β βββ portfolio/ # Content sections: intro, about, skills, projects, work, resume, β¦
β β β βββ load/ # Story-driven loading screens
β β β βββ ui/ # shadcn/ui components
β β β βββ section/ # Shared section layout wrappers
β β βββ hooks/ # use-project, use-mobile, use-local-storage, use-video, use-git-component
β β βββ store/ # Zustand: projects-store.ts, git-store/ (blame stats + commits)
β β βββ lib/utils.ts # cn() helper (tailwind-merge + clsx)
β β βββ utils/ # ctp-colors.ts, unique-ids.ts
β βββ public/
β β βββ data/ # projects.json, articles.json, work.json
β β βββ git-meta.json # Pre-generated git stats per section
β β βββ resume.pdf # Downloadable resume PDF
β β βββ media/ # Project media & videos
β βββ package.json
β βββ vite.config.ts
β βββ tailwind.config.js
β βββ tsconfig.json
βββ docs/
β βββ PROJECT_RESTRUCTURE_GUIDE.md # How to format project data
β βββ PROJECT_TEMPLATE.json # Template for adding new projects
βββ scripts/ # Git stats generation scripts
βββ Makefile # Dev workflow automation
βββ README.md
# 1. Clone the repository
git clone https://github.com/utkarsh5026/portfolio.git
cd portfolio
# 2. Navigate to the app directory
cd app
# 3. Install dependencies
bun install
# 4. Start the development server
bun run devThe dev server will be available at http://localhost:5173.
Run from the app/ directory:
bun run dev # Start development server
bun run build # Type-check + production build
bun run force-build # Clean rebuild (clears Vite/TS cache)
bun run lint # ESLint (zero-warnings policy)
bun run preview # Preview the production build locally
bun run analyze # Visualize bundle composition
bun run format:check # Check formatting with Prettier
bun run format:write # Auto-fix formatting with Prettier
bun run gen:git-stats # Regenerate contribution heatmap data
bun run gen:git-commits # Regenerate recent commits panel dataOr use the Makefile from the project root:
make dev # Start dev server
make build # Production build
make lint # Run linter
make lint-fix # Auto-fix lint issues
make type-check # TypeScript check only
make check # lint + type-check together
make clean # Remove dist/
make fresh-start # Clean install β start dev
make prod-ready # Full pre-deploy check (lint + type-check + build)Follow the template in docs/PROJECT_TEMPLATE.json and read the full guide in docs/PROJECT_RESTRUCTURE_GUIDE.md.
Projects are data-driven β add an entry to app/public/data/projects.json and it automatically appears in the portfolio without any component changes.
Once the portfolio loads, open the terminal with Ctrl + ` and try:
> help β Lists all available commands
> about β Shows a quick bio
> projects β Lists all projects with descriptions
> skills β Displays your tech stack
> contact β Shows contact info and social links
> clear β Clears the terminal output
- Desktop: Use the file explorer on the left sidebar or click tabs at the top to switch sections
- Mobile: Swipe left/right to navigate between sections; a swipe hint appears on first load
All portfolio content lives in app/public/data/:
app/public/data/
βββ projects.json # Project cards (source of truth)
βββ articles.json # Blog posts / technical articles
βββ work.json # Work experience entries
Edit these JSON files to update content β no component changes needed.
- VS Code editor UI with tabs, explorer, and status bar
- Interactive terminal with custom commands
- D3-powered skills visualization
- Git contribution heatmap panel
- Git blame annotations per section (VS Code GitLensβstyle)
- Git commits history panel
- Interactive resume section with VS Code outline integration + PDF download
- Multi-theme Catppuccin flavor picker (Mocha, Macchiato, FrappΓ©, Latte)
- PWA support (offline, installable)
- Mobile swipe navigation
- Story-driven loading sequence
- Replace Framer Motion with CSS modules for zero-runtime animations
- React Compiler beta integration for automatic memoization
- Keyboard shortcut palette (Ctrl+P command palette simulation)
- Guestbook / visitor message feature
- Blog/article detail pages with full markdown rendering
- Full WCAG 2.1 AA accessibility audit
Have an idea? Open an issue or start a discussion!
Contributions are greatly appreciated. Any improvements, bug fixes, or ideas are welcome.
-
Fork the repository
-
Create your feature branch
git checkout -b feat/your-feature-name
-
Make your changes and ensure they follow the project conventions below
-
Lint and type-check before committing
make check
-
Commit your changes
git commit -m "feat: add your feature description" -
Push to your branch
git push origin feat/your-feature-name
-
Open a Pull Request targeting the
mainbranch
- Use
bunβ not npm or yarn - ESLint zero-warnings policy must pass:
bun run lint - Use Catppuccin Mocha color tokens from
tailwind.config.jsfor any new UI (ctp-blue,ctp-mauve,ctp-pink, etc.) - Use
<Heading>and<Text>fromsrc/components/ui/text.tsxβ no raw<h1>β<h6>or<p>tags - Use
cn()fromsrc/lib/utils.tsfor conditional Tailwind classes - Prefer CSS modules or
tailwindcss-animatefor animations β do not add Framer Motion - Keep components focused; prefer editing existing files over creating new ones
Distributed under the MIT License. Free to use, fork, and learn from.
See LICENSE for full details.
Utkarsh Priyadarshi β Software Developer & Open Source Enthusiast
| Platform | Link |
|---|---|
| π Portfolio | utkarsh5026.github.io |
| π GitHub | @utkarsh5026 |
| πΌ LinkedIn | Utkarsh Priyadarshi |
| π¦ Twitter / X | @UtkarshPriyad10 |
| π§ Email | utkarshpriyadarshi5026@gmail.com |
Found a bug or have a suggestion? Open an issue β I'd love to hear from you.
Made with β€οΈ and a lot of β by Utkarsh Priyadarshi
β Star this repo if you found it useful or inspiring!