This repository serves two roles simultaneously:
- A GitHub Template Repository — teams click "Use this template" and get a clean slate
- An actively developed project — improved over time using the spec-kit workflow
These two roles require different branch states, managed as follows:
| Branch | Role | specs/ |
|---|---|---|
main |
Template artifact — clean state for end users | ❌ Empty |
00N-<name> |
Development branch — spec-kit workflow for each improvement | ✅ Present |
main must never contain specs/00N-* directories. These are meta-artifacts documenting the process of building the template, not something hackathon teams need.
Use spec-kit to create a feature branch:
/speckit.specify <description of the improvement>
# → creates branch 00N-<name> and specs/00N-<name>/spec.mdThen plan, task, and implement as usual:
/speckit.clarify → /speckit.plan → /speckit.tasks → /speckit.implement
When the improvement is ready, sync only the code artifacts to main — not specs/:
git checkout main
git merge <dev-branch> --no-commit --no-ff
git restore --staged specs/
git checkout -- specs/
git commit -m "chore: sync template improvements from <dev-branch>"
git push origin mainWhy
--no-ff? Keeps the merge commit visible inmain's history so you can trace which dev branch each change came from.
Do not delete the dev branch after merging. It holds the full spec-kit history (spec, plan, tasks) for reference when making related future improvements.
✅ Merge to main:
app/,components/,lib/,types/— Next.js source codesupabase/— database schema and seed data.github/— CI workflow, PR/Issue templatesdocs/— user-facing documentation.specify/— spec-kit tooling (scripts, templates, constitution)CLAUDE.md,README.md,CONTRIBUTING.md— project docs- Config files:
package.json,tsconfig.json,biome.json, etc.
❌ Never merge to main:
specs/00N-*/— feature specs for template development.claude/session artifacts (if any end up committed)
main keeps a specs/README.md that explains the directory to template users:
specs/
└── README.md ← explains that teams run /speckit.specify to populate this
This file must never be deleted from main.
bun install
cp .env.example .env.local # fill in Supabase credentials
bun devSee README.md for full setup instructions.