Resumen de la Arquitectura
Arquitectura del Sistema
Sección titulada «Arquitectura del Sistema»Rebase es una plataforma full-stack con cuatro capas:
┌─────────────────────────────────────────────────────────────────┐│ Frontend Layer ││ React Admin UI • Custom Views • Plugins • Your App ││ @rebasepro/core • @rebasepro/ui • @rebasepro/studio │└───────────────────────────┬─────────────────────────────────────┘ │ HTTP + WebSocket ▼┌─────────────────────────────────────────────────────────────────┐│ Backend Layer ││ Hono HTTP Server • REST API • Auth • Storage • WS ││ @rebasepro/server-core │└───────────────────────────┬─────────────────────────────────────┘ │ Drizzle ORM ▼┌─────────────────────────────────────────────────────────────────┐│ Database Layer ││ PostgreSQL • Tables • RLS Policies • Realtime sync │└─────────────────────────────────────────────────────────────────┘Componentes Clave
Sección titulada «Componentes Clave»Sistema de Inicialización (Bootstrapper)
Sección titulada «Sistema de Inicialización (Bootstrapper)»El backend se inicializa a través de un sistema de inicialización basado en plugins. La lógica específica de la base de datos se desacopla en su propio paquete, y los inicializadores (bootstrappers) se encargan de la inicialización de la base de datos, la autenticación y los servicios internos.
import { createPostgresAdapter } from "@rebasepro/server-postgresql";
database: createPostgresAdapter({ connectionString: process.env.DATABASE_URL! })Las colecciones se resuelven automáticamente contra el inicializador configurado a través del registro interno de inyección de dependencias.
Registro de Colecciones
Sección titulada «Registro de Colecciones»El BackendCollectionRegistry es el índice en tiempo de ejecución de todas las colecciones, sus tablas PostgreSQL, enums y relaciones Drizzle. Se completa al iniciar a partir de sus definiciones de colección.
Servicio en Tiempo Real
Sección titulada «Servicio en Tiempo Real»La sincronización en tiempo real utiliza el mecanismo nativo LISTEN/NOTIFY de PostgreSQL:
- Ocurre una mutación de datos (inserción, actualización, eliminación)
- El backend emite una
NOTIFYen un canal - El
RealtimeServicerecibe la notificación - Transmite el cambio a todos los clientes WebSocket conectados
- Los componentes de React se vuelven a renderizar con los nuevos datos
Para implementaciones multi-instancia (por ejemplo, Cloud Run con múltiples réplicas), proporcione una connectionString en su PostgresBootstrapper para que todas las réplicas compartan la misma conexión LISTEN.
Registro de Almacenamiento
Sección titulada «Registro de Almacenamiento»Al igual que los controladores, los backends de almacenamiento se registran en un registro. Puede tener múltiples proveedores de almacenamiento (local, S3) y enrutar diferentes campos de archivo a diferentes backends usando storageId.
Mapa de Paquetes
Sección titulada «Mapa de Paquetes»| Paquete | Rol | Usado por |
|---|---|---|
@rebasepro/types | Interfaces de TypeScript para colecciones, propiedades, entidades, plugins | Todo |
@rebasepro/server-core | Inicialización del servidor backend, API REST, autenticación, almacenamiento, WebSocket | Backend |
@rebasepro/client | SDK del cliente — Transporte HTTP, WebSocket, autenticación | Frontend |
@rebasepro/core | Framework React — Scaffold, controladores, formularios, rutas, hooks | Frontend |
@rebasepro/ui | Librería de componentes de UI autónoma (Tailwind v4 + Radix) | Frontend |
@rebasepro/auth | Vistas de inicio de sesión, hooks del controlador de autenticación, gestión de usuarios | Frontend |
@rebasepro/studio | Editor de colecciones, consola SQL, consola JS, editor RLS, navegador de almacenamiento | Frontend |
@rebasepro/cli | CLI para generación de esquemas, migraciones de DB, generación de SDK | Herramientas de desarrollo |
@rebasepro/formex | Gestión ligera del estado de formularios de React | Frontend |
@rebasepro/data_enhancement | Plugin de autocompletado de campos impulsado por IA | Frontend |
@rebasepro/data_import_export | Importación y exportación de CSV/JSON/Excel | Frontend |
@rebasepro/schema_inference | Detección automática de esquemas a partir de datos de base de datos existentes | Backend/CLI |
Flujo de Datos
Sección titulada «Flujo de Datos»Flujo de Lectura
Sección titulada «Flujo de Lectura»- El usuario abre una colección en la interfaz de administración
- El SDK del cliente envía
GET /api/data/:slug+ abre una suscripción WebSocket - El backend consulta PostgreSQL a través de Drizzle ORM
- El transformador de datos deserializa los registros de la base de datos al formato de entidad
- La respuesta se envía al frontend, los componentes se renderizan
- WebSocket mantiene la vista sincronizada en tiempo real
Flujo de Escritura
Sección titulada «Flujo de Escritura»- El usuario edita una entidad en el formulario
- Se ejecutan las callbacks
beforeSave(validación, transformación) - El SDK del cliente envía
PUT /api/data/:slug/:id - El backend serializa los valores, ejecuta
UPDATEde Drizzle - Se ejecutan las callbacks
afterSave(efectos secundarios) - La transmisión
NOTIFYactiva la actualización de WebSocket a todos los clientes - Si el historial está habilitado, se registra una instantánea
Próximos Pasos
Sección titulada «Próximos Pasos»- Esquema como Código — El enfoque TypeScript-first
- Resumen del Backend — Configuración del servidor
- Colecciones — Defina su esquema de datos