Files
cesnimda bfa8cfd357 feat: homelab case study from live infra; Traefik-based deploy
- rewrote homelab (content + topology diagram + stack) from a live inspection of the host:
  Ubuntu 24.04, ~30 Docker services behind Traefik (Cloudflare-fronted, TLS, HTTP/3),
  Authentik SSO forward-auth, CrowdSec, Pi-hole, self-hosted Gitea + CI runner, socket-proxy,
  per-app network isolation; WordPress framed as being decommissioned (not future arch)
- deploy: docker-compose now uses Traefik labels + traefik_proxy network (was assumed nginx
  edge); .env.example adds SITE_HOST/TRAEFIK_ENTRYPOINT; colophon + ARCHITECTURE/DOCKER/
  DEPLOYMENT specs corrected nginx-edge -> Traefik (site container still serves via nginx)
- PROJECT_STATUS: pre-launch checklist updated; infra section added

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 11:23:09 +02:00
..

Portfolio Redesign — Phase 2 Deliverables (Architecture & Technical Specification, no code)

Status: complete, awaiting approval · July 2026 · Builds on approved Phase 1 (../design/)

Index

  • TECH_SPEC.md — stack evaluation & recommendation (Astro 5 + Tailwind 4 tokens, CSS-first motion, no i18n library, .NET 9 contact relay, testing/quality gates)
  • ARCHITECTURE.md — system overview, repo layout, layering, ADR summary, performance/security posture, failure modes
  • ROUTING_SPEC.md — canonical EN↔NO route table (slug map contract), redirects, legacy-WP handling, /Linkedin preservation
  • I18N_SPEC.md — three-mechanism i18n (routes/dictionary/content), fallback rules, translation workflow
  • DATA_MODEL.md — content collections, schemas, locale-invariant field inheritance, CI validation rules
  • COMPONENT_ARCHITECTURE.md — component tree, 5 behaviour modules (≤15 kB total), token/data-attribute contracts
  • ANIMATION_SPEC.md — Phase 1 concepts A1A10 mapped to CSS/observer mechanisms, reduced-motion layer, perf rules
  • SEO_SPEC.md — metadata, hreflang from slug map, JSON-LD, build-time OG images, WP-migration protection
  • DOCKER_SPEC.md — site (nginx static) + contact-relay images, dev containers, compose topology, env vars
  • DEPLOYMENT_SPEC.md — Gitea Actions pipeline, staging, cutover plan from WordPress, rollback, DoD

Headline decisions requiring sign-off before Phase 3

  1. Astro 5 (static output) over Next.js — content site, zero runtime JS by default; React competence is proven by the case studies, judgement by this choice (TECH_SPEC §2)
  2. No animation/i18n/state libraries — CSS + 5 tiny TS modules, ≤15 kB JS total (TECH_SPEC §46)
  3. Contact form = self-hosted .NET 9 relay container with mailto/copy fallback (TECH_SPEC §7)
  4. Everything self-hosted: Gitea Actions CI, Gitea container registry, deploy to existing server behind existing reverse proxy (DOCKER/DEPLOYMENT)
  5. Content lives in git (schema-validated collections), no CMS (ARCHITECTURE A3)
  6. Staging env + dark-standby WP cutover with redirect/410 map and /Linkedin redirect preserved (DEPLOYMENT §3, ROUTING §2)

Phase 3 prerequisites carried forward

  • Screenshot capture pass on seeded demo data (JobTrack, InboxIntel)
  • ATS-safe CV rework (both languages) — becomes the download default
  • Native-Norwegian review pass of all NO content (launch gate)
  • Legacy WordPress URL inventory for the redirect map