MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-15

1.0.5.6 Create `moooon-B-V/nextjs-prisma-vercel-starter-with-design` (MIT, GitHub Template)

Done
Description

Estimate: 20m · Depends on: 1.0.5.5

Snapshot motir-core at the end of Story 1.0.5 (i.e., with the full design system landed: tokens, primitives, patterns, docs/design-system.md, /tokens specimen page) into a brand-new public GitHub Template repo at moooon-B-V/nextjs-prisma-vercel-starter-with-design. This is the designed starter referenced in design_wizard.html — the fork Motir hands future users who skip the design wizard (and use Motir's defaults).

Why this Subtask is needed (Layer-2 context): the design wizard's "skip-all" outcome says "no design Story will be planned; use the designed starter." For that to be a real path, the designed starter has to exist as a forkable repo. This Subtask creates it. Future Motir users who skip the wizard get this repo's snapshot; users who pick any axis get the bare starter (nextjs-prisma-vercel-starter, shipped in 1.0.6) plus a planned design Story that builds the system from scratch with their choices baked in.

Why now (last Subtask of Story 1.0.5): at this commit, motir-core contains the generic Next.js + Prisma + Tailwind + ESLint/Prettier + Vercel + Neon scaffolding plus the full design system (1.0.5.1 architecture, 1.0.5.2 primitives, 1.0.5.3 patterns, 1.0.5.5 design-system.md) — and nothing Motir-the-product-specific (no User model yet, no workspace tables, no auth wiring, 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-the-product code, which is harder and easier to get wrong. This is a semantic-ordering constraint: 1.0.5.6 must close before any Motir-the-product code (Story 1.1+ auth, workspaces, etc.) merges to motir-core's main.

Mechanism: manual copy + new repo + mark as Template (NOT a GitHub fork) — same pattern as 1.0.6. 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. A raw fork would carry Motir's planning commits forever and make the template look like "a fork of Motir" to anyone browsing the repo.

License: MIT, not GPL-3.0. Same rationale as 1.0.6 — templates ship under MIT because GPL's copyleft requirement repels would-be forkers. motir-core stays GPL-3.0; the designed starter is independent and MIT-licensed.

Value proposition (for the README pitch): the designed starter's differentiator vs. the bare starter is the full design system already wired in. A user who forks this gets: 2-axis theme system (Color × Shape) with light/dark + soft display style, Source Serif 4 + Inter + JetBrains Mono via next/font, 9 primitive components (Button, Input, Card, Modal, Pill, Tooltip, Toast, Spinner, + FormField helper), 2 patterns (EmptyState, ErrorState), a /tokens live spec route, and docs/design-system.md as the canonical reference. Plus inherited gotchas from the bare starter (postinstall, DATABASE_URL_UNPOOLED, etc.). The README should sell these as "everything in nextjs-prisma-vercel-starter, plus a polished design system you can extend or replace."

What you'll do:

  1. Create the empty public repo: gh repo create moooon-B-V/nextjs-prisma-vercel-starter-with-design --public
  2. Locally: copy the current motir-core tree (sans .git, node_modules, .next) into a new sibling directory.
  3. git init, set the remote to the new repo, single initial commit.
  4. Apply the strip/genericize edits (see Acceptance criteria for the full list). The strip is narrower than 1.0.6's because the design system stays — only Motir-the-product mentions (wordmark in app/page.tsx, README pitch copy, planning-doc references) need to be genericized.
  5. Push to main as the initial commit. Verify all four quality gates pass.
  6. Mark as template: gh repo edit moooon-B-V/nextjs-prisma-vercel-starter-with-design --template
  7. 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 localhost:3000 renders the generic placeholder AND localhost:3000/tokens renders the design system specimen page, then delete the throwaway repo.

Acceptance criteria

Repo + GitHub setup:

  • GitHub repo moooon-B-V/nextjs-prisma-vercel-starter-with-design exists, 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:

  • LICENSE is the canonical MIT text, copyright "© 2026 moooon B.V." or similar.
  • package.json's "license": "MIT", "name": "nextjs-prisma-vercel-starter-with-design", generic "description" (no Motir mention).
  • app/page.tsx is a generic placeholder (e.g., "Next.js + Prisma starter, with design system"); NO "Motir" wordmark. May reference /tokens to show off the design system.
  • app/layout.tsx metadata uses generic title and description (no Motir mention).
  • README does NOT reference Motir, motir-ai, motir-core, vision.html, feasibility.html, design_wizard.html, or any planning docs.
  • README's value proposition: leads with "everything in nextjs-prisma-vercel-starter, plus a polished design system" and links to docs/design-system.md + docs/DESIGN.md as the references.

Design system preservation (the load-bearing part):

  • components/ui/* ships intact — all 9 primitives + 2 patterns + FormField helper, with their JSDoc preserved.
  • app/globals.css ships intact — full 4-tier token taxonomy, light/dark + soft display style.
  • app/tokens/page.tsx ships intact — the live specimen page renders all tokens, primitives, and patterns.
  • docs/DESIGN.md ships intact (architectural spec).
  • docs/design-system.md ships intact (canonical reference). Any sentences that mention "Motir" by name as the consumer should be genericized to "this starter" or "the project that forks this template."
  • lib/utils/cn.ts, lib/contexts/theme-context.tsx, lib/theme/* all ship intact.
  • Composition stack deps stay in package.json: class-variance-authority, tailwind-merge, clsx, @radix-ui/react-{dialog,tooltip,toast}, lucide-react, fonts (next/font handles them — no package additions).

DB naming convention:

  • DB user/password/name in docker-compose.yml, .env.example, scripts/db-up.sh, and .github/workflows/ci.yml all use nextjs_prisma_vercel_starter_with_design (snake_case).
  • Docker container name: nextjs-prisma-vercel-starter-with-design-postgres.
  • Volume name: nextjs-prisma-vercel-starter-with-design-pg-data.

Schema:

  • prisma/schema.prisma: drop any "Motir" comment; keep the placeholder model and the migration file as-is.

Quality gates:

  • All four quality gates pass: pnpm lint, pnpm format:check, pnpm typecheck, pnpm build.
  • GitHub Actions CI runs on the initial commit and goes green.

End-to-end smoke test (the load-bearing AC):

  • Click "Use this template" in the GitHub UI; create a throwaway test repo; clone it; run pnpm install && ./scripts/db-up.sh && pnpm dev; confirm localhost:3000 renders the generic placeholder; confirm localhost:3000/tokens renders the full design system specimen page with all primitives + patterns + theme/display-style toggles working; confirm pnpm prisma migrate dev --name init works; delete the throwaway repo.

Layer-2 link:

  • The repo's existence is what makes the design wizard's "skip-all" path real. After this Subtask closes, design_wizard.html's reference to moooon-B-V/nextjs-prisma-vercel-starter-with-design resolves to a real GitHub repo.

Context refs

Status
Done
Type
Sub-task