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