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-26

1.1.9 Snapshot Story-1.1 auth into `nextjs-prisma-vercel-starter-with-design`

Done
Description

Estimate: 25m · Depends on: 1.1.7

Snapshot the auth code shipped in Story 1.1 from motir-core into moooon-B-V/nextjs-prisma-vercel-starter-with-design (the designed starter), stripping anything Motir-specific so the starter remains a generic baseline. Functionally identical to 1.1.8 but for the designed starter — the extra work is that the sign-up / sign-in / reset-password pages ship styled with the design system already in this starter, not unstyled. This is the higher-value of the two backports because most Motir-planned projects will use the designed starter (per the design-wizard "skip-all" path).

Why a separate Subtask from 1.1.8: The designed starter's auth pages must compose Button, Input, Card from components/ui/ (already present in this starter) instead of plain HTML — so the snapshot is not a pure file copy. The pages from motir-core's app/(auth)/* are already styled this way (1.1.5 used the design system primitives), so the work is mostly verifying the imports resolve in the designed starter's tsconfig paths and the Tailwind tokens render correctly. But it's distinct enough that it deserves its own Subtask, parallel with 1.1.8.

What you'll do: Same rsync + strip + smoke-test + push as 1.1.8, into the designed starter's sibling clone. Verify the auth pages render with the design system styling intact (the /tokens route's primitives flow through to the auth pages without any extra work). Run the end-to-end "Use this template" smoke test with extra attention to: (a) the auth pages render in light/dark + default/soft display styles correctly, (b) the "Continue with Google" button uses the secondary Button variant + Google logo per the design-system convention from 1.1.1's mockup, (c) /tokens still renders the full design-system specimen.

Acceptance criteria

  • moooon-B-V/nextjs-prisma-vercel-starter-with-design's main branch advances with a single commit that adds the auth code from Story 1.1. isTemplate stays true.
  • Code shipped: same as 1.1.8 (Better-Auth, email/password, Google OAuth, schema, repos, pages, email abstraction), PLUS the auth pages styled with the existing design system primitives (Button, Input, Card).
  • All design-system code from prior Story 1.0.5 backports stays intact: components/ui/*, app/globals.css token taxonomy, lib/contexts/theme-context.tsx, lib/theme/*, app/tokens/page.tsx, docs/DESIGN.md, docs/design-system.md.
  • Auth pages render correctly in all 4 theme × display-style combinations (light/dark × default/soft); the "Continue with Google" button styles match the design-system convention from 1.1.1.
  • /tokens route still renders the full design system specimen page; theme + display-style toggles still work; auth pages still work after toggle.
  • All Motir-as-consumer references stripped: same coverage as 1.1.8.
  • Fresh Prisma migration generated; applies cleanly.
  • .env.example documents the same new env vars as 1.1.8.
  • README updated to position this starter as "everything in the bare starter, plus design system, plus auth" — the canonical default for design-system-using projects.
  • All 4 quality gates green; CI green on the snapshot commit.
  • End-to-end "Use this template" smoke test passes: throwaway repo → clone → install → db-up → migrate dev → dev → email/password sign-up + sign-in works → Google OAuth sign-in works → /tokens still works → theme/display-style toggles still work → throwaway deleted.

Context refs

  • Same source files from motir-core/ as 1.1.8
  • Local clone of moooon-B-V/nextjs-prisma-vercel-starter-with-design — destination
  • Subtask 1.0.5.6's PR + commit — the precedent for the designed starter's strip pattern
  • Subtask 1.1.8 (running in parallel) — same agent run, same shape, different destination
  • MOTIR.md — planner-as-consumer principle
Status
Done
Type
Sub-task