import { NextRequest, NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import bcrypt from "bcryptjs"; export async function POST(req: NextRequest) { try { const body = await req.json().catch(() => null); if (!body) { return NextResponse.json({ error: "Invalid request body" }, { status: 400 }); } const { name, email, password } = body; if (!name || !email || !password) { return NextResponse.json({ error: "All fields required" }, { status: 400 }); } if (password.length < 8) { return NextResponse.json({ error: "Password must be at least 8 characters" }, { status: 400 }); } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { return NextResponse.json({ error: "Email already in use" }, { status: 409 }); } const passwordHash = await bcrypt.hash(password, 12); const user = await prisma.user.create({ data: { name, email, passwordHash }, }); // Create default list await prisma.list.create({ data: { userId: user.id, name: "My Tasks", color: "#4B7BF5", icon: "inbox", sortOrder: 0, }, }); return NextResponse.json({ id: user.id, email: user.email, name: user.name }, { status: 201 }); } catch (err) { console.error("[register]", err); return NextResponse.json( { error: "Server error. Make sure the database is running." }, { status: 500 } ); } }