Templates listed on https://insforge.dev/templates live in this repo. Adding one is a single PR.
-
Fork this repo and create a branch.
-
Add your template as a top-level subdirectory:
<your-slug>/. The slug must match theslugyou'll add toregistry.jsonand must be[a-z0-9-]+(lowercase, digits, hyphens). -
Inside
<your-slug>/, include at minimum:package.json(must parse andnpm installcleanly)README.md(describe what the template does + how to run it)LICENSE(any open-source license; file required but contents not enforced).env.example(no real secrets — CI checks for common shapes)- Optional:
migrations/*.sql(parse-checked by CI),functions/<name>/index.ts(tsc --noEmitchecked)
-
Add a cover image at
assets/covers/<your-slug>.png— 1280×800 recommended, ≤ 1 MB. -
Add an entry to
registry.json:{ "slug": "my-template", "name": "My Template", "description": "A one-line pitch.", "category": "ai", "framework": "nextjs", "features": ["auth", "ai"], "tags": ["my-tag"], "cover": "assets/covers/my-template.png", "demo_url": "https://my-demo.us-east.insforge.app", "author": "Your Name", "added_at": "YYYY-MM-DD" } -
Open the PR. CI (
Validate Registry) must be green. A maintainer will review and merge.
- Registry schema (ajv, slug pattern, no duplicates)
package.jsonparses as valid JSON (CI does not runnpm install— we trust your local test + your committedpackage-lock.json)- Migration SQL parses (via
pg-query-emscripten) - Edge function
index.tspassestsc --noEmit LICENSE,README.md,.env.example, and cover image all exist.env.exampledoes not contain real-secret patterns- Cover image ≤ 1 MB (PNG/SVG); 1280 × 800 recommended
Merging to main triggers .github/workflows/sync.yml, which POSTs to cloud-backend's
/admin/v1/templates/sync endpoint. The marketplace UI shows the new template within ~10 seconds.
The sync workflow uses TEMPLATE_SYNC_TOKEN (repo secret). Set it in
Settings → Secrets → Actions before merging anything that should be
picked up by the marketplace.
cd scripts && npm install
node validate-registry.mjs ../registry.json ..