Commit Graph

6 Commits

Author SHA1 Message Date
cesnimda b4b293bdb4 feat: real headshot + JobTrack seed-data screenshots
- portrait: warm outdoor headshot, cropped 4:5 and optimised to WebP (800x1000, 116kB),
  used in hero + about
- JobTrack case study: three real seed-data captures (applications, dashboard, reminders)
  optimised to WebP (~40kB each) replacing the placeholder skeletons
- alts/captions updated to match the real screens

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 11:22:48 +02:00
cesnimda 18c556bd54 feat: ATS-safe CV rework (EN + NO), replacing scrambled two-column PDFs
CI / quality (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / lighthouse (push) Has been cancelled
CI / relay (push) Has been cancelled
CI / images (push) Has been cancelled
- single-column, real-text PDFs: standard headings (Summary, Skills, Experience,
  Projects, Education), consistent dates, no letter-spacing
- 'Systems Developer, eight years experience' (drops 'mid-level'); apprentice->developer
  progression shown; Projects section added; Norwegian written natively (errors fixed)
- one page each, ~8 kB (was 132/172 kB); verified clean ATS text extraction + reading order
- generator committed to tools/cv (content.js + pdfkit/docx builders) for reproducibility
- editable .docx kept alongside; site file-size labels updated

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 07:22:57 +02:00
cesnimda 743cce306b docs: finalise PROJECT_STATUS + TODO; lint public browser script
CI / quality (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / lighthouse (push) Has been cancelled
CI / relay (push) Has been cancelled
CI / images (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 06:24:12 +02:00
cesnimda 9088dcffb9 feat: Docker images, compose stacks, nginx config, Gitea CI
- site image: multi-stage node build -> unprivileged nginx (non-root, read-only)
- nginx: CSP + security headers, immutable asset caching, revalidated HTML,
  canonical trailing slash, preserved /Linkedin 301, legacy-WP 410s, custom 404
- externalise theme-init so CSP uses script-src 'self' (no inline hash)
- prod + dev compose; .env.example; relay Dockerfile fixed (image ships app user)
- Gitea Actions: quality, e2e, lighthouse budgets, relay build, image push on main
- verified: both images build; relay healthz 200; site serves EN/NO with CSP + redirect

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 06:21:35 +02:00
cesnimda 9a6d0edf6d chore: add favicon (CB monogram)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 01:20:47 +02:00
cesnimda 2184a1892f feat: content layer — zod schemas, validated bilingual data, locale view models
- schema.ts: zod schemas per DATA_MODEL (profile, projects, experience, skills, meta)
- nested {en,no} model: invariant facts once, prose twice; validated at build
- content: profile, skills, experience (with apprentice->developer progression),
  JobTrack + InboxIntel case studies with data-driven arch diagrams, homelab capability page
- per-page SEO meta (EN/NO)
- content.ts: locale-resolved view models; CV PDFs wired
- deviation from literal Astro-collections logged in PROJECT_STATUS with rationale

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 01:05:21 +02:00