ixiclinicDocs
DesarrolladoresApps del monorepo

Console

Panel SaaS interno de ixiclinic — mismo stack que el admin pero para gestionar clientes, planes, demos y organizaciones. Cookies saas- y endpoints /api/saas/*.

La console (apps/console) es el panel interno del equipo ixiclinic para administrar el negocio SaaS: clientes (tenants), suscripciones y planes, solicitudes de demo, organizaciones y membresías. No la usa ningún laboratorio: es de uso interno.

StackNext.js 16 (App Router), Tailwind 4, shadcn/ui
Puerto local3001
Producciónconsole.ixiclinic.com (Vercel)
Paquete@ixiclinic/console
AudienciaEquipo interno (superadmin)

Comparte el stack y las convenciones del admin (Next.js 16 App Router, Tailwind 4, shadcn/ui, react-hook-form + Zod, @tanstack/react-table, recharts, sonner, server actions). Las diferencias están en la autenticación y los endpoints.

Route group (saas) (apps/console/src/app/)

GrupoContenido
(auth)/login (sin layout de app).
(saas)/Workspace interno, protegido por requireAuth() en su layout.tsx.

Secciones del (saas):

SecciónPara qué
dashboardMétricas globales del SaaS.
clientsClientes/tenants (clients/[id] para el detalle).
subscriptionsPlanes y suscripciones.
demosPipeline de solicitudes de demo (las crea la landing).
organizationsOrganizaciones y enlace con tenants (organizations/[id]).
membershipsMembresías de usuarios.
entitiesBúsqueda transversal de entidades.
settingsAjustes del SaaS.

Auth y comunicación con el API

La console usa cookies con prefijo saas- (saas-accessToken, saas-refreshToken) para no colisionar con las cookies del admin de tenant. Todos los endpoints están bajo /api/saas/* y exigen el rol superadmin (preHandler requireSuperadmin en el API).

El cliente HTTP está en apps/console/src/lib/api-client.ts, con el mismo patrón server-side que el admin (apiGet, apiPost, apiPatch, apiDelete) y refresco automático de token contra /api/saas/auth/refresh. El gateo de sesión lo hace requireAuth() (apps/console/src/lib/auth.ts), invocado en el layout.tsx del grupo (saas).

Las server actions viven en apps/console/src/actions/: auth.ts, clients.ts, demos.ts, entities.ts, memberships.ts, organizations.ts, settings.ts, subscriptions.ts.

Nota: La auth de superadmin es independiente de la de tenant. En el JWT, el superadmin lleva valores centinela tenantId: '__saas__' y branchId: '__saas__', y los usuarios se guardan en la tabla saas_users. Ver Autenticación.

Build y despliegue

Despliega automáticamente en Vercel al hacer push a main. Ver Operaciones.

On this page