- 79 blueprints declared a bare [[config.mounts]] header (one empty array
element in TOML) -> replaced with the repo idiom 'mounts = []'
- 38 blueprints carried doc-style mount blocks (name/mountPath/description)
that don't match the schema (filePath/content) and are inert in Dokploy's
template processor -> removed; their named volumes already live in each
docker-compose.yml
- penpot: duplicate 'expose' map key made its docker-compose.yml invalid
YAML -> merged into one expose list
After this, validate-template.ts passes for all 502 blueprints. The
remaining validate-docker-compose.ts flags are the intentional host-port
templates (mail/game/streaming protocols: poste.io, mailu, oryx, fivem,
lodestone, etc.) which the validator does not yet model as exceptions.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- move each template's metadata to blueprints/<id>/meta.json (442 files, byte-identical roundtrip with the old root meta.json)
- generate the served meta.json at build time into app/public/meta.json (gitignored); pnpm dev/build run the generator first
- CI validates every blueprints/<id>/meta.json via generate-meta.js --check (required fields, id/folder match, logo exists, folder<->meta bidirectionality) and rejects any committed root meta.json
- remove root meta.json, dedupe-and-sort-meta.js and build-scripts/process-meta.js (obsolete)
- update CONTRIBUTING.md, AGENTS.md and README.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat: add Flatnotes blueprint with TOTP authentication
Introduces a new blueprint for deploying Flatnotes with TOTP-based 2FA, including compose, template, and metadata files.
* feat: add Flatnotes self-hosted markdown note-taking app