¿Leer o escribir en la base de datos es una edge function? ¿Qué diferencia hay entre llamadas a la base de datos, edge functions y custom compute?
¿Leer o escribir en la base de datos es una edge function? ¿Qué diferencia hay entre llamadas a la base de datos, edge functions y custom compute?
GET /api/database/records/{table}) y un SDK tipado. Llamar a select o insert lee y escribe la base de datos directamente, sin nada que desplegar y sin nada en ejecución. Es todo lo que necesitas para el CRUD normal. Consulta Base de datos.Edge Function. Úsala cuando la API autogenerada no basta y quieres tu propia lógica de servidor: un webhook de pago, un auth hook, código que se dispara cuando una fila se INSERTa, UPDATEa o DELETEa, o un trabajo programado. La clave es que se ejecuta una vez por petición o evento y luego termina. Consulta Edge Functions.Custom Compute. Úsalo cuando necesitas un proceso que se mantenga activo, como un worker de cola o un bucle de inferencia de IA. Una edge function no puede hacerlo porque no se ejecuta de forma continua. Consulta Custom Compute.Regla rápida: ¿solo mueves datos de entrada y salida? Es la base de datos (REST automática). ¿Escribes lógica que se ejecuta y termina? Edge function. ¿Necesitas algo funcionando todo el tiempo? Custom compute.¿Cómo consulto una tabla en un schema distinto de `public`?
¿Cómo consulto una tabla en un schema distinto de `public`?
public. Solo tienes otro schema si creaste uno tú mismo con CREATE SCHEMA (los schemas internos de InsForge, como auth y storage, no están expuestos a la API de datos, así que .schema() y ?schema= no pueden alcanzarlos; como project admin todavía puedes leerlos con SQL directo, por ejemplo insforge db query o el editor SQL del dashboard). Una vez que tienes uno, puedes leerlo y escribirlo desde el dashboard, la REST API, la CLI y el SDK.Los ejemplos de abajo usan un schema que creaste llamado my_schema.Dashboard. Abre Database y usa el selector de schema en la parte superior de la barra lateral. Cualquier schema que creaste aparece junto a public, y al elegirlo navegas por las tablas de ese schema.REST API. El endpoint de records acepta el schema destino como parámetro de query o como cabecera de perfil de PostgREST. Las lecturas usan Accept-Profile; las escrituras y RPC usan Content-Profile:db query, solo cualifica la tabla con el schema:.schema() antes del constructor de consultas (compatible con @insforge/sdk). Se traduce a la misma cabecera Accept-Profile / Content-Profile, así que lecturas, escrituras y RPC se enrutan al schema que indiques:anon y authenticated no tienen privilegios sobre él hasta que se los concedes, sin importar quién sea el propietario de las tablas, así que las llamadas devuelven vacío o permiso denegado hasta que lo hagas. Concede privilegios a cada rol que expongas y luego añade RLS:¿Cómo activo o desactivo la seguridad a nivel de fila (RLS) en una tabla?
¿Cómo activo o desactivo la seguridad a nivel de fila (RLS) en una tabla?
POST /api/database/tables o el SDK), RLS queda habilitado a menos que pases explícitamente rlsEnabled: false.El endpoint update-table-schema (PATCH /api/database/tables/{table}/schema) no tiene ningún campo para alternar RLS: solo gestiona columnas, claves foráneas y renombrados. Para cambiar RLS en una tabla existente, ejecuta una sola sentencia SQL:run-raw-sql de MCP, o el endpoint REST de SQL directo (POST /api/database/advance/rawsql/unrestricted).¿InsForge tiene una `service_role` key / `INSFORGE_SERVICE_ROLE_KEY`?
¿InsForge tiene una `service_role` key / `INSFORGE_SERVICE_ROLE_KEY`?
ik_), la clave de administrador con acceso total. Cada proyecto tiene dos claves:- Anon Key: pública, para el navegador. Las peticiones se ejecutan con el rol
anon, limitadas por RLS. Es la que provocapermission denied for schema storage. - API Key: clave de administrador con acceso total, solo para el servidor. Omite RLS.
npx @insforge/cli secrets get API_KEY.Úsala desde código de servidor de confianza a través de createAdminClient, nunca desde el navegador:NEXT_PUBLIC_, VITE_ ni PUBLIC_).¿Cómo comparto un proyecto con otro administrador o invito a un compañero de equipo?
¿Cómo comparto un proyecto con otro administrador o invito a un compañero de equipo?
- En el dashboard, abre la organización propietaria del proyecto usando el selector de organización en la esquina superior izquierda.
- Haz clic en Members en la barra lateral izquierda.
- Haz clic en Invite Member, introduce su email y elige un rol:
- Administrator tiene control total: gestionar proyectos, además de invitar, eliminar y cambiar los roles de otros miembros.
- Developer tiene acceso normal a los proyectos de la organización, pero no puede gestionar miembros.
- Reciben una invitación por email válida durante 7 días. Cuando inician sesión en InsForge con esa misma dirección de email y la aceptan, se unen a la organización con el rol que elegiste.
¿Por qué se pausó mi proyecto y cómo evito que se pause?
¿Por qué se pausó mi proyecto y cómo evito que se pause?
- Inactividad. Un proyecto free se pausa tras 7 días sin ninguna petición. Te avisamos por correo antes, y cualquier petición reinicia el contador de 7 días.
- Límite de uso. Si tu organización supera los límites de uso del plan Free, sus proyectos siguen pausados hasta que la actualices.
Mi proyecto está pausado. ¿Cómo lo reinicio?
Mi proyecto está pausado. ¿Cómo lo reinicio?
- Puedes restaurar un proyecto free desde el dashboard hasta 30 días después de que se pause. Pasado ese plazo se archiva y solo puedes descargar la copia de la base de datos y los archivos de Storage (sin pérdida de datos).
- Si se pausó porque la organización alcanzó su límite de uso, haz Upgrade to Pro para restaurarlo.
¿Qué es FLY_API_TOKEN?
¿Qué es FLY_API_TOKEN?
FLY_API_TOKEN (un token de la API de Fly creado con fly tokens create org) y FLY_ORG (el slug de tu organización de Fly, obtenido con fly orgs list) en tu .env y reinicia. Ambos son obligatorios y, hasta que se definan, los endpoints de compute devuelven 503 COMPUTE_NOT_CONFIGURED.En InsForge Cloud nunca tocas esto. El compute está gestionado por nosotros, y el resto de la plataforma (base de datos, autenticación, Storage, edge functions) no necesita ningún token de Fly.¿Este asistente puede ayudarme con algo específico de mi propio proyecto?
¿Este asistente puede ayudarme con algo específico de mi propio proyecto?
npx @insforge/cli diagnose. Consulta Diagnostics & advisor.¿Cómo obtengo la cadena de conexión (connection string) de Postgres de mi base de datos?
¿Cómo obtengo la cadena de conexión (connection string) de Postgres de mi base de datos?
psql, un GUI de base de datos, un ORM (Prisma, Drizzle) o un servicio externo como Better Auth que necesita su propio Postgres. Imprímela con la CLI:--json para obtener { "connectionURL": "..." } en scripts. El comando funciona solo para proyectos cloud: en una instancia autoalojada Postgres queda expuesto directamente por tu configuración de docker-compose, así que usa las credenciales de Postgres locales (los valores DATABASE_URL / POSTGRES_* de tu .env) en su lugar.La cadena se conecta con el rol privilegiado postgres, por lo que no está limitada por row-level security e incluye la contraseña de ese rol. Trátala como un secreto: mantenla en el servidor y nunca la envíes al navegador.¿Cómo importo o cargo una base de datos Postgres existente en InsForge?
¿Cómo importo o cargo una base de datos Postgres existente en InsForge?
pg_dump, pg_restore y psql— se conectan a ella directamente, así que importar es un simple «volcar y restaurar» (dump-then-restore). No interviene ningún comando especial de InsForge.- Vuelca tu base de datos local (u otra):
- Obtén tu cadena de conexión de InsForge (solo para proyectos cloud):
- Restaura en InsForge:
- Pasa
--no-ownerpara que los objetos restaurados pertenezcan al rolpostgresen lugar de a roles que solo existen en tu base de datos de origen. - La cadena de conexión se conecta con el rol privilegiado
postgres(omite row-level security), así que trátala como un secreto y ejecuta estos comandos solo en el servidor. - Esto funciona solo para proyectos cloud. En una instancia autoalojada, restaura contra tus credenciales de Postgres locales (los valores
DATABASE_URL/POSTGRES_*de tu.env). - Una restauración escribe en tu base de datos en vivo y puede sobrescribir objetos existentes. Haz primero una copia de seguridad manual — consulta Copias de seguridad y restauración de la base de datos.
--single-transactionejecuta el restore como una sola transacción, así que si alguna sentencia falla (un objeto en conflicto, una extensión o rol que falta, un error de restricción) toda la importación se revierte en lugar de dejar la base de datos a medio restaurar.- Las tablas importadas no obtienen el acceso gestionado de InsForge automáticamente. Un restore directo se salta los permisos de los roles
anon/authenticatedy la seguridad a nivel de fila (RLS) que InsForge aplica, así que las tablas importadas no son accesibles a través de la API REST ni del SDK —y las reglas de acceso de tu volcado de origen no llevan la protección RLS de InsForge— hasta que concedas acceso y añadas políticas de RLS a cada tabla (consulta Base de datos). Si prefieres versionar los cambios de esquema en git, consulta Migraciones de base de datos.
¿Cómo doy de baja o elimino un sitio desplegado?
¿Cómo doy de baja o elimino un sitio desplegado?
deployments delete ni una acción en el dashboard para ello. Los sitios desplegados se alojan de forma externa, así que incluso eliminar tu proyecto (npx @insforge/cli projects delete --project <id>) borra tus recursos de backend —base de datos, Storage y backend branches— pero no quita el sitio alojado.En la práctica esto rara vez importa. Si de verdad necesitas dar de baja un sitio desplegado, escríbele al equipo de InsForge en Discord.Dos acciones relacionadas que no son lo mismo que eliminar un sitio en vivo:- Cancelar una compilación en curso:
npx @insforge/cli deployments cancel <id>detiene un despliegue en progreso; no da de baja un sitio que ya está en vivo. - Reemplazar lo que está en vivo: vuelve a desplegar sobre el mismo sitio con
npx @insforge/cli deployments deploy ./frontend— el despliegue ready más reciente sirve la URL.