Ir al contenido

Seeder

El seeder (prisma/seed.ts) crea datos de prueba para desarrollo local. Es la forma más rápida de probar la app con un entorno realista: usuarios, workspaces, tableros Kanban poblados y un backlog con 40 tareas.

El seeder se ejecuta con tsx y está configurado en prisma.config.ts:

export default {
schema: "prisma/schema.prisma",
datasource: {
url: process.env.DATABASE_URL!,
},
migrations: {
seed: "tsx prisma/seed.ts",
},
} satisfies PrismaConfig;

Desde la raíz del repositorio (la carpeta que contiene syncro/, p. ej. Syncro/):

Ventana de terminal
cd syncro/apps/web
npx prisma db seed

Salida esperada:

Seeding database...
User created: demo@syncro.app
User created: maria@syncro.app
User created: carlos@syncro.app
User created: ana@syncro.app
User created: pedro@syncro.app
Workspace created: Proyecto Alpha
Workspace created: Diseño UX
Workspace created: Marketing Digital
Seed completed successfully!

Sigue estos pasos para levantar la app con los datos de demostración:

Herramienta Versión
Node.js >= 20.9
pnpm 9
Docker Cualquiera reciente (para PostgreSQL local)
Ventana de terminal
cd syncro
pnpm install

postinstall ejecuta prisma generate automáticamente. Todos los comandos siguientes asumen que partes de la raíz del repositorio (la carpeta que contiene syncro/, p. ej. Syncro/).

Ventana de terminal
docker run --name syncro-pg \
-e POSTGRES_USER=syncro \
-e POSTGRES_PASSWORD=syncro \
-e POSTGRES_DB=syncro \
-p 5432:5432 \
-d postgres:16

Si el contenedor ya existe pero está parado: docker start syncro-pg.

Ventana de terminal
cd syncro/apps/web
cp ../../.env.example .env

Valores por defecto válidos para local:

DATABASE_URL="postgresql://syncro:syncro@localhost:5432/syncro?schema=public"
AUTH_URL="http://localhost:3000"
AUTH_SECRET="generar con: npx auth secret"

AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET solo se necesitan para Google OAuth. Con los datos demo basta el login por email/contraseña.

Ventana de terminal
cd syncro/apps/web
npx prisma migrate deploy # crea el esquema
npx prisma db seed # carga los datos demo
Ventana de terminal
cd syncro
pnpm dev:fallback

O arranca solo la web: cd apps/web && pnpm run dev.

Cada bloque de comandos es independiente. Si ya estás dentro de syncro/apps/web, omite el prefijo cd y ejecuta directamente el comando de Prisma.

Todas las cuentas usan la contraseña demo1234:

Email Nombre Rol principal
demo@syncro.app Usuario Demo OWNER de Proyecto Alpha y Diseño UX
maria@syncro.app María García OWNER de Marketing Digital, ADMIN de Diseño UX
carlos@syncro.app Carlos López Miembro de Proyecto Alpha y Marketing Digital
ana@syncro.app Ana Martínez Miembro de Diseño UX y Marketing Digital
pedro@syncro.app Pedro Ramírez Miembro de Proyecto Alpha, Diseño UX y Marketing Digital

Los roles de membresía (OWNER / ADMIN / MEMBER) se definen por workspace, no a nivel de usuario.

Workspace Slug Miembros Columnas del board Tareas tablero Tareas backlog
Proyecto Alpha proyecto-alpha demo (OWNER), maria, carlos, pedro Por hacer → En progreso → En revisión → Completado 9 16
Diseño UX diseno-ux demo (OWNER), maria (ADMIN), ana, pedro Descubrimiento → Diseño → Prototipado → Testing → Entregado 6 12
Marketing Digital marketing-digital maria (OWNER), demo, carlos, ana, pedro Pendiente → En producción → En revisión → Publicado 8 12

El backlog contiene 40 tareas diseñadas para mostrar todas las variantes de la UI:

  • Prioridades: las 4 urgencias están representadas — LOW (10), MEDIUM (12), HIGH (11) y URGENT (7).
  • Asignaciones: 21 tareas asignadas a distintos miembros y 19 sin asignar, para probar los filtros y dropdowns.
  • Descripciones: mezcla de tareas sin descripción, con descripciones cortas de 1 línea y con descripciones largas de 2-3 párrafos.
  • Contenido realista: bugs, deuda técnica, refactors, campañas de marketing y auditorías UX coherentes con cada proyecto.
  • Actividad: cada tarea de backlog registra TASK_CREATED y, si tiene asignado, TASK_ASSIGNED en el historial.

Cada tarea de backlog tiene columnId: null, por lo que aparece en la página Backlog del workspace y puede moverse al tablero.

El seeder también alimenta el Calendario:

  • Asigna dueDate / startDate y estimatedHours a varias tareas de Proyecto Alpha.
  • Crea imputaciones demo (TimeEntry) sobre esas tareas solo si no existe ninguna todavía (para no duplicar con tus propias pruebas).

Así, al abrir el calendario tienes tareas programadas, horas por día y métricas de desviación listas para ver.

El seeder usa prisma.user.upsert y prisma.workspace.upsert por email/slug, por lo que los usuarios y workspaces no se duplican al re-ejecutarlo. Los createMany de miembros incluyen skipDuplicates: true como red de seguridad.

Atención: los boards, columnas y tareas siempre se crean de nuevo en cada ejecución (no hay upsert para ellos). Si ejecutas el seed dos veces sobre la misma base, tendrás boards/tareas duplicados. Para un estado limpio usa prisma migrate reset.

Ventana de terminal
cd syncro/apps/web
npx prisma migrate reset

Esto borra toda la base de datos, vuelve a aplicar las migraciones y ejecuta el seeder automáticamente. Es la forma recomendada de volver a un estado demo limpio.