JMDD Portfolio
JMDD-8
Epic 2: Public pages - layout, theme, home, CV, projects, SEO
JMDD-9Root layout, design tokens, theme toggle, nav
JMDD-10Home route with streamed widget loads
JMDD-11CV route with print stylesheet
JMDD-12Projects index and detail with published-filter helper
JMDD-13Changelog route from repo YAML
JMDD-14404 page
JMDD-15SEO: head component, OG card, sitemap, robots, JSON-LD, favicons
JMDD-16Epic 3: Content model, admin editing, snapshot resilience
JMDD-17Schema, first migration, atomic counter helpers
JMDD-18Seed script from content.json plus dev fixtures
JMDD-19Markdown pipeline: marked + sanitize-html with XSS tests
JMDD-20Admin auth: argon2, JWT cookie, login rate limit
JMDD-21Admin CRUD for all content entities
JMDD-22Markdown editor with live sanitised preview
JMDD-23Content snapshot to disk with boot regeneration
JMDD-24Currently tiles on the home page
JMDD-25Epic 4: Ship it - Docker, Jenkins, DNS cutover
JMDD-26Production Dockerfile with migrate-on-start entrypoint
JMDD-27Production compose with Traefik labels and proxy env
JMDD-28Jenkinsfile, backup script, credentials
JMDD-29.env.example and secrets inventory
JMDD-30Apex cutover and Cloudflare Pages teardown
JMDD-31Epic 5: Articles - routes, editor, demo shortcodes
JMDD-32Article routes with ship-gate and reading time
JMDD-33Demo shortcode pipeline
JMDD-34Editor extensions: slugs and draft/publish semantics
JMDD-35First demo component and article e2e
JMDD-36Epic 6: Guestbook - wall, stamps, moderation
JMDD-37Submission flow: validation, honeypot, time-gate
JMDD-38Shared rate-limit helper
JMDD-39Guestbook wall, pagination, home teaser
JMDD-40Moderation queue in admin
JMDD-41Epic 7: Live widgets - hit counter, degradation pass
JMDD-42Hit counter with session dedup
JMDD-43Widget degradation pass
JMDD-2
Scaffold the SvelteKit app
JMDD-3Tooling: ESLint flat config, pinned Prettier, npmrc, strict TS
JMDD-4Husky pre-commit gate
JMDD-5Vitest: client and server test environments
JMDD-6Playwright e2e with DB-wipe fixture and test-DB guard
JMDD-7Local Postgres: compose, init-dbs.sql, Drizzle config, db scripts
No tickets
No tickets
