Next.js 14 (App Router) + TypeScript. A dual-mode portfolio:
- Recruiter mode (default) — clean, modern dark layout inspired by Linear.
- Dev mode — full IDE shell with sidebar, tabs, syntax-highlighted files, and an integrated terminal with working commands.
A toggle in the top-right flips between modes. The selection persists in localStorage, so engineers who switch into dev mode stay there on the next visit.
npm install
npm run devOpen http://localhost:3000.
npm run build
npm startAll copy lives in data/content.ts. Both modes read from this single file, so edit once and both views update.
profile— name, title, summary, contact linkstagline— one-liner under your nameintro— short intro paragraphstats— headline metric strip in recruiter modeexperience— roles, newest firstskills— skill categories rendered asskills.yamlin dev modeprojects— side projectseducation— degreeslookingFor— the contact-section paragraphragCorpus— knowledge base for the live RAG demo
Drop Revanth_Gollapudi_Resume.pdf into the public/ folder. It will be served at /Revanth_Gollapudi_Resume.pdf, and the download buttons will work.
If your Vercel project still has Framework Preset set to "Other" from the original static-HTML setup, change it before pushing this:
- Vercel project → Settings → Build & Development Settings
- Framework Preset → Next.js
- Make sure Root Directory, Build Command, Output Directory, and Install Command are blank so Vercel uses defaults.
- Trigger a redeploy: Deployments → latest → menu → Redeploy → uncheck "Use existing Build Cache" → Redeploy.
.
├── app/
│ ├── globals.css # Two themes share this stylesheet
│ ├── layout.tsx # Loads fonts, applies body class
│ └── page.tsx # Mode switch + toggle
├── components/
│ ├── ModeToggle.tsx # Top-right pill, owns mode state
│ ├── RecruiterMode.tsx # Linear-style default view
│ ├── DevMode.tsx # IDE shell: sidebar, tabs, terminal, syntax highlighter
│ ├── FileView.tsx # Renders the active dev-mode file view
│ ├── Terminal.tsx # Alternate terminal component
│ ├── RagDemo.tsx # Live AI pipeline demo
│ └── ProjectDiagrams.tsx # SVG project architecture diagrams
├── data/
│ └── content.ts # Single source of truth for all copy
├── lib/
│ ├── files.ts # Turns data into source-like virtual files
│ └── highlight.tsx # Tiny syntax highlighter
├── public/
│ └── Revanth_Gollapudi_Resume.pdf # Resume download
└── package.json
localStorage["mode"]stores"recruiter"or"dev".- An inline script in
app/layout.tsxreads the value before paint and setsdocument.documentElement.dataset.mode. - The body class
recruiterordevswaps which CSS variables apply to the page.
- Recruiter mode accent color is
--accent: #6366f1inapp/globals.css. - Dev mode IDE colors are the
--ide-*variables in the same file. - The RAG demo corpus is in
data/content.tsunderragCorpus. - Terminal commands live in
components/DevMode.tsxin theexec()function.