Entorno local
Levantar el sistema completo en tu máquina, con datos de prueba, en cinco comandos.
Lo que necesitas antes
- Node.js 22 o superior y pnpm 11.
- Docker, para PostgreSQL y el almacenamiento de objetos.
- Nada más. No hace falta cuenta de Cloudflare ni ningún servicio contratado: el entorno local usa MinIO, que habla el mismo protocolo que Cloudflare R2.
Los cinco comandos
Levanta la base y el almacenamiento
docker compose up -dArranca PostgreSQL 17 y MinIO, y crea el bucket privado de evidencia.
El puerto es el 5433, no el 5432
Es deliberado: así no choca con un PostgreSQL que ya tengas instalado en la máquina.
Instala las dependencias
pnpm installCopia la configuración
cp .env.example .envEl archivo de ejemplo ya viene apuntando a la base y al almacenamiento que levantó Docker. No contiene ningún secreto real: sólo valores de desarrollo.
Aplica las migraciones
pnpm exec prisma migrate devSiembra datos de prueba
pnpm db:seedCrea clientes, propiedades, personal, el catálogo de tareas y servicios en todos los estados posibles: uno en curso con su cronómetro corriendo, otros completados con evidencia, uno cancelado, incidentes e insumos.
La semilla es repetible: puedes ejecutarla las veces que quieras y siempre deja la base igual.
Después:
pnpm devCuentas de prueba
La semilla crea seis cuentas ficticias, cada una pensada para mostrar un caso distinto:
| Cuenta | Rol | Con qué te encuentras |
|---|---|---|
| Administración 1 | Administración | Royal Clean |
| Administración 2 | Administración | Royal Clean |
| Administración 3 | Administración | Además, superadministración: gestiona cuentas |
| Campo 1 | Personal de campo | Tiene un servicio en curso |
| Campo 2 | Personal de campo | Tiene tarifa propia de ₡5.500/h |
| Campo 3 | Personal de campo | Sin trabajo hoy: estado vacío |
El usuario exacto y la contraseña de cada una están en prisma/seed.ts, junto
a su definición — no se repiten aquí para no dejarlos indexados en un sitio
público.
Estas cuentas son de desarrollo
Comparten una contraseña conocida, escrita en el propio archivo de la semilla.
La semilla se niega a ejecutarse con NODE_ENV=production. Para crear la
primera cuenta real en un despliegue nuevo se usa pnpm admin:create, que pide
la contraseña por entrada estándar y nunca la escribe en ningún archivo.
Cosas que sorprenden la primera vez
El servidor de desarrollo se cuelga tras suspender el equipo. Reinícialo en lugar de diagnosticarlo.
Tras una migración hay que reiniciar el servidor de desarrollo. Mantiene en memoria el cliente de Prisma anterior y falla con «Unknown field» sobre una columna que sí existe.
pnpm db:seed borra las sesiones abiertas. Tendrás que volver a entrar.
prisma migrate reset está bloqueado para agentes. Es intencionado. Los
tests de integración usan migrate deploy y vacían las tablas con DELETE, que
además es lo que corre en producción.
server-only rompe en Vitest. Los tests de integración lo sustituyen por un
módulo vacío. Si creas un módulo compartido entre servidor y cliente, sepáralo
del módulo server-only.