admin
091c2dc0e4
fix(01-01): load .env manually in prisma.config.ts — Prisma 7 env() unreliable on Windows
2026-06-06 09:29:39 +02:00
admin
1b5f1affe9
fix(01-01): move DB URL to schema.prisma datasource, simplify prisma.config.ts
2026-06-06 09:28:14 +02:00
admin
31f9279ffc
fix(01-02): correct next.config.ts syntax error (module.exports inside object literal)
2026-06-06 09:13:48 +02:00
admin
105574d907
docs(01-02): complete auth screens and app shell plan
2026-06-06 09:04:34 +02:00
admin
e7d300f9c2
feat(01-02): protected app shell with sidebar, mobile nav, onboarding redirect
...
- (app)/layout.tsx: server component with auth() check + pets.list + redirect to /onboarding/pet if no pets
- Sidebar.tsx: 240px desktop nav (lg:), pet switcher with active state, nav links with orange-500 active indicator
- MobileNav.tsx: fixed bottom bar (h-16, lg:hidden), pet switcher above tabs, orange-500 center post button
- onboarding/pet/page.tsx: stub with Plan 03 placeholder (replaces walking skeleton client form)
- Deviation: base-nova shadcn uses @base-ui/react/menu (no asChild support) — used onClick+useRouter
- Deviation: Clerk 7 UserButton no longer accepts afterSignOutUrl
2026-06-06 08:57:38 +02:00
admin
325eaa9a25
feat(01-02): auth layout and Clerk-rendered auth pages
...
- (auth)/layout.tsx: centered 448px container, items-center, bg-background
- sign-up/[[...sign-up]]/page.tsx: Clerk <SignUp> with orange-500 appearance, redirects to /onboarding/pet
- log-in/[[...sign-in]]/page.tsx: Clerk <SignIn> with orange-500 appearance, redirects to /pets
- forgot-password/page.tsx: two-step Clerk 7 reset flow (create identifier + resetPasswordEmailCode.sendCode)
- reset-password/page.tsx: Clerk 7 resetPasswordEmailCode.verifyCode + submitPassword + finalize
- verify-email/page.tsx: static server component + ResendEmailButton client island
- Deviation: Clerk 7 SignInFutureResource API used (no isLoaded/setActive/attemptFirstFactor)
2026-06-06 08:52:23 +02:00
admin
e0214ea0f8
feat(01-01): wire Clerk proxy.ts, Prisma 7 schema + singleton, tRPC stack, R2 client, ActivePetContext
...
- Create proxy.ts at repo root with clerkMiddleware + createRouteMatcher (public allowlist: sign-up, log-in, forgot-password, reset-password, verify-email)
- Create prisma/schema.prisma: Owner, Species, Breed, Pet models with ownership index and FK constraints
- Create prisma.config.ts with Prisma 7 defineConfig (datasource url via env)
- Create src/lib/prisma.ts: Prisma 7 singleton using @prisma/adapter-pg for local dev, withAccelerate() for Prisma Accelerate on Vercel
- Create src/lib/r2.ts (server-only): S3Client + getPresignedUploadUrl with contentType enforcement and 300s expiry
- Create src/lib/auth.ts: getOwnerId() Clerk auth wrapper
- Create src/trpc/init.ts: createTRPCContext, router, publicProcedure, protectedProcedure (throws UNAUTHORIZED)
- Create src/trpc/routers/pets.ts: pets.create (upserts Owner, creates Pet with ownerId=ctx.userId), pets.list (scoped), pets.byId (ownership-asserted)
- Create src/trpc/routers/_app.ts: appRouter + AppRouter type export
- Create src/trpc/query-client.ts, server.ts (RSC caller), client.tsx (TRPCReactProvider + useTRPC)
- Create src/app/api/trpc/[trpc]/route.ts: tRPC fetch handler (GET + POST)
- Create src/context/ActivePetContext.tsx + src/hooks/useActivePet.ts: localStorage-backed active pet context
- Create prisma/seed.ts: seeds Dog/Cat/Bird species idempotently via upsert
- Update src/app/layout.tsx: wrap children in ClerkProvider (orange primary), TRPCReactProvider, ActivePetProvider, Toaster
- Install @prisma/adapter-pg + pg for Prisma 7 local dev (Rule 2: required for Prisma 7 engine compatibility)
- [Rule 1 - Bug] Prisma 7 no longer supports url/directUrl in schema.prisma; moved to prisma.config.ts with defineConfig
2026-06-05 19:18:16 +02:00
admin
dbc074e9ee
chore(01-01): scaffold Next.js 16 + install full stack + Vitest test scaffold
...
- Create-next-app Next.js 16.2.7 with TypeScript 6.0.3, React 19, Tailwind v4, Turbopack
- Install all pinned runtime deps: Clerk 7.4.3, tRPC 11.17.0, Prisma 7.8.0, Zod 4.4.3, AWS SDK 3.1062.0, Sonner 2.0.7, Upstash Redis 1.38.0
- Configure Tailwind v4 (postcss.config.mjs uses @tailwindcss/postcss; globals.css uses @import "tailwindcss")
- Initialize shadcn/ui with default preset; add all Phase 1 components (button, input, form, label, textarea, select, avatar, card, dialog, dropdown-menu, sonner, progress, separator, badge, skeleton)
- Set orange-500 design system: --primary: oklch(0.7024 0.1967 41.45); --background: oklch(0.9882 0 0)
- Load Inter via next/font/google in root layout
- Create vitest.config.ts with jsdom environment and @ path alias
- Create Wave 0 test scaffolds (22 it.todo tests): auth, pet-profile, media-upload + prisma-mock helper
- Create .env.example listing all required service env vars
2026-06-05 19:10:46 +02:00
admin
d3fe4982ff
docs(01): create phase plan
2026-06-05 17:29:13 +02:00
admin
be93b6c56d
docs(01): add validation strategy
2026-06-05 17:11:23 +02:00
admin and Claude Sonnet 4.6
dbc002c492
docs(01): fix 3 blocking UI-SPEC issues from checker
...
- Copywriting: rename delete pet cancel button from "Cancel" to "Keep pet"
- Typography: reduce to exactly 4 sizes (12/14/16/20px) and 2 weights (400/600)
- Visuals: add focal point declaration per screen in Screen Inventory
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-05 16:49:44 +02:00
admin and Claude Sonnet 4.6
4608ff19f0
docs(01): UI design contract for Phase 1 Foundation
...
Locks spacing, typography, color, copywriting, and design system decisions
for the owner auth and pet profile screens before execution begins.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-05 16:46:47 +02:00
admin
1e7d511204
docs: create roadmap (7 phases)
2026-06-05 16:38:59 +02:00
admin
72214f2a10
docs: define v1 requirements
2026-06-05 16:28:43 +02:00
admin and Claude Sonnet 4.6
6e2f6f59d7
docs: complete project research for OnlyPets
...
Research files: STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md, SUMMARY.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-05 16:24:38 +02:00
admin
064817567b
chore: add project config
2026-06-05 16:02:04 +02:00
admin
6ad9623aa6
docs: initialize project
2026-06-05 15:57:29 +02:00