1.0.6 Create `moooon-B-V/nextjs-prisma-vercel-starter` (MIT, GitHub Template)
Estimate: 15m · Depends on: 1.0.5
Snapshot motir-core at the end of Story 1.0 into a brand-new public GitHub Template repo at moooon-B-V/nextjs-prisma-vercel-starter. Strip Motir-specific wording (wordmark, README references to motir-ai and Motir-the-product, planning-doc links) and re-license under MIT (not GPL-3.0 — see "License" below). Mark the new repo as a GitHub Template via is_template: true so downstream users see the "Use this template" button.
Why now (last Subtask of Story 1.0): at this commit, motir-core contains exactly the generic Next.js + Prisma + Tailwind + ESLint/Prettier + Vercel + Neon scaffolding — and nothing Motir-specific (no User model yet, no workspace tables, no work-item schema). Forking now means minimal stripping. If we waited until Stories 1.1 / 1.2 / 1.4 land, we'd have to surgically remove Motir-specific code from the starter, which is harder and easier to get wrong. This is a semantic-ordering constraint: 1.0.6 must close before Subtask 1.1.3 (User schema) merges to motir-core's main.
Mechanism: manual copy + new repo + mark as Template (NOT a GitHub fork). GitHub Templates create a new repo with a clean single-commit history when downstream users click "Use this template" — no inherited Motir git history, no "forked from" badge. This is what create-t3-app, shadcn/ui, and Vercel's own templates do. A raw fork would carry our Story 1.0 planning commits forever and make the template look like "a fork of Motir" to anyone browsing the repo.
License: MIT, not GPL-3.0. Templates ship under MIT because GPL's copyleft requirement repels would-be forkers (they'd have to GPL their derivative work). MIT maximizes adoption. motir-core stays GPL-3.0; the starter is independent and MIT-licensed.
Value proposition (for the README pitch): the starter's differentiator isn't novel scaffolding — it's discovered gotchas baked in. Specifically: (a) Vercel build-cache stales out Prisma's generated client → fixed via postinstall: prisma generate; (b) Neon-Vercel integration's pooled DATABASE_URL breaks Prisma migrations → fixed via DATABASE_URL_UNPOOLED in prisma.config.ts; (c) Prisma 7's config loads on every CLI command including generate → fixed via conditional datasource block; (d) pnpm 11 requires Node ≥22.13. The README should sell these as the value prop, not novel features.
What you'll do:
- Create the empty public repo:
gh repo create moooon-B-V/nextjs-prisma-vercel-starter --public - Locally: copy the entire
motir-coretree (sans.git,node_modules,.next) into a new sibling directory. git init, set the remote to the new repo, single initial commit.- Apply the strip/genericize edits (see Acceptance criteria for the full list).
- Push to main as the initial commit. Verify all four quality gates pass.
- Mark as template:
gh repo edit moooon-B-V/nextjs-prisma-vercel-starter --template - Smoke-test: click "Use this template" on the GitHub repo page, create a throwaway test repo, clone it, run
pnpm install && ./scripts/db-up.sh && pnpm dev, confirm it works end-to-end, then delete the throwaway repo.
Acceptance criteria
Repo + GitHub setup:
- GitHub repo
moooon-B-V/nextjs-prisma-vercel-starterexists, public, MIT-licensed. - Repo is marked as a GitHub Template (
is_template: true) — the "Use this template" button is visible on the repo page. - Single initial commit; no inherited Motir git history.
License + branding strip:
LICENSEis the canonical MIT text (e.g., opensource.org/license/mit), copyright "© 2026 moooon B.V." or similar.package.json's"license": "MIT","name": "nextjs-prisma-vercel-starter", generic"description"(no Motir mention).app/page.tsxis a generic placeholder (e.g., "Next.js + Prisma starter"); NO "Motir" wordmark.app/layout.tsxmetadata uses generic title and description (no Motir mention).- README does NOT reference Motir,
motir-ai,motir-core,vision.html,feasibility.html,notes.html, or any planning docs. - README's value proposition leads with the discovered gotchas (postinstall fix, DATABASE_URL_UNPOOLED, conditional Prisma config, Node 22+) — that's what makes this template differentiated from
create-next-appdefaults.
DB naming convention:
- DB user/password/name in
docker-compose.yml,.env.example,scripts/db-up.sh, and.github/workflows/ci.ymlall usenextjs_prisma_vercel_starter(snake_case for Postgres identifier rules). - Docker container name is
nextjs-prisma-vercel-starter-postgres(hyphens fine for Docker). - Volume name is
nextjs-prisma-vercel-starter-pg-data.
Schema:
prisma/schema.prisma: drop the "Motir — motir-core schema" comment; keep the placeholder model but renameMigrationMarker→Marker(or remove entirely if you prefer; flag the trade-off in PR description). Update the migration file accordingly.
Quality gates:
- All four quality gates pass on the starter repo:
pnpm lint,pnpm format:check,pnpm typecheck,pnpm build. - GitHub Actions CI runs on the initial commit and goes green (3 jobs: lint, typecheck, build with Postgres service container).
End-to-end smoke test (the load-bearing AC):
- Click "Use this template" in the GitHub UI; create a throwaway test repo (e.g.,
moooon-B-V/_starter-smoke-test); clone it; runpnpm install && ./scripts/db-up.sh && pnpm dev; confirmlocalhost:3000renders the generic placeholder; confirmpnpm prisma migrate dev --name initworks; delete the throwaway repo.
Reference to planning docs:
- Captures the lesson from notes.html mistake #20: future Motir-planned projects on this stack default to "Use this template" rather than re-deriving the bootstrap from scratch.
Context refs
- notes.html mistake #20 — the lesson driving this Subtask
motir-core's current tree at the end of Story 1.0 — the source to fork from- GitHub's "Creating a template repository" docs
- create-t3-app — reference starter for comparison (README shape, scope of what goes in)