You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This documentation explains how Smart Portfolio is authored, built, tested, deployed, operated, and reviewed. The root project README is the visitor-facing overview. The guides here provide the implementation detail needed to change the system safely.
Documentation principles
Implementation is authoritative. Package scripts, application code, validators, Cloudflare Functions, and GitHub Actions take precedence over prose.
Public portfolio content and private runtime configuration are separate concerns.
A guide explains a system or procedure. A checklist provides a concise verification pass and links to its guide.
Shared facts should have one detailed home and be linked elsewhere instead of copied.
Documentation changes are part of the quality gate and must pass npm run docs:check.
Choose a path
Reader
Start with
Continue with
Portfolio owner or developer setting up a local copy
Install a Node 22 release selected by .nvmrc that meets the minimum declared by package.json; the setup helper enforces that minimum.
Use npm ci for a reproducible dependency installation. package-lock.json locks the exact dependency tree and must stay synchronized with package.json.
Run the Windows npm run setup:local command or the cross-platform npm run setup:local:node command from Local development. The helper creates an ignored .env from .env.example, installs dependencies when required, and prepares local content.
This is an npm repository: package.json, package-lock.json, and .nvmrc are the dependency requirements. A separate requirements.txt would not be used by the application or CI.
Test layers, focused commands, Playwright navigation, recommendation, and footer coverage, the full quality gate, CI behavior, and test-extension guidance.
Safe extension patterns for content fields, routes, UI, themes, Functions, CI, and deployment.
Sources of truth
Use the narrowest authoritative implementation source when documentation and code differ.
Topic
Authoritative implementation
Dependencies, Node.js version, and commands
package.json, package-lock.json, and .nvmrc
Static export and route implementation
next.config.mjs and src/app/
Content types and runtime validation
src/content/types.ts and src/lib/content/
Workbook download and structure
scripts/fetchPortfolioContent.ts and scripts/lib/portfolioContentGeneration.ts
Home selection and section order
src/lib/content/selectHomeContent.ts and src/components/portfolio/home/HomeOverview.tsx
Themes, layout, motion, and styling
src/components/, src/lib/theme/, and src/styles/
Contact request boundary
functions/api/, functions/_shared/contact.ts, and src/components/contact/
Function routing and static headers
public/_routes.json and public/_headers
Cloudflare configuration
wrangler.jsonc
Verification and deployment behavior
.github/workflows/ci.yml and scripts/
License
LICENSE
Keeping documentation synchronized
Change implementation and tests together.
Update the guide that owns the affected behavior.
Update the concise checklist that verifies it, if one exists.
Replace duplicated detail elsewhere with a descriptive link.
Run npm run docs:check and the relevant focused tests.
Run npm run verify before delivery.
When adding a document, give it one clear purpose, add it to the appropriate table above, and link it from the guide that introduces the concept. Do not publish secret values, the workbook URL, private recipient configuration, or machine-specific paths.