Construye una app web completa + backend (Google AI Studio + Supabase)
Guía paso a paso para conectar tu app de Google AI Studio a Supabase y construir un backend listo para producción.
Hoja de ruta y recursos
Autenticación de usuarios (Sign Up y Login)
Configura el proyecto de Supabase
Abrir Supabase
https://supabase.com/?utm_source=partner&utm_medium=social&utm_campaign=supasquad&dub_id=faVfKdcLWvKCbYNp
Crea una organización y elige el plan gratuito Crea el proyecto y selecciona la región más cercana Guarda la contraseña de la base de datos Copia el Project URL y la Publishable Key
Project Settings Data API
Project URL
Project Settings API Keys
Publishable Key
Prompt 1 — Conexión a Supabase
Conexión a Supabase
Crea un archivo sencillo de conexión a Supabase para este proyecto.
Create a simple Supabase connection file for this project. 1) Create a new file called: src/supabaseClient.js 2) Inside it, write a clean Supabase setup with two variables that I can replace later: const SUPABASE_URL = "{{SUPABASE_URL}}"; const SUPABASE_PUBLIC_KEY = "{{SUPABASE_KEY}}"; 3) Import createClient from "@supabase/supabase-js" and export one Supabase client: export const supabase = createClient(SUPABASE_URL, SUPABASE_PUBLIC_KEY); Make the file very simple and show clearly where I should paste my URL and my public key.
URL del proyecto de Supabase
Pega aquí tu URL del proyecto de Supabase
Publishable Key de Supabase
Pega aquí tu publishable key de Supabase
Prompt 2 — Lógica de autenticación por email
Lógica de autenticación por email
Conecta las páginas de inicio de sesión y registro de este proyecto con Supabase Auth.
Connect the Sign In and Sign Up pages in this project to Supabase Auth. Use the Supabase client from: src/supabaseClient.js 1) For Sign Up: - Use supabase.auth.signUp({ email, password }) 2) For Sign In: - Use supabase.auth.signInWithPassword({ email, password }) 3) After successful login or signup: - Redirect the user to the Home page ("/") 4) Add simple error handling: - If Supabase returns an error, show a small error message under the form Do not change the UI design — only add the logic to make these forms work. Show me only the updated Sign In and Sign Up files.
Prompt 3 — Arreglo de confirmación por email
Arreglo de confirmación por email
Corrige la lógica de autenticación de Supabase para que gestione bien a los usuarios no verificados.
Fix Supabase auth logic: * After signUp(), if data.session is null, don’t redirect to the dashboard. * Just show: "Check your email and confirm your account before logging in." * Only redirect when a real session exists after login. * Protect private pages with supabase.auth.getSession() — if no session, redirect to /login.
Prompt 4 — Mejora de UX del registro
Mejora de UX del registro
Mejora la experiencia de usuario del flujo de registro con correo y contraseña de Supabase.
Improve the UX of my Supabase email/password signup flow. Current behavior: - When the user completes Sign Up, the app goes back to the Sign In page, but there is no success message and the email field is empty. I want the following behavior: 1) After a successful Supabase signUp({ email, password }): - Do NOT auto-login. - Redirect the user to the Sign In page. - Keep / pre-fill the email they just used for signup in the Sign In form. 2) On the Sign In page: - If the user comes from a successful signup: - Show a clear success message above the form, for example: "Your account has been created. Please check your email and verify your address before logging in." - The email input should already contain the email used during signup. 3) You can pass the email from Sign Up to Sign In using: - router state, OR - a query parameter, OR - any simple, clean method that works well with this project. 4) Keep the existing design and layout exactly the same. Just add: - the logic for passing the email - the success message on the Sign In screen - and basic error handling if signup fails. Show me only the updated Sign Up and Sign In components.
Despliegue (requerido para Google OAuth)
Despliega la aplicación web
Ver vídeo de despliegue
Ver vídeo de despliegue
https://youtu.be/HGs-4QjyjHQ?si=b2qf5p0-stltUKw4
Añade el Site URL y el Redirect URL en Supabase Crea un proyecto de Google Cloud Configura la pantalla de consentimiento de OAuth Crea un cliente OAuth web y añade las URLs necesarias Añade el Client ID y el Client Secret a Supabase y habilita el inicio de sesión con Google
Prompt 5 — Google Sign-In
Google Sign-In
Haz que el botón “Continue with Google” funcione mediante Supabase OAuth.
Make the “Continue with Google” button work using Supabase OAuth. Use the supabaseClient.js file. Add the Google login function and connect it to the button. Keep all UI exactly the same.
Guardar datos del usuario (base de datos)
Prompt 6 — Generar tablas + CRUD
Generar tablas + CRUD
Genera las tablas de la base de datos, la lógica CRUD y las políticas de seguridad por usuario que necesita esta app.
I want you to connect this web app to Supabase. 1) Analyze the existing project and detect all the data that should be saved in the database (for example: notes, tasks, posts, projects, or any items the app uses). 2) Based on the UI and the current features, generate the ideal SQL code to create the main table(s) in Supabase — including fields, types, timestamps, and user_id relations. Make sure rows belong only to the authenticated user using RLS + policies with auth.uid(). 3) After generating the SQL, write the Supabase code needed for: - loading the user's data - creating new items - updating items - deleting items 4) Use the existing components in the codebase without changing the design. Just replace the placeholder/local data logic with real Supabase queries. Keep everything simple, clean, and easy to copy-paste.
Crea y verifica la base de datos
Copia el SQL generado Abre el editor SQL de Supabase Pega y ejecuta el SQL Confirma que las tablas se crearon Revisa las políticas de Row Level Security Crea un registro de prueba en la app Confirma que el registro aparece en Supabase
Subida de archivos (Supabase Storage)
Configura Supabase Storage
Abre Supabase Storage Crea un bucket llamado app-files Mantén el bucket privado Abre el editor SQL de Supabase Ejecuta el script de políticas de almacenamiento Confirma que las políticas de almacenamiento se crearon
Políticas de Storage
create policy "Users can view own files" on storage.objects for select to authenticated using ( bucket_id = 'app-files' and name like (auth.uid()::text || '/%') ); create policy "Users can upload to own folder" on storage.objects for insert to authenticated with check ( bucket_id = 'app-files' and name like (auth.uid()::text || '/%') ); create policy "Users can update own files" on storage.objects for update to authenticated using ( bucket_id = 'app-files' and name like (auth.uid()::text || '/%') ); create policy "Users can delete own files" on storage.objects for delete to authenticated using ( bucket_id = 'app-files' and name like (auth.uid()::text || '/%') );
Prompt 7 — Conectar la subida de archivos
Conectar la subida de archivos
Conecta todas las funciones de subida de archivos al bucket privado app-files usando carpetas seguras por usuario.
I already created a Supabase Storage bucket named "app-files" (private) and added all required security policies so each user can only access files under their own folder. Now analyze my project and identify every place where users upload or select files (attachments, images, avatars, covers, etc.). Connect all existing upload features to Supabase Storage using this bucket: "app-files". Important folder rule: every uploaded file path must start with the user id: ${auth.uid()}/... Use a clean structure like: ${auth.uid()}/${featureName}/${itemId}/${uuid}.${extension} After uploading a file: - Save the returned file path in the correct database table according to my current data model. - Display files using signed URLs since the bucket is private. - Add delete logic: remove the file from Storage and remove its reference from the database. - Do NOT redesign the UI. Only connect the existing upload buttons/components to Supabase Storage.
Prueba la subida de archivos
Publica los últimos cambios de la app Abre la aplicación web en vivo Inicia sesión con una cuenta de prueba Sube un archivo de prueba Confirma que el archivo aparece en la app Abre el bucket app-files en Supabase Confirma que el archivo está guardado dentro de la carpeta del usuario
Conectar a la UI (sistema dinámico)
Prompt 8 — Total de notas dinámico
Total de notas dinámico
Haz que la tarjeta “Total Notes” del panel muestre el número real de notas del usuario conectado desde Supabase.
You are working on my existing Supabase-powered AI Notes project. Goal: Make the "Total Notes" card on the dashboard show the real number of notes for the currently authenticated user. Requirements: 1. Fetch the current authenticated user using: supabase.auth.getUser() 2. Count the number of notes in the "notes" table where user_id = current user id. 3. Replace the static number in the dashboard with the real count from the database. 4. Do NOT redesign the UI. Only connect the existing "Total Notes" component to real Supabase data. 5. Keep the existing clean SaaS layout untouched. 6. Make sure it updates automatically when a note is created or deleted. Only modify necessary files. Do not change styling.
Prompt 9 — Límite del plan gratuito
Límite del plan gratuito
Limita a los usuarios gratuitos a tres notas y muestra un mensaje de mejora cuando alcancen el límite.
Now add simple SaaS plan logic to my existing Supabase AI Notes app. Goal: Free users can create a maximum of 3 notes. Requirements: 1. Before creating a new note: - Count how many notes the current user already has. 2. If notes count >= 3: - Block note creation. - Show a clean modal or alert: "Free plan limit reached. Upgrade to Pro to create unlimited notes." 3. Do NOT redesign the UI. Keep the existing design system. 4. Keep logic simple. No Stripe integration yet. Just front-end + Supabase validation. 5. Make sure users cannot bypass this limit by calling the create function manually. Keep everything clean and production-ready.
Crea notas hasta alcanzar el límite gratuito Intenta crear otra nota Confirma que la creación de notas está bloqueada Verifica que aparece el mensaje de mejora
Archivos del proyecto (usados en el vídeo)
Copia el mismo proyecto inicial de Google AI Studio usado en el tutorial de Supabase.
AI Notes — Plantilla SaaS completa
Proyecto inicial de Google AI Studio usado en el tutorial
https://aistudio.google.com/app/prompts?state=%7B%22ids%22:%5B%221KfBjV87zDbGoGj27YRjB2kHrLcDM2-4r%22%5D,%22action%22:%22open%22,%22userId%22:%22105522043497516450070%22,%22resourceKeys%22:%7B%7D%7D&usp=sharing
Instrucciones
Abre el enlace del proyecto de arriba. Inicia sesión en tu cuenta de Google si es necesario. Haz clic en “Remix” dentro de Google AI Studio. Sustituye el Project URL y la Publishable Key de Supabase incluidos por tus propios valores. Ejecuta los scripts SQL de base de datos y almacenamiento en el editor SQL de Supabase.
NOTA IMPORTANTE
Sustituye el Project URL y la Publishable Key de Supabase incluidos antes de probar la autenticación, la base de datos o la subida de archivos.