La plataforma Evora utiliza PostgreSQL administrado a través de Drizzle ORM para garantizar tipado estricto desde la base de datos hasta el cliente React.


Resumen (~30 tablas)

DominioTablas
Cuentas y authusers, sessions, accounts, verifications
Rolesroles, role_permissions
Organizacionesorganizations, organization_members
Eventosevents, event_attachments, categories
Inscripcionesregistrations, notifications, tickets, ticket_scan_logs
Pagospayments, payment_methods, event_payment_methods
Transportetransport_routes, transport_stops, transport_bookings
Facturaciónplans, subscriptions, subscription_payments, platform_transactions
Logs y notificacionesactivity_logs, broadcast_logs, broadcast_jobs, push_subscriptions
Plataformaplatform_settings

Definiciones en src/lib/db/schema/.


Entidades principales

users

Perfil central: email, role (super_admin, admin, organizer, member), organizationId, phone, OTP (emailVerified), etc.

events

Eventos con organizerId, organizationId, slug, fechas, status (draft, published, cancelled, completed), price, hasTransport, viewCount.

registrations / tickets

Inscripción usuario-evento; tickets con firma criptográfica (TICKET_SIGNING_KEY) y logs de escaneo.

organizations

Entidades multi-tenant con inviteCode para que organizadores se unan desde registro o panel.

subscriptions / plans

Planes SaaS por organizador o entidad; renovaciones vía cron /api/cron/subscriptions.


Relaciones Drizzle

export const paymentsRelations = relations(payments, ({ one }) => ({
  registration: one(registrations, {
    fields: [payments.registrationId],
    references: [registrations.id],
  }),
  user: one(users, {
    fields: [payments.userId],
    references: [users.id],
  }),
}));

Export y backup JSON (v2.0)

exportFullDatabase (panel super admin y pnpm run db:backup) incluye todas las tablas listadas arriba.

{
  "timestamp": "2026-07-06T12:00:00.000Z",
  "version": "2.0",
  "data": {
    "users": [],
    "events": [],
    "organizations": []
  }
}

Implementación: src/lib/db/export-full-database.ts.


Migraciones

Ver Estrategia de migraciones para db:push y db:migrate.