A custom, dark-first engineering portfolio built with Next.js App Router, React, strict TypeScript, Tailwind CSS, Motion, and Lucide.
Use Node.js 24 LTS (see .nvmrc) and npm 10.5.1 or newer.
npm ci
npm run devOpen localhost:3000. No API keys, database, or environment variables are needed. Fonts and visual assets are local; the page does not fetch career information at runtime.
npm run typecheck
npm run lint
npm run format:check
npm run build
npm run verify:export
npm startbuild creates the static production site in out/. start serves that exact export on port 3000, including the custom 404 page. Stop the development server first, or set PORT to another port. This project uses output: "export"; next start is intentionally not used.
TypeScript 6 and ESLint 9 are retained because the current Next.js lint plugin chain does not yet support TypeScript 7 / ESLint 10 together. The lockfile records the tested dependency versions.
app/ Server-rendered page, metadata, fonts, errors, CSS
components/ Navigation, motion, lazy 3D scene, architecture sketches
content/portfolio.ts Career, projects, skills, contact, canonical URL
public/ Résumé files, social image, licensed local fonts
scripts/serve.mjs Dependency-free static production preview
scripts/create-social-card.mjs Deterministic social-card artwork
docs/content-audit.md Source provenance, conflicts, and content limits
docs/verification.md Checks performed and verification limits
legacy/portfolio/ Preserved original Parcel portfolio and assets
Edit content/portfolio.ts to maintain all professional information. The page is statically rendered; content changes require a new build.
The primary download is the exact latest user-supplied Yash_Chaudhari_Resume.docx (August 13, 2026), copied to public/Yash-Chaudhari-Resume.docx. The existing August 10 PDF is also preserved at /Yash-Chaudhari-Resume.pdf. To switch to an updated PDF, replace that file and change person.resume. Do not overwrite either original source in Downloads.
The latest résumé overrides outdated roles, education status, and LinkedIn links in the original website. See the content audit. ThreatLens is explicitly a prototype operating on synthetic events. Architecture visuals are diagrams of documented implementations, not simulated product screenshots.
Black surfaces, white highlights, grey secondary text, and self-hosted Geist typography define the minimal monochrome design. Thin dividers and neutral architecture diagrams keep attention on the content.
The full-page background is a faint CSS grid with restrained pointer and scroll parallax. It uses no WebGL, canvas, 3D geometry, or continuous rendering. Motion settles when input stops. The pause control and reduced-motion preference disable background movement. All content and native disclosures remain available without JavaScript.
The mobile navigation has focus management, Escape dismissal, a keyboard focus loop, and scroll locking. Native details elements provide keyboard-accessible experience and project notes. Links have visible focus indicators, and the page includes a skip link, semantic landmarks, a single H1, and labeled controls.
- Import this repository into Vercel.
- Select the Next.js preset and Node.js 24.
- Install with
npm ci, build withnpm run build, and useoutas the output directory. These settings are declared invercel.json. - Add and verify the custom domain
ruizo.is-a.devif retaining the existing address. If using a different domain, updateperson.urlbefore building; it drives canonical, Open Graph, JSON-LD, robots, and sitemap URLs. - Verify the domain, résumé downloads, social preview, and professional links in the deployed environment.
No public deployment was performed from this workspace. The supplied configuration is ready for a Vercel import. vercel.json adds standard content-type, referrer, framing, and permissions headers.
The original CNAME is preserved. The existing GitHub deployment workflow now uses Node 24, npm, validation, and the Next.js out/ directory instead of Parcel's dist/. It retains the existing master push trigger and deploy branch. No git push or remote deployment is triggered by local work.
The exported public/.nojekyll prevents GitHub Pages from discarding _next assets. Vercel and GitHub Pages are alternatives; configure the custom domain only at the host you intend to use.
The local font licenses are in public/fonts/. The social preview is a checked-in 1200×630 PNG. Regenerate it with node scripts/create-social-card.mjs after changing its text or artwork; this helper uses sharp, supplied by Next.js.
See verification results for the actual checks and remaining limitations. Lighthouse scores are not assumed from design choices or a successful build.