My personal site. Built with Next.js 15, TypeScript, Tailwind, and Motion. Terminal-coded aesthetic, command palette, MDX blog, live GitHub stats.
$ whoami
adarsh-jha-dev
$ cat role.txt
full-stack engineer
pnpm install # or npm install / yarn
pnpm devOpen http://localhost:3000.
- terminal hero with a typewriter intro
- command palette (
⌘K/Ctrl+K) to jump anywhere - project case studies — every project gets its own page with problem / approach / learnings
- MDX blog with RSS feed at
/rss.xml - live GitHub stats pulled from the public API (cached for an hour)
- /uses and /now pages
- contact form wired to Resend
- SEO: sitemap, robots, OG metadata, semantic HTML
- CRT scanlines because terminal aesthetic earns them
src/
├── app/ # next.js app router
│ ├── api/contact/ # email endpoint
│ ├── projects/[slug]/ # project case studies
│ ├── blog/[slug]/ # mdx blog
│ ├── uses/ # tools page
│ ├── now/ # what i'm focused on
│ ├── sitemap.ts
│ ├── robots.ts
│ └── rss.xml/route.ts
├── components/ # ui + sections
├── content/posts/ # mdx blog posts
└── lib/
├── config.ts # site config — edit me first
├── projects.ts # project data
└── posts.ts # mdx loader
src/lib/config.ts— your name, email, socials, educationsrc/lib/projects.ts— edit / add projectssrc/content/posts/*.mdx— drop in blog posts as MDXpublic/cv/Adarsh_Resume.pdf— drop your CV here (linked from the hero)
Copy .env.example to .env.local and fill in:
RESEND_API_KEY— for the contact form (resend.com, free tier)CONTACT_TO— where messages should landGITHUB_TOKEN— optional, raises GitHub API rate limits
The site runs without any of these (form falls back to a console log in dev).
- Push to GitHub as a repo named
adarsh - Import into Vercel
- Add the environment variables in Project Settings
- Deploy
The auto-assigned domain will be adarsh-<your-username>.vercel.app (or
similar, depending on availability).
MIT — feel free to fork the structure for your own site, but please write your own copy.