Next.js 14 App Router application for managing homophone pun game levels: - Better Auth with Prisma adapter for authentication - MySQL database with Prisma ORM - Level CRUD operations with drag-and-drop reordering - Tencent COS integration for image uploads - shadcn/ui components with Tailwind CSS - TanStack Query for server state management
2.2 KiB
2.2 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Meme Studio is a homophone pun game operation platform built with Next.js 14 (App Router). It provides level configuration management for a wordplay game.
Commands
npm run dev # Start development server
npm run build # Production build
npm run lint # Run ESLint
# Database (Prisma + MySQL)
npm run db:generate # Generate Prisma client
npm run db:push # Push schema changes (dev)
npm run db:migrate # Create migration
npm run db:studio # Open Prisma Studio
npm run db:seed # Create/update admin user
Architecture
Tech Stack
- Framework: Next.js 14 App Router
- Auth: Better Auth with Prisma adapter (email/password)
- Database: MySQL via Prisma ORM
- UI: shadcn/ui + Tailwind CSS
- State: TanStack Query for server state
- Drag & Drop: @dnd-kit/sortable
Key Patterns
Route Groups:
app/(auth)/- Login page (no sidebar)app/(dashboard)/- Protected pages with sidebar layout
Auth Flow:
lib/auth.ts- Server-side Better Auth configlib/auth-client.ts- Client-side auth hooks (useSession,signIn,signOut)middleware.ts- Cookie-based session check (cannot use Prisma in Edge Runtime)
API Routes:
/api/auth/[...all]- Better Auth endpoints/api/levels- CRUD for game levels/api/levels/reorder- Batch update sort order/api/cos/temp-key- Tencent COS temporary credentials
Database Models:
Level- Game levels with image, answer, hints, sortOrderUser,Session,Account,Verification- Better Auth models
Environment Variables
Required in .env:
DATABASE_URL=mysql://...
BETTER_AUTH_SECRET= # 32+ chars, generate with: openssl rand -base64 32
BETTER_AUTH_URL=http://localhost:3000
ADMIN_EMAIL=
ADMIN_PASSWORD=
COS_SECRET_ID= # Tencent Cloud COS
COS_SECRET_KEY=
COS_BUCKET=
COS_REGION=
COS_APPID=
Important Notes
- Middleware uses cookie check only (Prisma doesn't work in Edge Runtime)
- Password hashing must use
hashPasswordfrombetter-auth/cryptofor compatibility - Session model requires
tokenfield with unique constraint