- 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 billmora template
* feat: standardize configuration and volume mounts
* feat: hardcode Laravel automations in docker-compose.yml
* fix(billmora): migration race condition
* refactor(billmora): simplify service deploy architecture and standardize blueprint
* feat(billmora): ensure initial data is seeded on startup
* fix(billmora): use storage-based .env persistence to resolve directory mount error
* fix(billmora): revert to separate services for worker and scheduler
* refactor(billmora): remove APP_TIMEZONE from blueprint configuration
* fix(billmora): correct links structure and lowercase tags in meta.json
* fix(billmora): remove invalid volume mounts from template.toml
* fix(billmora): process root meta.json to resolve duplicated templates