Monorepo for anipotts.com and its admin + labs surfaces.
- Public site: Astro 5 (
apps/www) on@astrojs/cloudflare, static output, served via Cloudflare Workers. - Legacy admin (
apps/admin, Next.js) being replaced byapps/admin-solid(SolidStart). apps/labs(Next.js), Cloudflare Workers underworkers/*, sharedpackages/*.- Git-first content: markdown collections under
apps/www/src/content, synced to Cloudflare D1.
pnpm install
pnpm dev # all apps
pnpm dev:www # just the astro site (astro defaults to http://localhost:4321)pnpm build
pnpm test
pnpm validate # build + lint + typecheck + test- Astro www collections:
apps/www/src/content/{projects,making,writing}(schema inapps/www/src/content.config.ts). - Synced to Cloudflare D1 (
anipotts-db) for full-text search. - Public brand logos live in
apps/www/public/images/brandand should matchlogoSrcreferences inapps/www/src/data/site.ts.
/,/writing,/writing/[slug]/making/projects,/projects/[slug]/orchestrating(formerly/claude)- legacy paths (
/shipping,/running,/connect,/links,/claude,/thoughts,/work,/lab,/labs,/dev,/updates,/metrics,/status,/docs) redirect viaapps/www/src/middleware.ts
The /orchestrating page reads a generated snapshot at apps/www/src/data/claude-stats.json.
pnpm update-claude-stats # regenerate
pnpm update-claude-stats:commit # regenerate + commitThe astro www bakes PUBLIC_* vars at build (PUBLIC_POSTHOG_KEY). Only set env for features you use.
Site version history and how to reach the pre-astro code: see archives/README.md.