A personal portfolio built with Next.js (App Router), TypeScript, Tailwind CSS v4, and Framer Motion.
npm install
npm run devOpen http://localhost:3000.
npm testExperience, skills, projects, education, and achievements content lives in typed
data modules under src/data/ — edit those files to update that content without
touching component code. Section titles, CTA labels, and other copy live directly
in the section components under src/components/sections/.
The contact form in src/components/sections/Contact.tsx posts to Formspree.
To activate it:
- Create a free account at https://formspree.io and add a new form.
- Copy the form endpoint (
https://formspree.io/f/xxxxxxxx). - Replace
FORMSPREE_ENDPOINTinsrc/components/sections/Contact.tsxwith that URL. - Commit and push — Vercel redeploys automatically.
- Go to https://vercel.com and sign in with your GitHub account.
- Click "Add New… → Project" and import
RSainarayan/portfolio. - Vercel auto-detects Next.js — leave the default build settings
(
npm run build, output directory auto-detected). - Click "Deploy". Every push to
mainredeploys automatically; every pull request gets its own preview URL. - Optional: add a custom domain under Project Settings → Domains.