This website is built using Docusaurus, a modern static website generator.
- Reviewer guide: docs/00-portfolio/reviewer-guide.md
- Portfolio App dossier: docs/60-projects/portfolio-app/index.md
- Evidence audit checklist: docs/70-reference/evidence-audit-checklist.md
pnpm install-
Install dependencies:
pnpm install
-
Configure environment variables:
cp .env.example .env.local
Edit
.env.localwith your local development values:DOCUSAURUS_SITE_URL=http://localhost:3000 DOCUSAURUS_GITHUB_ORG=your-github-username DOCUSAURUS_GITHUB_REPO_DOCS=portfolio-docs DOCUSAURUS_GITHUB_REPO_APP=portfolio-app DOCUSAURUS_PORTFOLIO_APP_URL=http://localhost:3000
Note:
.env.localis gitignored. See Environment Variables Contract for full documentation. -
Start the development server:
pnpm start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
The dev server uses the environment variables from .env.local to configure site URLs, GitHub links, and cross-repository linking.
- Recommended:
pnpm verify(runs format, lint, typecheck, format:check, audit, build) - Faster iteration:
pnpm verify:quick(skips the build gate; rerun fullpnpm verifybefore opening a PR) - Manual equivalent:
pnpm format:write && pnpm lint && pnpm typecheck && pnpm format:check && pnpm audit && pnpm build - Audit posture: CI blocks high/critical advisories; lower severities are logged and require a ticket or risk entry if persistent
- Optional audit report:
pnpm verify -- --audit-json(writesaudit-report.json)
pnpm buildThis command generates static content into the build directory and can be served using any static contents hosting service.
The Portfolio Docs App is deployed to Vercel with the following workflow:
- Preview deployments for all PR branches (one per PR)
- Production deployment from
main(automatic on merge) - Deployment Checks gate: production domain is assigned only after GitHub Actions
ci / buildchecks pass - Build determinism via Corepack and pinned pnpm version (
package.json#packageManager: "pnpm@10.0.0")
Learn more:
- Hosting & Deployment Decision (ADR-0003)
- Portfolio Docs Deployment Model (dossier page)
- Deploy Runbook (step-by-step deployment guide)
- Rollback Runbook (emergency recovery)
pnpm buildThis command generates static content into the build directory. The same command runs in CI and blocks merge if it fails (intentional safety gate for broken links).
pnpm start— run the local dev serverpnpm build— produce the static site output (build/)pnpm serve/pnpm serve:wsl— serve a built site locallypnpm lint/pnpm lint:fix— ESLint check / auto-fixpnpm typecheck— TypeScript type validationpnpm format:check/pnpm format:write— Prettier check / writepnpm audit— dependency audit (high severity)pnpm verify— full local quality gates (format, lint, typecheck, format:check, audit, build)pnpm verify:quick— skip build for faster iteration (run fullpnpm verifybefore PR)
Please see CONFIGURATION.md for details of the Docusaurus configuration, project structure and features., and other customizations.
This repository follows a docs-as-code workflow. All changes (including solo changes) go through pull requests.
Please see CONTRIBUTING.md for detailed workflow and rules for authoring documentation.
- Create a branch from
mainusing a standard prefix:docs/,arch/,sec/,ops/,ci/,ref/
- Keep PRs small and focused (one topic per PR).
- Run locally:
pnpm installpnpm start(preview)pnpm verify(required before PR; usepnpm verify:quickonly for iteration)
- Open a PR and complete the checklist in the PR template.
- Merge only when required checks pass (build, nav integrity, security statement).
- Every new navigable folder must include
_category_.json(or_category_.yml). - Every section must have an index hub (curated index doc or generated index).
- No secrets, tokens, private keys, or sensitive environment details may be committed.