Todo lo que hace Fóir

Una API de contenido es la parte más pequeña de lo que necesita una aplicación. Esto es el resto.

Contenido

Cómo se da forma a tu información.

Modelos y campos

Define la forma de tus datos con dieciséis tipos de campo integrados, entre ellos texto enriquecido, decimales exactos, medios, referencias y geopuntos, en la consola o en código.

Relaciones

Apunta un modelo a otro con un campo de referencia y lee a través de él en una sola consulta, con tipos de relación que deciden si el acceso y las eliminaciones siguen a la referencia.

Prosa y modelos en línea

Texto enriquecido que contiene tus propios modelos entre los párrafos, en cualquier orden, modelos en línea que defines una vez y reutilizas como tipos de campo, y listas tipadas.

Jerarquías

Declara un campo de referencia como la jerarquía de un modelo y sus registros forman un árbol, con cada lectura devolviendo la ruta del registro y sus ancestros.

Locales

Traduce campos de texto y de prosa por locale, con una cadena de reserva que se recorre campo a campo y un modo estricto que informa de qué campos no tenían traducción.

Personalización

El servidor elige la versión de un registro que recibe una solicitud, a partir del contexto que pasa la lectura y de los segmentos en los que está el usuario con sesión iniciada. Incluye un ejemplo práctico.

Variantes

Varía un registro entero, un solo campo o una sola entrada de prosa según el público, con la variante elegida en el servidor a partir de reglas de segmentación reutilizables y priorizadas.

Públicos y segmentos

Construye públicos a partir de dimensiones de contexto como dispositivo, plataforma, locale y estado de inicio de sesión, y de segmentos basados en reglas que el servidor evalúa en cada solicitud.

Claves naturales y búsquedas

Dirige un registro por una clave legible y declara claves de búsqueda únicas adicionales en un modelo para que un handle o un SKU lo encuentre en una sola consulta tipada.

Tokens de diseño

Color, tipografía y espaciado guardados como tokens del proyecto y servidos desde la API, de modo que una app que los lee en runtime muestra un cambio de marca una vez publicado.

Publicación

Ponerlo en línea y poder recuperarlo.

Borradores

En un modelo con la publicación activada, cada guardado escribe un borrador mientras la API sigue sirviendo la versión publicada. La consola previsualiza un borrador tal como lo serviría la API.

Historial de versiones

En los modelos con control de versiones, cada guardado es una versión numerada, conservada durante una ventana que fija tu plan. Restaurar añade una versión nueva, y una ejecución de prueba informa antes del efecto.

Publicación programada

Fija una hora de publicación en la versión de un registro, y una hora de despublicación si el contenido debe retirarse de nuevo. Una programación puede cambiarse o cancelarse hasta que se dispare.

Despliegues

Un despliegue publica un lote con nombre de versiones de registros en un momento programado. Un elemento fallido se omite y puede reintentarse, y el lote puede revertirse.

Publicaciones

Los cambios en modelos y configuración se preparan como borradores y se publican juntos, ahora o a una hora fijada, con una comparación de cambios incompatibles y una reversión.

Comportamiento por modelo

El control de versiones, la publicación y las variantes se activan por modelo y vienen desactivados por defecto, de modo que cada modelo adopta solo el flujo de trabajo que necesitan sus registros.

Entrega

Cómo llega a tu aplicación.

GraphQL tipado

Fóir genera un esquema GraphQL a partir de tus modelos. Producción sirve el esquema publicado, y una comprobación de la CLI hace fallar tu build cuando los tipos confirmados quedan por detrás del proyecto.

Resuelto en la lectura

Una lectura pasa un locale, un contexto y un indicador de vista previa. El servidor aplica la reserva de locale, elige la variante y selecciona la versión en borrador o publicada.

Actualizaciones en vivo

Suscríbete por WebSocket para enterarte de cuándo cambian los registros. Los eventos llevan el id de lo que cambió, y el módulo live del SDK los aplica a tu caché de consultas.

Claves de API

Cada clave es pública o secreta y pertenece a un proyecto. Contiene los alcances que le das, y puede restringirse a modelos y operaciones concretos o a una organización.

Caché de respuestas

La API GraphQL guarda en caché las respuestas resueltas durante 60 segundos por defecto y las descarta cuando se escribe un registro que contienen. Un comando de la CLI purga a mano.

SDK y CLI

Un cliente tipado que escribe el GraphQL de tu aplicación, con tipos generados por clave, y una CLI para contenido, esquema, publicación y configuración con salida JSON para scripts.

Límites ya aplicados

Las tasas de solicitudes se fijan por clave según tu plan, y la profundidad de consulta, el número de campos y los alias tienen un tope antes de que se ejecute una consulta. Las respuestas informan de los límites en sus cabeceras.

Identidad y acceso

Quién puede ver y hacer qué.

Inicio de sesión alojado

Una página de inicio de sesión que Fóir aloja para tus usuarios en un dominio de login que verificas, con el nombre, el logotipo y el color de tu proyecto, con contraseña, código por correo e inicio de sesión con proveedor.

Inicio de sesión con OpenID Connect

Tus usuarios inician sesión con cualquier proveedor de identidad que publique un documento de descubrimiento de OpenID Connect. Tú aportas su URL de descubrimiento y tus credenciales de cliente, y Fóir ejecuta el intercambio.

Verificación adicional

Exige una passkey o un código de una app de autenticación como segundo paso tras la contraseña, antes de una operación sensible o en cada inicio de sesión en una app.

Roles

Un rol es un conjunto de permisos que compones, concedido en todo un espacio de trabajo o en un proyecto. Los roles de tus usuarios se declaran por proyecto en la configuración o en la CLI.

Acceso a nivel de registro

Un modelo declara quién es dueño de sus registros, y cada registro es privado o público. Un registro privado puede compartirse con una persona concreta mediante una concesión que puedes revocar.

Acceso a nivel de campo

Un campo puede indicar qué tipos de quien llama pueden leerlo y cuáles escribirlo. Hay cinco tipos, decididos por la credencial que lleva una solicitud.

Control de sesiones

La consola lista las sesiones que tus usuarios mantienen en un dominio de login personalizado, por app de inicio de sesión, y revoca cualquiera de ellas. Los demás inicios de sesión terminan por revocación del token o por caducidad.

Registro de auditoría

Quién hizo qué y cuándo, registrado junto con el cambio y legible en la consola por los miembros del equipo que tienen el permiso. Las entradas se conservan 90 días.

Seguridad

Cómo se mantienen tus datos separados de los de los demás.

Aplicado en la base de datos

Las reglas de acceso se compilan en row-level security de Postgres, así que la base de datos filtra lo que puede leer una solicitud y una comprobación olvidada en el código de la aplicación no expone una fila.

Aislamiento del espacio de trabajo

Un espacio de trabajo es tu cuenta. Cada fila gobernada lleva su id, y la política de la tabla compara ese id con la sesión de quien llama antes de considerar nada más.

Aislamiento de proyectos

Cada proyecto tiene su propio contenido, usuarios, archivos, claves, secretos y dominios de inicio de sesión. Una clave de API pertenece exactamente a un proyecto y no se puede apuntar a otro.

Aislamiento de organizaciones

Cuando tu producto tiene tenants propios, cada uno es una organización. La base de datos marca cada fila con su organización y filtra cada lectura por ella.

Acceso de soporte con aprobación

Cuando el personal de Fóir necesita mirar dentro de un espacio de trabajo para ayudar, uno de sus administradores aprueba la solicitud con un código de un solo uso. La visita dura una hora y queda registrada.

Demesne

El motor que compila las reglas es de código abierto, así que puedes leer cómo se escriben las políticas y ejecutar sus pruebas tú mismo.

Proyectos y organizaciones

Para agencias y para productos con tenants propios.

Un proyecto por cliente

Cada cliente recibe un proyecto con su propio contenido, claves, usuarios e inicio de sesión. Un espacio de trabajo los administra todos, y un cliente al que invitas solo accede a su propio proyecto.

Organizaciones

Dale a tu producto tenants propios. Cada cliente tuyo es una organización dentro de tu proyecto, con sus propios miembros, usuarios, datos y límites.

Árboles de organizaciones

Las organizaciones se anidan a cualquier profundidad. Un padre lee todo lo que tiene debajo y cambia solo sus propias filas, y los modelos y ajustes se heredan hacia abajo por el árbol.

Aprovisionamiento de organizaciones

Una llamada crea una organización con su marca, sus ajustes, su primer miembro y una clave confinada a ella. Ejecútala dos veces y sigues teniendo una sola organización.

Staging y producción

Un archivo de configuración declara staging y producción como proyectos con nombre, y la CLI sube los cambios a uno por ejecución. Se mantienen idénticos salvo por los destinos declarados, y se informa de la deriva.

Dominios personalizados

Un proyecto puede servir su API desde un dominio que verificas, y una app de inicio de sesión puede servir desde uno la página de inicio de sesión alojada. Ambos son opcionales, con TLS emitido automáticamente.

Medios

Archivos, y lo que haces con ellos.

Biblioteca de recursos

Sube un archivo una vez y haz referencia a él por id desde cualquier registro, con las dimensiones y un placeholder leídos de las imágenes cuando se confirma la subida.

Transformaciones de imagen

Cada imagen se sirve en ocho tamaños con nombre y cuatro formatos, renderizada la primera vez que se solicita una URL, con recortes y puntos focales fijados por uso.

Archivos privados

Un archivo tiene su propio propietario y visibilidad, con los archivos públicos servidos desde una URL simple y los privados mediante un enlace firmado que caduca.

Vídeo

Cada vídeo subido recibe una miniatura, una breve vista previa animada y su duración, y el streaming adaptativo HLS está incluido en algunos planes.

Automatización

Trabajo que ocurre sin una persona.

Programaciones

Una programación ejecuta una de tus operaciones con una expresión cron, en una zona horaria que nombras, y puede pausarse, reanudarse o activarse a mano.

Hooks de ciclo de vida

Un hook ejecuta una de tus operaciones cuando ocurre algo en un proyecto, como la publicación de un registro, y cada entrega se guarda con su estado.

Operaciones

Una operación es un endpoint HTTP que alojas y registras en Fóir, que lo llama con una carga firmada, reintenta los fallos y registra cada ejecución.

Cuotas de uso

Una cuota limita con qué frecuencia puede ejecutarse una operación en una ventana móvil, por usuario con sesión iniciada o en un conjunto más amplio, y devuelve un mensaje que escribes tú.

Precondiciones

Una precondición decide si una operación puede ejecutarse, según la pertenencia a un segmento de quien llama o una regla sobre la entrada, y la rechaza con un mensaje que escribes tú.

Secretos

Un vault para las credenciales que usan tus operaciones, guardadas cifradas, referenciadas por nombre y rotadas sin un nuevo despliegue.

Notificaciones

Envía correo y notificaciones dentro de la app y push a tus usuarios, directamente o a partir de un evento, con preferencias que cada usuario fija por categoría y canal.

Trabajar juntos

Las personas y los agentes.

Notas

Comentarios en hilo que tu equipo adjunta a un registro, un archivo, un modelo u otro sujeto, hasta un solo campo o un solo pasaje, con menciones y una bandeja de entrada por proyecto.

Tareas

Asigna una nota a un miembro del equipo y se convierte en una tarea, con fecha de entrega, subtareas y una cola por persona. Resolver la nota la marca como hecha.

Ask Fóir

Un asistente en la consola que trabaja con los permisos propios de la persona con sesión iniciada. Sus ediciones llegan como cambios sin guardar, como borradores o como solicitudes que apruebas.

Entrega un hilo a Fóir

Entrega un hilo de notas al asistente para una ejecución breve sin supervisión. Lee el proyecto y responde en el hilo, y no puede editar, publicar ni eliminar contenido.

Cualquier cliente MCP

Conecta tu propio agente al servidor MCP alojado de Fóir. Trabaja dentro de los permisos de quien lo conectó, o de los alcances de la clave secreta que se le dio.

Comentarios de tus usuarios

Los usuarios con sesión iniciada pueden escribir notas sobre un registro y leer las respuestas de tu equipo. Un widget de React registra la nota por ti, y un proyecto puede aceptar comentarios de visitantes.

Tuyo para llevártelo

La salida y las extensiones.

Exportación a Postgres

Un comando exporta un proyecto como tablas Postgres tipadas generadas a partir de tus modelos, con claves foráneas, tu contenido publicado y enlaces de descarga para tus archivos.

Reglas de acceso en la exportación

El paquete de exportación incluye row-level security de Postgres sobre qué filas puede leer cada usuario. La aplicas tú. Los permisos de campo, los alcances de la API y las reglas de escritura se quedan atrás.

Tu lógica sigue siendo tuya

Fóir no aloja tu código. Registras como operación una función que alojas tú, y Fóir la llama con un token firmado y con alcance, reintenta los fallos y registra cada ejecución.

Apps

Amplía la consola con tus propias herramientas. Una app es una página web que alojas, incrustada como página, pestaña del editor, barra lateral o editor de campo.

Configuración como código

Modelos, claves de API, hooks, proveedores de inicio de sesión y el resto de la configuración de un proyecto en un archivo que confirmas. Un push prepara un borrador y una publicación lo publica.

Empieza con un modelo

Crea un proyecto, define un modelo y léelo de vuelta por la API.