Personal portfolio site showcasing 20 project case studies, an interactive p5.js generative hero, and a live engineering dashboard. The project is organized around the ORGANVM system—a polymathic framework spanning 91 repositories and 8 GitHub organizations.
- Live Hub: 4444j99.github.io/portfolio
- Architecture: The Eight-Organ System
- Frontend: Astro 5 (Static Site Generation)
- Data Viz: D3.js & p5.js
- State: JSON-driven architecture (
src/data/) - Type Safety: TypeScript (Strict Mode)
- Styling: Scoped CSS (No framework)
- Search: Pagefind (Static Indexing)
This repository acts as the Logos (Organ V) node, coordinating data and vitals from across the system.
graph TD
subgraph System [ORGANVM Ecosystem]
I[Organ I: Theory] --> II[Organ II: Art]
II --> III[Organ III: Commerce]
III --> IV[Organ IV: Orchestration]
IV --> V[Organ V: Logos/Portfolio]
V --> VI[Organ VI: Koinonia]
VI --> VII[Organ VII: Kerygma]
VII --> VIII[Organ VIII: Meta]
end
Portfolio[This Repo] -- Consumes --> Data[src/data/*.json]
Data -- Synced From --> External[Sibling Repos]
Portfolio -- Deploys To --> Pages[GitHub Pages]
We enforce a rigorous Quality Ratchet system via custom automation.
| Pillar | Metric | Goal |
|---|---|---|
| Performance | Lighthouse Score | 100 |
| Accessibility | axe-core Coverage | 100% |
| Security | npm audit / Dependabot |
0 Vulnerabilities |
| Integrity | Link Checking | 0 Broken Links |
| Stability | CI Green Runs | 5 Consecutive |
View Detailed Quality Policy
Lighthouse CI enforcement: Perf ≥ 90, A11y ≥ 91, BP ≥ 93, SEO ≥ 92.
Coverage ratchet policy: W2 12/8/8/12, W4 18/12/12/18, W6 25/18/18/25, W8 35/25/25/35, W10 45/32/32/45, W12 55/40/40/55 (Statements/Branches/Functions/Lines). Active phase: W12.
Typecheck hint budget policy: W2 <=20, W4 <=8, W6 =0, W8 =0, W10 =0, W12 =0.
Runtime a11y coverage ratchet: 100% enforcement (reached).
Security ratchet checkpoints: 2026-02-21 moderate<=5, low<=4, 2026-02-28 moderate<=2, low<=2, 2026-03-07 moderate<=1, low<=1, 2026-03-14 moderate<=0, low<=0, 2026-03-18 moderate<=0, low<=0.
- Node.js >= 22
- npm
git clone https://github.com/4444j99/portfolio
cd portfolio
npm installnpm run dev # sync:vitals, then astro dev → localhost:4321/portfolio/
npm run lint:fix # Biome autofix (tabs, single quotes, trailing commas, width 100)
npm run preflight # Pre-push gate: lint → typecheck:strict → build → validate → sync:a11y-routes → testnpm run build # generate-badges → sync:vitals → sync:omega → sync:identity → astro build → pagefind
npm run preview # Serve the built dist/npm run test # Vitest unit + integration
npm run test:watch # Vitest in watch mode
npm run test:coverage # Coverage report (V8 provider)
# Require npm run build first:
npm run test:a11y # axe-core audit on built HTML
npm run test:e2e:smoke # Playwright smoke (mobile + desktop viewports)
npm run test:runtime:errors # Runtime error telemetry
# Workspace packages (Node built-in test runner, not Vitest):
npm run test:github-pages-core
npm run test:quality-ratchet-kit
npm run test:sketchesnpm run sync:vitals # .quality/*.json → vitals.json, trust-vitals.json, landing.json
npm run sync:omega # targets.json → omega.json (maturity scorecard)
npm run sync:identity # system-metrics.json → about.json
npm run sync:a11y-routes # Rebuild route manifest after adding/removing pages or personas
npm run generate-data # Regenerate src/data/ from sibling Python repoRequires the gemini CLI. Falls back to [DRAFT] templates when unavailable.
# Create a strike target (defaults to systems-architect persona)
npm run strike:new "Company Name" "Role Title"
# Specify a persona from src/data/personas.json
npm run strike:new "Company Name" "Role Title" "persona-id"
# AI-discover candidates per persona → src/data/scout-candidates.json
npm run strike:scout
# Batch-process intake/job-descriptions/ directory
npm run strike:sweepAfter strike:new, the tailored landing page appears at /portfolio/for/<slug> and npm run build:resume generates the PDF.
npm run quality:local:no-lh # Full CI-parity: security → lint → typecheck:strict → build → all tests → badges → verify
npm run quality:local # Same + Lighthouse (requires Chrome)The /consult page POSTs to a Cloudflare Worker backed by D1. When PUBLIC_CONSULT_API_BASE is unset the page falls back to deterministic capability analysis.
npm run consult:worker:dev # Local dev via wrangler --remote (requires CF auth)
npm run consult:worker:deploy # Deploy worker to Cloudflare
npm run consult:worker:migrate:remote # Apply D1 migrations to productionSet PUBLIC_CONSULT_API_BASE to your worker origin (e.g. https://portfolio-consult-api.<subdomain>.workers.dev) in the Astro deployment environment before building. Full API contract: workers/consult-api/README.md.
npm run build:resume # Render per-persona resume YAML → PDF
npm run build:qr # Generate QR codesEnjoying the work? Support development through:
- GitHub Sponsors — Direct recurring support
- Payrail — One-time or flexible contributions
Your support fuels the ORGANVM ecosystem and keeps these tools free and open.
Distributed under the MIT License. See LICENSE for more information.
