TypeScript · Updated 2026
Portfolio
My website
P
Harsh — Portfolio
A modular, editorial developer portfolio built with Next.js, TypeScript, React, and Tailwind CSS. Projects can be populated from GitHub and articles from DEV.to, while local fallback content keeps the site usable before accounts are connected.
Run locally
This project requires Node 20.9 or newer. Node 22 is already available in the current nvm installation.
nvm use 22
npm install
cp .env.example .env.local
npm run dev
Open http://localhost:3000.
Connect your content
Edit .env.local:
GITHUB_USERNAME=your-github-username
GITHUB_TOKEN=optional-token-for-higher-api-limits
DEVTO_USERNAME=your-devto-username
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_CONTACT_EMAIL=you@example.com
- GitHub repositories are fetched, normalized, and shown on the Projects pages.
- Each project page fetches that repository's README.
- DEV.to articles populate the Blog pages and retain a link to the original article.
- Without usernames, curated demo entries are shown from the fallback data files.
Important files
PORTFOLIO_SPEC.md— full product specificationIMPLEMENTATION_PLAN.md— phased implementation plan and decisionssrc/lib/projects.ts— GitHub adapter and project fallback contentsrc/lib/posts.ts— DEV.to adapter and article fallback contentsrc/app/globals.css— visual tokens and responsive design system
Checks
npm run typecheck
npm run lint
npm run build
Next personalization pass
- Add real usernames and contact details to
.env.local. - Replace placeholder biography and social URLs.
- Add project cover images or curated GitHub repository overrides.
- Apply the final Figma template's exact typography, spacing, and imagery.
- Deploy to Vercel and set
NEXT_PUBLIC_SITE_URLto the production domain.