Build and debug data mutations and protected access in this No Name Running Club app using Next.js App Router server actions + Prisma + NextAuth v5. Use when implementing/repairing server actions, route handlers, admin-only flows, session/role propagation, Prisma queries/transactions, or caching/revalidation behavior.
This skill is opinionated to this repo’s patterns:
auth() / signIn() / signOut() from src/lib/auth.tswithAdminAuth() / helpers in src/lib/admin.tsprisma singleton from src/lib/prisma.tssrc/app/actions/* with "use server"src/app/actions/<domain>.ts"use server"FormData)src/services/* where appropriateconst session = await auth(); if (!session?.user?.id) throw new Error("Not authenticated");withAdminAuth(async () => { ... })select over returning whole models when you don’t need all fields.where: { id: { in: ... } } or use include.prisma.$transaction(...).src/lib/auth.ts sets it in the session callback.jwt callback is populating token.id from DB.src/types/next-auth.d.ts include session.user.id.withAdminAuth(...).src/lib/auth.ts sign-in callback + shouldBeAdmin).revalidatePath("/the-path") in the server action after the write.yarn build runs prisma migrate deploy).migrate dev semantics).references/patterns.mdreferences/debugging.md