ixiclinicDocs
Desarrolladores

Setup local

Cómo clonar, configurar y levantar el monorepo ixiclinic en tu máquina.

Esta guía te lleva de un clon recién hecho a tener el stack completo corriendo en local.

Prerrequisitos

  • Node.js ≥ 18 (el repo declara engines.node >= 18.0.0).
  • pnpm 9.15.9 — la versión está fijada en packageManager. La forma recomendada es habilitar Corepack: corepack enable && corepack prepare pnpm@9.15.9 --activate.
  • PostgreSQL — una base accesible vía DATABASE_URL (local o gestionada).
  • Solo si vas a tocar ixiclinic Connect (bridge/): Bun (para compilar el binario; el dev usa tsx).
  • Solo si vas a tocar ixiclinic Desktop (ixiclinic-desktop/): Rust + Bun + los prerrequisitos de Tauri.

Pasos

# 1. Clonar e instalar
git clone <repo> ixiclinic
cd ixiclinic
pnpm install            # instala todo el workspace

# 2. Variables de entorno del API
cp .env.example apps/api/.env.local
#   Edita apps/api/.env.local y rellena al menos:
#   DATABASE_URL, JWT_SECRET (≥32), JWT_REFRESH_SECRET (≥32)

# 3. Preparar la base de datos (desde la raíz)
pnpm --filter @ixiclinic/api db:migrate    # aplica las migraciones
pnpm --filter @ixiclinic/api db:seed       # opcional: datos de demo

# 4. Levantar todo
pnpm dev

Nota: El API carga su configuración desde apps/api/.env.local (ver apps/api/src/config/env.ts, que hace config({ path: '.env.local' })). El .env.example de la raíz es la plantilla, pero el archivo efectivo que lee el API es apps/api/.env.local.

Variables de entorno

El API valida sus variables con Zod al arrancar (apps/api/src/config/env.ts). Si falta una requerida o no cumple la longitud mínima, el proceso aborta con un mensaje claro.

VariableRequeridaDefaultNotas
DATABASE_URLCadena de conexión PostgreSQL
JWT_SECRETMínimo 32 caracteres
JWT_REFRESH_SECRETMínimo 32 caracteres
PORTNo5000Puerto del API
HOSTNo0.0.0.0Host de escucha
NODE_ENVNodevelopmentdevelopment · production · test
CORS_ORIGINSNohttp://localhost:3000Lista separada por comas
GITHUB_RELEASES_TOKENNoPAT para proxyar releases privados (Desktop/Connect)
GITHUB_RELEASES_REPONo(vacío)Repo owner/repo de releases a proxyar (Desktop/Connect)

Nota: GITHUB_RELEASES_TOKEN y GITHUB_RELEASES_REPO son opcionales: alimentan el proxy de descargas de ixiclinic Desktop / Connect. Sin el token, esos endpoints responden 503 con un mensaje explicativo. Configúralos solo si vas a servir esos binarios.

El frontend usa NEXT_PUBLIC_API_URL (apps Next.js) y VITE_API_URL (lab-site); ambos apuntan por defecto a http://localhost:5000.

Puertos de desarrollo

pnpm dev levanta todos los servidores a la vez:

AppPuerto
apps/admin3000
apps/console3001
apps/portal3002
apps/api5000
apps/lab-site5173
apps/landing5174
apps/docs5175

Levantar una sola app

Para no arrancar todo el stack, usa el filtro de pnpm:

pnpm --filter @ixiclinic/api dev
pnpm --filter @ixiclinic/admin dev
pnpm --filter @ixiclinic/console dev
pnpm --filter @ixiclinic/portal dev
pnpm --filter @ixiclinic/landing dev
pnpm --filter @ixiclinic/lab-site dev
pnpm --filter @ixiclinic/docs dev

Scripts de raíz

pnpm dev          # turbo run dev (todos los servidores)
pnpm build        # turbo run build
pnpm lint         # turbo run lint
pnpm typecheck    # turbo run typecheck
pnpm format       # prettier sobre **/*.{ts,tsx,md,json}
pnpm clean        # turbo run clean + borra node_modules y .turbo

Scripts de base de datos (desde apps/api)

pnpm db:generate   # genera migraciones Drizzle desde el esquema
pnpm db:migrate    # aplica migraciones (drizzle-kit migrate)
pnpm db:push       # empuja el esquema directo (solo dev)
pnpm db:studio     # abre Drizzle Studio
pnpm db:seed       # carga datos de demo
pnpm test          # corre los tests con vitest

Para el detalle del esquema, los entornos de PostgreSQL (dev vs producción) y las particularidades de las migraciones, ver Base de datos.

On this page