Usuarios, sesiones y MFA
Email y contraseña, proveedores OAuth, TOTP con códigos de respaldo, verificación de email y reset de contraseña. Tus usuarios viven en tu base de datos.
AI first · Pronto open source
Conecta Claude Code, Cursor o cualquier cliente MCP y crea colecciones, políticas, funciones y storage por ti. Auth, datos, realtime y búsqueda vectorial, sobre MongoDB.
Plan gratis: 1 proyecto, 512 MB de storage, 100.000 ejecuciones de funciones al mes. Sin tarjeta.
O córrelo en local, sin cuenta
npx -y @groveback/cli@latest dev --seed --persist
AI first
Groveback se diseñó para que lo maneje un agente desde el primer commit. Cada operación de administración de la API es una tool que tu agente puede llamar, con los mismos permisos y la misma auditoría.
114 tools MCP
Colecciones, políticas, funciones, storage, usuarios, roles, RAG y webhooks. Una API key y un comando para conectarlo.
Seguro por diseño
La key tiene alcance de un proyecto, los datos siguen cerrados hasta que una política los abre, y el modo solo lectura omite toda tool que escribe.
Revisa su propio trabajo
Tests de funciones, tests de integraciones y evals de bases de conocimiento corren como tools, así el agente prueba un cambio antes de que lo publiques.
Configuración como código
grove pull escribe todo el proyecto en tu repo; grove push --dry-run muestra el diff antes de cambiar nada.
# Conéctalo una vez
$ claude mcp add groveback_shop -e GROVEBACK_URL=https://api.groveback.com -e GROVEBACK_API_KEY=gb_sk_… -- npx -y @groveback/mcp@latest
› Arma un backend de pedidos. Cada cliente ve solo los suyos, y avísame con cada pedido nuevo.
✓ Listo. orders está cerrada por defecto y cada cliente lee solo los suyos; notify-on-order corre tras cada insert.
$ grove pull # el proyecto llega a tu repo como código
Tus datos se quedan en MongoDB. Todo lo demás ya está construido, y cada petición sigue pasando por tus políticas.
Un proyecto, seis piezas
01 · Auth
Email y contraseña, proveedores OAuth, TOTP con códigos de respaldo, verificación de email y reset de contraseña. Tus usuarios viven en tu base de datos.
const grove = createClient({ baseUrl, projectId: 'shop' });
await grove.auth.register('ada@shop.dev', 'hunter22', 'Ada');
const user = await grove.auth.login('ada@shop.dev', 'hunter22');
// MFA on? login resolves { mfaRequired: true }
await grove.auth.verifyMfa('481207');02 · Data API
Cada colección tiene REST y GraphQL. Nada se puede leer hasta que escribas una política, y la política entra en la consulta de Mongo, así que tus índices siguen sirviendo.
// policies/orders.json — $and'ed into every query
{
"list": { "filter": { "ownerId": "$auth.uid" } },
"create": { "validate": "document.total > 0" },
"update": { "immutableFields": ["ownerId"] }
}
const mine = await grove.collection('orders').find({ limit: 20 });03 · Storage
Buckets, carpetas y enlaces firmados, sobre storage compatible con S3. Público o privado por bucket.
await grove.storage.upload('avatars', 'ada.png', file, 'image/png');
const { url } = await grove.storage.signUrl('avatars', 'ada.png', 3600);04 · Funciones
Triggers de base de datos, cron y endpoints HTTP propios. Corren en un worker aislado, sin secretos, y llegan a tus datos solo a través de las mismas políticas.
// functions/normalize-email.ts — a pre hook, sandboxed
export default async (event, ctx) => {
if (!event.document.email?.includes('@')) {
return { abort: true, reason: 'email is invalid' };
}
return { document: { ...event.document, email: event.document.email.toLowerCase() } };
};05 · Realtime
Suscríbete a una colección y recibe inserts, updates y deletes al instante. Cada evento pasa por la política de lectura de quien escucha.
const orders = grove.collection('orders');
const stop = orders.subscribe('*', (event) => {
console.log(event.type, event.document);
});06 · Vector
Genera embeddings al escribir y busca por similitud, con los mismos filtros y permisos que cualquier lectura. Bases de conocimiento para RAG incluidas.
const hits = await grove.collection('products').search({
text: 'waterproof hiking boots',
limit: 8,
});
// ranked closest first, filtered by the same read policyUn proyecto, seis piezas
01 · Auth
Email y contraseña, proveedores OAuth, TOTP con códigos de respaldo, verificación de email y reset de contraseña. Tus usuarios viven en tu base de datos.
02 · Data API
Cada colección tiene REST y GraphQL. Nada se puede leer hasta que escribas una política, y la política entra en la consulta de Mongo, así que tus índices siguen sirviendo.
03 · Storage
Buckets, carpetas y enlaces firmados, sobre storage compatible con S3. Público o privado por bucket.
04 · Funciones
Triggers de base de datos, cron y endpoints HTTP propios. Corren en un worker aislado, sin secretos, y llegan a tus datos solo a través de las mismas políticas.
05 · Realtime
Suscríbete a una colección y recibe inserts, updates y deletes al instante. Cada evento pasa por la política de lectura de quien escucha.
06 · Vector
Genera embeddings al escribir y busca por similitud, con los mismos filtros y permisos que cualquier lectura. Bases de conocimiento para RAG incluidas.
const grove = createClient({ baseUrl, projectId: 'shop' });
await grove.auth.register('ada@shop.dev', 'hunter22', 'Ada');
const user = await grove.auth.login('ada@shop.dev', 'hunter22');
// MFA on? login resolves { mfaRequired: true }
await grove.auth.verifyMfa('481207');// policies/orders.json — $and'ed into every query
{
"list": { "filter": { "ownerId": "$auth.uid" } },
"create": { "validate": "document.total > 0" },
"update": { "immutableFields": ["ownerId"] }
}
const mine = await grove.collection('orders').find({ limit: 20 });await grove.storage.upload('avatars', 'ada.png', file, 'image/png');
const { url } = await grove.storage.signUrl('avatars', 'ada.png', 3600);// functions/normalize-email.ts — a pre hook, sandboxed
export default async (event, ctx) => {
if (!event.document.email?.includes('@')) {
return { abort: true, reason: 'email is invalid' };
}
return { document: { ...event.document, email: event.document.email.toLowerCase() } };
};const orders = grove.collection('orders');
const stop = orders.subscribe('*', (event) => {
console.log(event.type, event.document);
});const hits = await grove.collection('products').search({
text: 'waterproof hiking boots',
limit: 8,
});
// ranked closest first, filtered by the same read policyMíralo en acción
De un proyecto vacío a un agente construyendo el backend.
La IA diseña tu backend: una tienda online en 1 minuto
Tutorial 2 · 0:54
0:37Tutorial 1Crea tu primer backend en 30 segundos
0:54Tutorial 2IALa IA diseña tu backend: una tienda online en 1 minuto
0:34Tutorial 3Colecciones y esquemas: tu base de datos con API al instante
0:27Tutorial 4Políticas de acceso: seguro por defecto
0:27Tutorial 5Autenticación de usuarios: login, proveedores y roles
0:20Tutorial 6Almacenamiento de archivos: buckets, subidas y URLs firmadas
0:30Tutorial 7Funciones y endpoints: tu propia lógica sin servidores
0:27Tutorial 8Claves de API y explorador: conecta tu servidor y prueba tu API
0:21Tutorial 9IAServidor MCP: construye tu backend desde Claude, Codex o Cursor9 videos · unos 5 minutos
Cómo funciona
En el dashboard, o en local con un comando. Cada proyecto tiene su propia base de datos.
Define colecciones con un JSON schema y escribe una política por operación. Mira lo que vería un usuario antes de publicar.
Con el SDK, REST o GraphQL. Genera un cliente tipado desde tu schema con grove gen.
Para equipos que publican
Conecta un proyecto a tu cluster de Atlas. Los datos del sistema quedan aparte de los tuyos.
Dev y producción por proyecto, con configuración que promueves entre ellos.
Todo el backend en memoria para desarrollar, con datos semilla que persisten.
grove dev, seed, pull, push y gen: todo lo que un agente necesita para correr en local y publicar configuración.
Keys con alcance para servidores, roles para tu equipo y roles de usuario final para tu app.
Exporta todo el proyecto como un bundle que commiteas, e impórtalo donde quieras.
Sí, ese es el plan. Publicaremos el código cuando estemos seguros de que funciona bien, es seguro y está listo para que la comunidad construya sobre él. Mientras tanto puedes empezar en el plan gratis o correrlo en local con la CLI.
No. Por defecto los proyectos corren en nuestro cluster. Puedes conectar el tuyo al crear un proyecto, y los entornos pueden compartirlo con otra base de datos.
Un proyecto con dos entornos, 512 MB de storage, 100.000 ejecuciones de funciones al mes y 10.000 vectores. Sin tarjeta.
Cada colección está cerrada hasta que tiene una política. Una política es un filtro de Mongo más validación CEL opcional por operación, añadida a cada consulta en el servidor.
Casi todo lo que haces en el dashboard. El servidor MCP tiene 114 tools: colecciones, schemas, políticas, funciones con tests y rollback, storage, usuarios, roles, bases de conocimiento y webhooks. Arráncalo en modo solo lectura si solo quieres que mire.
Sí. La CLI levanta todo el backend en memoria con un enlace al dashboard, sin cuenta ni archivo de configuración.
Empieza en el plan gratis, conecta tu agente, o córrelo en local ahora mismo.
O córrelo en local, sin cuenta
npx -y @groveback/cli@latest dev --seed --persist