A minimal, dark-mode, single-page portfolio built with React, Tailwind CSS, and Framer Motion.
- Palette: graphite-navy background (
#0A0E13) with a cyan "signal" accent (#4CD9C0) and amber used sparingly for tags (#F2A65A). - Type: Space Grotesk (display), Inter (body), JetBrains Mono (tags, labels, code-style eyebrows) — a nod to the terminal/data-heavy nature of the work.
- Signature element: the animated oscilloscope-style waveform behind the hero headline (
src/components/Waveform.jsx), a quiet reference to signal-processing work without being literal.
npm install
npm run devThen open the local URL Vite prints (usually http://localhost:5173).
src/
components/
Navbar.jsx — sticky nav with mobile menu
Hero.jsx — headline, bio, CTAs, social links
Waveform.jsx — signature animated SVG trace
Skills.jsx — Languages / Frameworks / Domains grid
Projects.jsx — project cards (edit PROJECTS array to update)
Footer.jsx — contact section
App.jsx
main.jsx
index.css
- Resume: drop your PDF at
public/resume.pdf— the Hero button already points to/resume.pdf. - Projects: edit the
PROJECTSarray at the top ofProjects.jsx— title, kind, stack tags, summary, and links. - Skills: edit the
CATEGORIESarray inSkills.jsx. - Email / social links: update the
hrefs inHero.jsxandFooter.jsx. - Colors: all custom colors live in
tailwind.config.jsundertheme.extend.colors— change them there and they propagate everywhere.
- Visible focus rings on all interactive elements (
:focus-visibleinindex.css). prefers-reduced-motionis respected globally.- Icon-only buttons (GitHub/LinkedIn) have
aria-labels.