Una base para construir tu próxima aplicación

Un template fullstack reutilizable: API GraphQL, panel de administración, portal web y app móvil nativa, con una demo local de punta a punta.

Terminal

Prepara la demo

bun run demo:setup

Levanta la API y las apps web

bun dev

Cómo se conectan las piezas

Tres clientes hablan con una sola API GraphQL, que es la única que toca los datos.

Clientes

  • AdminWeb
  • PortalWeb
  • MobileNativa

API

API GraphQLFastify y GraphQL YogaBetter Auth: sesiones y permisos

Datos

  • PostgreSQLDatos, vía Prisma
  • S3 local (RustFS)Imágenes con URLs prefirmadas
  • RedisLímite de tasa y readiness

Las imágenes no pasan por la API: ella firma la URL y el cliente sube (PUT) y lee (GET) directo en el storage.

Admin, Portal y Mobile envían consultas y mutaciones GraphQL a una sola API, construida con Fastify y GraphQL Yoga, con Better Auth para sesiones. La API guarda datos en PostgreSQL con Prisma, firma URLs para el storage compatible con S3 (RustFS en local) y usa Redis para el límite de tasa. Las imágenes no pasan por la API: los clientes las suben y las leen directo en el storage con esas URLs prefirmadas.

Tres aplicaciones sobre la misma base

Cada tipo de usuario tiene su propia aplicación, con los mismos tokens de diseño y el mismo contrato GraphQL.

  • Admin

    Web

    Panel de moderación de publicaciones y cuentas.

    • ADMIN
    • Publica un post o lo pasa a borrador
    • Borra publicaciones
    • No edita el contenido de otras personas
    Abrir admin
  • Portal

    Web

    Espacio de trabajo de quien publica.

    • PARTNER
    • Crea, edita y borra sus propios posts
    • Sube una imagen por post
    • Elige entre borrador y publicado
    Abrir portal
  • Mobile

    Nativa

    App Expo para iOS y Android.

    • PARTNER
    • CLIENT
    • PARTNER escribe en «Mis posts»
    • CLIENT lee el feed de posts publicados
    • Mismo sistema visual que la web

    Sin URL: corre en tu simulador o dispositivo con un development client, no en Expo Go.

Cómo correr la demo local

Postgres, Redis y un S3 local corren en Docker Compose. Tres comandos dejan login y posts funcionando en las tres aplicaciones.

Cuentas de ejemplo

Se generan en tu máquina y no se publican aquí. Para saber cómo obtenerlas, consulta la guía del fixture local:

docs/operations/local-dev-fixture.md

  1. Deja todo listo: variables de entorno, Docker Compose, migraciones y datos de ejemplo.

    bun run demo:setup

  2. Levanta la API, admin, portal y esta landing.

    bun dev

  3. Inicia la app móvil. Requiere un development client instalado.Opcional

    bun run dev:mobile

Tecnologías usadas

Un jey con Bun y Turborepo. Un solo paquete de tokens tematiza Mantine en web y Unistyles en móvil, en claro y oscuro.

  • API

    • FastifyServidor HTTP de la API
    • GraphQL YogaServidor GraphQL con esquema SDL y codegen
    • Better AuthIdentidad con email y contraseña
    • PrismaORM y migraciones
  • Datos y storage

    • PostgreSQLBase de datos principal
    • RedisLímite de tasa y readiness
    • S3 local (RustFS)Storage compatible con S3, con URLs prefirmadas
  • Web

    • ReactInterfaz de admin y portal
    • ViteServidor de desarrollo y build
    • MantineComponentes, vía el paquete web-ui
  • Móvil

    • ExpoApp nativa para iOS y Android
    • Expo RouterNavegación por archivos
    • UnistylesEstilos con los tokens compartidos
  • Landing

    • AstroSitio estático, el que estás viendo
  • JEY

    • BunRuntime y gestor de paquetes
    • TurborepoTareas y caché
    • TypeScriptTipado en todas las piezas

Un harness de agentes de IA incluido

El jey viene con navori: un orquestador que reparte el trabajo entre agentes especializados, con skills, compuertas de calidad y hooks que frenan acciones destructivas. Está versionado en el repo, no en tu máquina.

Agentes especializados

  • OrchestratorDescompone, coordina y sintetiza; el cambio pasa por implementer y reviewer
  • ImplementerEjecuta una tarea acotada y deja la compuerta de calidad en verde
  • ReviewerAprueba o rechaza el diff contra las reglas del repo
  • ScoutReconocimiento de solo lectura con evidencia citada
  • AuditorAuditoría con veredicto: causa raíz y plan, sin editar código
  • ArchitectPropone qué construir y por qué cuando hay una decisión de arquitectura
  • PublisherRedacta los commits y abre el PR tras la aprobación
  • ScribeConvierte la evidencia verificada en artefactos Markdown
  • Skills

    Procedimientos reutilizables que los agentes aplican según la tarea.

    • Resolver tickets: del problema verificado al veredicto
    • Diseñar soluciones y planes antes de implementar
    • Depurar fallos y localizar código antes de tocarlo
  • Compuertas y recibos

    Nada se da por terminado sin evidencia.

    • Lint, formato y typecheck antes de cada commit
    • Un recibo del reviewer respalda la creación del PR
    • El pre-commit versionado corre ast-grep y jscpd sobre lo staged
  • Hooks de seguridad

    Reglas que se ejecutan solas, sin depender de que alguien las recuerde.

    • Bloquean comandos destructivos antes de ejecutarlos
    • Piden confirmación antes de abrir un PR o publicar comentarios
    • Marcan archivos generados que alguien editó a mano

Funciona en varios hosts

  • Claude Code
  • Codex
  • Pi

Cada host tiene su propia configuración generada desde el mismo navori.config.json; en Pi corren implementer, reviewer y scout.