2.5 KiB
PROMPT monorepo
apps/wiki: existing Pages Router application, media library, PostgreSQL, object storage and snapshot worker./wiki/Namespace:slughas matching/api/wiki/Namespace:slugMarkdown;/api/wiki-indexdiscovers pages. Existing/p/slughas/api/wiki-post/slugand 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 insrc/content/ideas.ts, open/ideas/slug, export Markdown or versioned JSON, or print to PDF. Add custom React pages undersrc/pageswhen a composition needs bespoke rendering.apps/python: install withpip install -e apps/python. Runprompt-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.