Lección 16 de 47 ≈ 90 min Construcción profesional Codex + GPT-5.6 Sol
Resultado visible
Guardarás solicitudes en una tabla privada. Una persona anónima podrá insertar mediante una ruta controlada, pero no listar, leer, modificar ni borrar contactos.
Modelo mínimo
create table public.contact_requests (
id uuid primary key default gen_random_uuid(),
created_at timestamptz not null default now(),
name text not null check (char_length(name) between 2 and 80),
email text not null check (char_length(email) <= 254),
message text not null check (char_length(message) between 20 and 2000),
status text not null default 'new'
);
alter table public.contact_requests enable row level security;
No crees una política de lectura pública. Usa una ruta de servidor y una clave adecuada guardada como variable de entorno; nunca envíes una clave de servicio al navegador.
Prompt
Integra Supabase siguiendo la documentación oficial actual. Antes de editar,
propón modelo, amenazas y políticas RLS. Implementa una ruta de servidor
que valide, limite y guarde contactos. Las claves solo van en variables
de entorno y `.env*` debe estar ignorado por Git. Crea una prueba que
demuestre inserción válida y cuatro pruebas negativas de lectura/cambio.
Documenta cómo borrar los datos de prueba.
Prueba adversaria
Desde un cliente anónimo intenta seleccionar, actualizar y eliminar. Las cuatro operaciones deben fallar. Comprueba que RLS está activado y revisa las políticas en el panel. Borra las filas de prueba.