Portfolio & NavUI
One Next.js application for Navdeep Singh's portfolio and NavUI, a shadcn-compatible library of polished React interfaces.
· · ·
Portfolio
A personal portfolio for selected work, project case studies, writing, and open-source contributions.
NavUI
A shadcn-compatible collection of components, production-ready blocks, interface illustrations, and page templates. Preview the source and add only what your project needs.

About the project
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.
Local development
Open:
- Portfolio:
http://localhost:3000 - NavUI with hostname routing:
http://ui.localhost:3000 - NavUI internal route:
http://localhost:3000/ui
Registry
Install a registry item with the official @navui namespace:
Generate and validate all registry artifacts:
Canonical item metadata is colocated under src/registry, with explicit aggregators in
src/registry/items. See
docs/navui-registry.md
The reusable ContributionGraph and PublicInsights components contain presentation only. Their
portfolio data adapters remain server-only and are not included in registry installs.
Public data
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.
Repository checks
Bun is the only package manager used by this repository. Install dependencies and run the full validation baseline with:
Dependency changes must include the updated bun.lock. Do not introduce package-lock.json,
pnpm-lock.yaml, or yarn.lock.
License
Licensed under the