One Next.js application for Navdeep Singh's portfolio and NavUI, a shadcn-compatible library of polished React interfaces.
Portfolio · NavUI · Components · Blocks
A personal portfolio for selected work, project case studies, writing, and open-source contributions.
A shadcn-compatible collection of components, production-ready blocks, interface illustrations, and page templates. Preview the source and add only what your project needs.
Both sites are served from one Next.js application and Vercel project:
navdeepsingh.devserves the portfolio.ui.navdeepsingh.devserves NavUI from the internal/uiroute tree.src/proxy.tshandles hostname routing while keeping/uiout of public canonical URLs.- Registry artifacts are published from
public/rand can be installed with the shadcn CLI.
Built with Next.js 16, React 19, TypeScript, Tailwind CSS v4, shadcn/ui, Motion, and Bun.
bun install
bun run devOpen:
- Portfolio:
http://localhost:3000 - NavUI with hostname routing:
http://ui.localhost:3000 - NavUI internal route:
http://localhost:3000/ui
Install a registry item with the official @navui namespace:
bunx shadcn@latest add @navui/animated-tabsGenerate and validate all registry artifacts:
bun run registry:generate
bun run registry:validateCanonical item metadata is colocated under src/registry, with explicit aggregators in
src/registry/items. See
docs/navui-registry.md before adding or publishing an item.
The reusable ContributionGraph and PublicInsights components contain presentation only. Their
portfolio data adapters remain server-only and are not included in registry installs.
Copy .env.example to .env.local and add only the credentials you want to enable:
GITHUB_TOKENandGITHUB_USERNAMEload merged pull requests and the GitHub contribution calendar through GitHub GraphQL. Responses are normalized on the server; contribution data is cached for six hours.VERCEL_TOKENandVERCEL_PROJECT_IDload anonymous aggregate visitors and page views through Vercel Web Analytics. AddVERCEL_TEAM_IDfor a team-owned project. Current and previous 28-day ranges are queried separately and cached for six hours.
Server credentials never use a NEXT_PUBLIC_ prefix. Browser analytics project tokens are public
identifiers by design. The public analytics section remains hidden when Vercel credentials are
absent or the provider fails, and /api/public-insights returns only allowlisted aggregate fields.
Bun is the only package manager used by this repository. Install dependencies and run the full validation baseline with:
bun install
bun run check
bun run buildDependency changes must include the updated bun.lock. Do not introduce package-lock.json,
pnpm-lock.yaml, or yarn.lock.
Licensed under the MIT license.