Royal Clean CRM · Documentación
Desarrollo

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 -d

Arranca 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.

Copia la configuración

cp .env.example .env

El 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 dev

Siembra datos de prueba

pnpm db:seed

Crea 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 dev

Cuentas de prueba

La semilla crea seis cuentas ficticias, cada una pensada para mostrar un caso distinto:

CuentaRolCon qué te encuentras
Administración 1AdministraciónRoyal Clean
Administración 2AdministraciónRoyal Clean
Administración 3AdministraciónAdemás, superadministración: gestiona cuentas
Campo 1Personal de campoTiene un servicio en curso
Campo 2Personal de campoTiene tarifa propia de ₡5.500/h
Campo 3Personal de campoSin 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.

On this page