mirror of
https://github.com/andwati/andwati.com.git
synced 2026-11-03 08:12:15 +00:00
apps/cms/Dockerfile.dev + root docker-compose.yml give a one-command way to run the CMS in a container for testing (docker compose up cms), with the shared content/ directory mounted so it matches the host dev setup. apps/cms/Dockerfile is a production multi-stage build for later Dokploy deployment. Uses node:24-bookworm-slim to match the local Node version and get glibc prebuilt binaries for better-sqlite3 without needing a native build toolchain in the final image. Verified: both images build, the dev container boots Strapi successfully, admin panel and API routes are reachable, and the mounted content/ volume resolves at the same relative path the future sync provider will expect.
4.4 KiB
4.4 KiB
Astro + Strapi Rebuild — TODO
Tracking doc for the astro-migration branch. See the locked spec in the
approved plan for full rationale on each decision referenced below.
Done
- Scaffold pnpm workspace (
apps/siteAstro,apps/cmsStrapi + SQLite) - Switch tooling to pnpm-only, add Biome for lint/format
- Define shared
content/schema (writings, portfolio, bookshelf, blogs) with TOML frontmatter matching the legacy Zola format - Bookshelf schema covers both books (ISBN) and papers (DOI/arXiv id)
- Custom Astro content loader parsing
+++TOML frontmatter directly (no YAML conversion step) - Basic list/detail pages for all four content types, verified running
end-to-end in-browser (
pnpm --filter site dev) - CLAUDE.md updated: no agent self-attribution in commits/PRs, commit regularly after each working step
- Strapi content-type definitions matching the
content/schema exactly (writings, portfolio, bookshelf, blogs) — verified boots and registers all four REST routes apps/cms/Dockerfile.dev+ rootdocker-compose.ymlfor running Strapi locally in a container (node:24-bookworm-slim, matches local Node version);apps/cms/Dockerfileproduction multi-stage build for later Dokploy deployment. Verified: builds, boots, admin panel and API reachable, sharedcontent/volume mounted at the right relative path
Content pipeline
- Strapi custom provider/lifecycle hooks that read + write the same
Markdown files in
content/(Strapi's DB stays a disposable cache) - Verify round-trip: edit in Strapi admin → file on disk updates, and vice versa, without drift
- Bookshelf ISBN lookup hook (Open Library / Google Books) with local cover caching
- Bookshelf paper lookup hook (Semantic Scholar / arXiv) with local cover/thumbnail caching
- OG image auto-generation extended from the legacy per-post script to all three content types (writings, portfolio, bookshelf)
llms.txtgeneration extended to cover all content types, not just posts
Design system
- New typography scale + color system (full reset, not inherited from
sass/_theme.scss) - Motion primitives: CSS + native Web Animations API spring utility
- Base layout/components replacing the placeholder
Base.astro - Homepage redesign around the Three.js centerpiece as hero
- New 404 page concept (terminal easter egg retired)
Three.js centerpiece
- Decide the constellation/node-graph data model (what nodes/edges represent — writings ↔ portfolio ↔ beliefs connections)
- Build as an isolated Astro island
- Static image/CSS fallback for
prefers-reduced-motionand low-end devices - Perf budget check on a low-end/mobile profile
Content features carried over from the Zola site
- Series-nav (multi-part post series)
- Table of contents (inline + sidebar)
- Prev/next post navigation
- Related posts (tag-based)
- Per-tag descriptions on tag archive pages
llms_descriptionmeta (site-wide + per-post override — schema already supports the override)- RSS/JSON feeds
- Sitemap + robots.txt
Search & comments
- Pagefind integration (static search index from the Astro build output)
- Webmentions integration (replacing Utterances) — decide self-hosted endpoint vs. webmention.io
Analytics
- Stand up Plausible or Umami on the Dokploy host, wire up tracking snippet (replacing Google Analytics)
Migration from the legacy Zola site
- Script/process to convert
content/posts/*.mdinto the newcontent/writings/schema - Preserve slugs/URLs or add redirects (mechanism TBD — Astro
middleware vs.
static-web-server/sws.tomlrules) - Migrate
content/archive/,content/about.mdequivalents - Verify RSS subscribers and inbound links survive the cutover
Infra / deployment
- Wire Strapi into the Dokploy deployment alongside the Astro build
- Decide build trigger: webhook on Strapi publish → CI rebuild, vs. manual/scheduled rebuild
- Update
Dockerfile/sws.tomlfor the new build output (currently Zola-specific)
Cleanup
- Remove Zola-specific files (
zola.toml,templates/,sass/,themes/,content/posts/, legacy OG/llms scripts) once each has a working Astro/Strapi equivalent — progressively, not all at once