Files
probably-rendering-one-more…/docs/monorepo.md
T
codex-bot a2330b22e2
python CI and deployment / verify-and-deploy (push) Successful in 7m23s
studio CI and deployment / verify-and-deploy (push) Failing after 5m28s
wiki CI and deployment / verify-and-deploy (push) Failing after 6m13s
Restructure into Wiki, Studio and Python monorepo with scoped CI
2026-10-25 21:13:43 +08:00

2.5 KiB
Raw Blame History

PROMPT monorepo

  • apps/wiki: existing Pages Router application, media library, PostgreSQL, object storage and snapshot worker. /wiki/Namespace:slug has matching /api/wiki/Namespace:slug Markdown; /api/wiki-index discovers pages. Existing /p/slug has /api/wiki-post/slug and alternate metadata. Main/File/Category/Template/Draft/Help are public content types, not permission boundaries. Categories cross namespaces; template pages currently describe reusable structures rather than a transclusion engine.
  • apps/studio: independent Next.js + TypeScript + Tailwind Pages Router. Add ideas in src/content/ideas.ts, open /ideas/slug, export Markdown or versioned JSON, or print to PDF. Add custom React pages under src/pages when a composition needs bespoke rendering.
  • apps/python: install with pip install -e apps/python. Run prompt-export idea.json --output ./output --font /path/to/cjk.ttf [--video]. Generates 1080×1440 PNGs and an optional silent MP4 (4 seconds per slide), requiring FFmpeg. JSON describes standard slides; arbitrary React animations need a separate browser recording pipeline. Python Docker image includes CJK fonts and FFmpeg.

Development

Node 24, pnpm 11.25.0, Python 3.12+. pnpm install; pnpm dev:wiki; pnpm dev:studio. Do not use local preview for acceptance; see root AGENTS.md. Each JS application owns its frozen pnpm lockfile. Production Docker builds install each project independently.

Releases

Three path-filtered Gitea workflows run on ces-control. Changes to one app trigger that app only. Workspace configuration changes intentionally verify both JS applications. Documentation changes do not deploy. Each workflow can be manually dispatched for recovery after a failed release. All app content, including Markdown, triggers its workflow.

Wiki keeps /opt/prompt, port 18131 and existing persistent volumes. Studio uses its own Compose project, /opt/prompt-studio, port 18134, and verifies its AI index before recording the release; firewall access to 18134 may need operator configuration. Python publishes prompt-python:<sha> and the local latest alias, used on demand rather than running an empty daemon. No Python network port is exposed. Root Dockerfile is Wiki's build entry; apps/wiki/Dockerfile mirrors it for discovery.

CI uses root build context and application-scoped COPY instructions. Wiki runs its existing Docker integration suite before deploying. The former Web-only release path is retired because its source-copy and image assumptions predated the monorepo. No down -v is used in production.