← ClaudeAtlas

backend-patternslisted

Design solid backend architectures with modern patterns. Use when user wants "API design", "database schema", "authentication", "caching", "queues", "background jobs", "microservices", "serverless", or "backend architecture".
kensaurus/cursor-kenji · ★ 4 · API & Backend · score 80
Install: claude install-skill kensaurus/cursor-kenji
# Backend Patterns Skill Design scalable, maintainable backend architectures using modern patterns and best practices. ## CRITICAL: Check Existing First **Before implementing ANY backend pattern, verify:** 1. **Check existing architecture:** ```bash ls -la src/server/ src/api/ app/api/ supabase/functions/ 2>/dev/null cat package.json | grep -i "prisma\|drizzle\|supabase\|trpc" ``` 2. **Check existing patterns:** ```bash rg "createTRPCRouter|publicProcedure" --type ts -l rg "'use server'" --type ts -l ls -la supabase/migrations/*.sql 2>/dev/null | tail -5 ``` 3. **Check database setup:** ```bash cat prisma/schema.prisma 2>/dev/null | head -50 cat supabase/config.toml 2>/dev/null ``` **Why:** Backend changes have wide impact. Understand existing architecture first. ## Server Actions (Next.js 15+) ### Basic Pattern ```tsx // app/actions/users.ts 'use server' import { z } from 'zod' import { revalidatePath } from 'next/cache' import { auth } from '@/lib/auth' import { db } from '@/lib/db' const CreateUserSchema = z.object({ email: z.string().email(), name: z.string().min(1).max(100), }) type ActionResult<T> = | { success: true; data: T } | { success: false; error: string; fieldErrors?: Record<string, string[]> } export async function createUser( prevState: ActionResult<User> | null, formData: FormData ): Promise<ActionResult<User>> { // 1. Auth check const session = await auth() if (!session?.user) { return { success: false, error: 'Unauthorized' } } //