Add Didacta template - #1080
Open
va360labs wants to merge 1 commit into
Open
Conversation
Didacta is a fair-code self-hosted LMS. The blueprint ships the app image alongside a pgvector-enabled Postgres (the baseline migration runs CREATE EXTENSION "vector", so a plain postgres image fails on first boot) and Redis. A single domain is enough: the container runs the API on :4000 and the web on :3000, and Next.js rewrites /api/*, /healthz and /readyz to the internal API, so the domain only targets port 3000.
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this PR about?
New PR of Didacta — a fair-code, self-hosted LMS: course authoring, a public catalog with checkout, enrollment and invitation flows, gamification, certificates, reporting and a module marketplace. Tenants are isolated at the database level with PostgreSQL RLS.
The blueprint ships the app image plus Postgres and Redis, and handles the two things that are easy to get wrong when wiring this by hand:
pgvector/pgvector:pg16. The baseline migration runsCREATE EXTENSION "vector", so a plainpostgres:16fails on first boot with no obvious clue.:4000and the web on:3000, and Next.js rewrites/api/*,/healthzand/readyzto the internal API, so[[config.domains]]only targets port 3000.DIDACTA_SETUP_TOKENis generated with${password:32}. It protects the creation of the first admin account while the instance is still empty; generating it here means the user openshttps://<domain>/setup?token=<DIDACTA_SETUP_TOKEN>instead of digging it out of the container logs.TENANT_SETTINGS_ENC_KEYis deliberately left unset: the app generates a 32-byte hex key on first boot and persists it in the data volume. Setting it from the blueprint with a helper that does not produce exactly 64 hex characters would break secret encryption (SSO, per-tenant SMTP, Stripe) silently.Links: didacta.io · docs · source · image
ghcr.io/va360labs/didacta-community(public, no login required).Checklist
Before submitting this PR, please make sure that:
docker-compose.ymlwith the.envthattemplate.tomlgenerates, and deployed the same stack on another PaaS end to end. The PR preview is the last mile.node build-scripts/generate-meta.js --checkpasses (515 templates validated).Issues related (if applicable)
None.
Testing
Brought up this exact
docker-compose.ymlwith the.envproduced from[config.env](resolving${domain},${password:64}and${password:32}the way Dokploy does), on Docker Compose v2:GET /healthzandGET /api/v1/setup/statusboth answered through port 3000, confirming a single domain is all the proxy needs.POST /setup/initsucceeded, and the public catalog and sign-in pages rendered.The same image and topology were then deployed on a self-hosted Coolify instance (Docker Compose), where all three containers reached healthy and the first-run setup link worked over a real domain — so the app side of this blueprint is verified on a proxy-fronted PaaS, not just locally.
Screenshots or Videos
The course editor of the running instance: