Marketplace inversée (Next.js 16 App Router + Supabase Cloud) : auth, schéma + RLS, publication de besoins avec upload d'images, feed avec filtres, offres, acceptation via RPC, messagerie temps réel, dashboards, et Dockerfile pour déploiement Coolify.
28 lines
825 B
TypeScript
28 lines
825 B
TypeScript
import * as z from "zod";
|
|
|
|
export const SignupFormSchema = z.object({
|
|
fullName: z.string().trim().min(2, { message: "2 caractères minimum." }),
|
|
email: z.string().trim().email({ message: "Adresse email invalide." }),
|
|
password: z
|
|
.string()
|
|
.min(8, { message: "8 caractères minimum." })
|
|
.regex(/[a-zA-Z]/, { message: "Doit contenir au moins une lettre." })
|
|
.regex(/[0-9]/, { message: "Doit contenir au moins un chiffre." }),
|
|
});
|
|
|
|
export const LoginFormSchema = z.object({
|
|
email: z.string().trim().email({ message: "Adresse email invalide." }),
|
|
password: z.string().min(1, { message: "Mot de passe requis." }),
|
|
});
|
|
|
|
export type FormState =
|
|
| {
|
|
errors?: {
|
|
fullName?: string[];
|
|
email?: string[];
|
|
password?: string[];
|
|
};
|
|
message?: string;
|
|
}
|
|
| undefined;
|