Dónde Comer AngolConectar Supabase
GUÍA · 26 DE OCTUBRE DE 2026

De este ZIP a tu sitio web.

No necesitas instalar Node, editores, herramientas de Cloudflare ni programas de desarrollo. Todo el sitio ya está construido con HTML, CSS y JavaScript estáticos. Supabase JS se carga desde CDN.

Qué está terminado y qué falta conectar

Incluye catálogo público, búsqueda, categorías, fichas con reseñas aprobadas, acceso con correo y contraseña, favoritos y reportes, edición de restaurantes y moderación de reseñas y reportes.

La entrega inicial no contiene credenciales ni un esquema confirmado. Para conectar tus datos debes completar la URL y la clave pública, comprobar el mapeo y verificar RLS. No se han probado operaciones contra tu proyecto real.

1. Sube el ZIP inicial a Pages

  1. Entra al panel de Cloudflare y abre Workers & Pages.
  2. Selecciona Create application → Get started → Drag and drop your files. Si aparece la elección entre Workers y Pages, elige Pages / Direct Upload. Los nombres de los botones pueden variar.
  3. Escribe un nombre, por ejemplo donde-comer-angol, y arrastra donde-comer-angol.zip al cuadro que dice “Drop your files”. No necesitas descomprimirlo.
  4. Selecciona Deploy site / Save and Deploy. Abre la dirección HTTPS https://tu-nombre.pages.dev que te indique Cloudflare.
  5. Verás “Tu sitio está listo para conectar”. Es normal: todavía no has agregado tu conexión pública de Supabase.

El archivo index.html está directamente en la raíz del ZIP. No configures comando de build ni directorio de salida. Si usas una carpeta en lugar del ZIP, arrastra la carpeta que contiene index.html. No subas una carpeta adicional que envuelva todo el sitio.

2. Obtén los valores públicos en Supabase

  1. Abre tu proyecto de Supabase y su diálogo Connect o Settings → API / API Keys.
  2. Copia la Project URL, con forma https://…supabase.co.
  3. Copia la clave publishable, que empieza con sb_publishable_. También se acepta la clave legacy anon si sigue habilitada. No uses secret ni service_role.
  4. Regresa a tu sitio de Cloudflare y pulsa Conectar Supabase. Pega los dos valores.

La clave pública puede aparecer en el código de un sitio web. La seguridad de los datos depende de Supabase Auth, los permisos SQL y las políticas RLS. La clave pública por sí sola no concede privilegios de administrador.

3. Comprueba las tablas existentes

Abre Supabase → SQL Editor → New query. Copia la consulta de diagnóstico (también está en el asistente) y pulsa Run. Solo lee columnas, restricciones, enums y políticas. No crea ni borra tablas ni modifica RLS.

El resultado tiene una columna diagnostico. Abre y copia su objeto JSON. Pégalo en el asistente y pulsa Sugerir mapeo desde el diagnóstico. Revisa después todos los valores. Puedes ajustar el JSON manualmente.

Si tus tablas están fuera del esquema public, cambia las condiciones de esquema en la consulta y el campo schema en la configuración. Ese esquema también debe estar expuesto en la Data API de Supabase.

Tabla lógicaCampos necesarios
restaurants → restaurantesid, name, status. Opcionales: description, category, address, phone, image, hours.
profiles → perfilesid que corresponde a auth.users.id, role.
reviews → resenasid, restaurant, user, rating, text, status. created es opcional.
reports → reportesid, review, user, reason. status es opcional.
favorites → favoritosrestaurant, user. id es opcional.

A la izquierda del mapeo están esos nombres lógicos; a la derecha, las columnas reales de tus tablas. Por ejemplo, "user": "user_id" sirve si tu columna se llama user_id. Pon null solamente en campos opcionales que no existan. El sitio consulta columnas explícitas; no publica perfiles ni correos de autores.

Los identificadores de restaurantes, reseñas y reportes deben ser claves primarias simples. El ID del perfil identifica al usuario de Auth. Las columnas adicionales obligatorias deben tener un valor predeterminado o un trigger. Si tu esquema exige otros campos, claves compuestas, imágenes como objetos, categorías como otra relación o permisos por sucursal, habrá que ampliar el adaptador; no inventes una equivalencia.

Revisa los tipos: los valores por defecto asumen restaurantes.activo = true, reseñas con estados pendiente / aprobada / rechazada, reportes con pendiente / resuelto y perfiles.rol = "admin". Si usas aprobado, publicado u otros valores, escríbelos exactamente. Si usas booleanos, escribe true o false sin comillas. adminRole también admite booleanos o números.

El catálogo requiere un campo de visibilidad y las reseñas un campo de moderación. No quites esos filtros: permiten mostrar únicamente lo publicado. La calificación usa números de 1 a 5 y el comentario texto. Los favoritos necesitan una restricción única para el par usuario/restaurante.

4. Verifica RLS antes de conectar datos reales

Este paquete respeta tus políticas existentes y no ejecuta migraciones ni desactiva RLS. El inicio de sesión usa Supabase Auth y el rol se consulta en perfiles. Ocultar los botones en el navegador no protege una base de datos; las políticas son la protección real.

RLS debe estar habilitado en las cinco tablas. Comprueba también los permisos de Data API y cualquier función o vista que pudiera exponer esas tablas. Las policies permisivas se suman: una policy amplia puede permitir acceso aunque exista otra más restrictiva. Evita una policy de perfiles que se consulte a sí misma y provoque recursión. No pegues una política genérica para “permitir todo”. Si el diagnóstico muestra un problema, pide una revisión adaptada a tus columnas antes de marcar las comprobaciones.

En el asistente, Comprobar consultas de lectura realiza SELECT como visitante. Sirve para detectar columnas inexistentes o errores de conexión, pero una respuesta sin filas puede significar una tabla vacía o RLS. No prueba la seguridad de escritura ni el rol administrador.

5. Descarga y sube el ZIP configurado

  1. Tras revisar el mapeo y las políticas, marca las dos comprobaciones del asistente.
  2. Pulsa Descargar ZIP configurado. El navegador genera donde-comer-angol-configurado.zip; no se envía a servicios de compresión.
  3. En el mismo proyecto de Pages abre Create a new deployment, elige Production y sube el nuevo ZIP.
  4. Abre el sitio y recarga. Todos los visitantes usarán esa conexión. Si usas un dominio propio, vuelve a comprobarlo también allí.

Completar el formulario solo prepara tu descarga. No modifica los archivos de Cloudflare. Las variables de entorno de Pages no se inyectan en HTML/JS estáticos sin build; este paquete usa config.json. La página de configuración es accesible públicamente, pero solo descarga archivos para quien la abre. No tiene una API para modificar tu despliegue.

6. Prueba tu sitio conectado

  1. En Supabase Auth crea o identifica una cuenta de administrador con correo confirmado y contraseña. Asigna el rol desde Supabase en perfiles con el mismo UUID de Auth. No hay contraseña de administrador incluida. Crea cuentas de visitantes allí si quieres permitirles escribir reseñas; esta versión no incluye registro ni recuperación de contraseña.
  2. Configura en Authentication → URL Configuration la Site URL con tu dirección HTTPS de Pages o tu dominio. El acceso de este paquete usa correo/contraseña, sin OAuth ni magic links; no requiere callbacks. Si más adelante agregas correos de confirmación o recuperación, autoriza sus URL de retorno exactas.
  3. Sin iniciar sesión, comprueba que solo aparezcan restaurantes publicados y reseñas aprobadas. Busca por nombre y categoría, abre una ficha y recarga su dirección: las rutas usan # y no requieren reglas especiales.
  4. Con una cuenta normal, guarda y quita un favorito, envía una reseña y un reporte. Comprueba en Supabase que el autor sea el usuario correcto y la reseña quede pendiente. Un usuario normal no debe acceder a Administración ni modificar su rol.
  5. Con la cuenta administradora, abre Administración. Crea un restaurante de prueba, edítalo, ocúltalo y publícalo. La actualización solo se confirma si Supabase devuelve la fila: se necesitan permisos de lectura y escritura.
  6. Aprueba la reseña desde la bandeja y comprueba en una ventana privada que aparezca. Recházala y comprueba que desaparezca. Resuelve el reporte por separado.
  7. Cierra sesión. Comprueba que los controles privados desaparezcan y que los favoritos no se vean desde otra cuenta. Haz pruebas directas de Data API con una cuenta normal para confirmar que RLS impide administrar y cambiar roles; la interfaz por sí sola no certifica esa protección.

Problemas habituales

Datos y privacidad

Supabase procesa el acceso y conserva los datos según la configuración de tu proyecto. El navegador guarda la sesión de acceso localmente para mantenerla iniciada. Usa Cerrar sesión en equipos compartidos. El asistente conserva los valores en memoria mientras está abierto, y el ZIP exporta la configuración pública; no exporta usuarios, contraseñas, sesiones ni filas de datos.

Las reseñas públicas muestran “Miembro de la comunidad”, su nota, texto y fecha si está disponible. No compartas información personal en los comentarios ni en los motivos de reportes. Las imágenes de los locales se cargan desde las URL HTTPS que configure el administrador. El paquete no incorpora analítica, publicidad ni cookies de seguimiento propias.

El responsable del sitio debe adaptar los avisos de privacidad, su contacto y reglas de moderación al uso real antes de invitar al público.

Documentación oficial

Abrir asistente de conexión