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.
Configuración
Sección titulada «Configuración»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;Ejecutar
Sección titulada «Ejecutar»Desde la raíz del repositorio (la carpeta que contiene syncro/, p. ej. Syncro/):
cd syncro/apps/webnpx prisma db seedSalida esperada:
Seeding database...User created: demo@syncro.appUser created: maria@syncro.appUser created: carlos@syncro.appUser created: ana@syncro.appUser created: pedro@syncro.appWorkspace created: Proyecto AlphaWorkspace created: Diseño UXWorkspace created: Marketing DigitalSeed completed successfully!Guía de inicio con datos demo
Sección titulada «Guía de inicio con datos demo»Sigue estos pasos para levantar la app con los datos de demostración:
1. Requisitos
Sección titulada «1. Requisitos»| Herramienta | Versión |
|---|---|
| Node.js | >= 20.9 |
| pnpm | 9 |
| Docker | Cualquiera reciente (para PostgreSQL local) |
2. Instalar dependencias
Sección titulada «2. Instalar dependencias»cd syncropnpm install
postinstallejecutaprisma generateautomáticamente. Todos los comandos siguientes asumen que partes de la raíz del repositorio (la carpeta que contienesyncro/, p. ej.Syncro/).
3. Levantar PostgreSQL (Docker)
Sección titulada «3. Levantar PostgreSQL (Docker)»docker run --name syncro-pg \ -e POSTGRES_USER=syncro \ -e POSTGRES_PASSWORD=syncro \ -e POSTGRES_DB=syncro \ -p 5432:5432 \ -d postgres:16Si el contenedor ya existe pero está parado: docker start syncro-pg.
4. Variables de entorno
Sección titulada «4. Variables de entorno»cd syncro/apps/webcp ../../.env.example .envValores 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_SECRETsolo se necesitan para Google OAuth. Con los datos demo basta el login por email/contraseña.
5. Migraciones + seed
Sección titulada «5. Migraciones + seed»cd syncro/apps/webnpx prisma migrate deploy # crea el esquemanpx prisma db seed # carga los datos demo6. Arrancar
Sección titulada «6. Arrancar»cd syncropnpm dev:fallbackO 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 prefijocdy ejecuta directamente el comando de Prisma.
- Web app → http://localhost:3000
- Docs → http://localhost:3001
Usuarios demo
Sección titulada «Usuarios demo»Todas las cuentas usan la contraseña demo1234:
| 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.
Workspaces y datos creados
Sección titulada «Workspaces y datos creados»| 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 (40 tareas)
Sección titulada «El backlog (40 tareas)»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_CREATEDy, si tiene asignado,TASK_ASSIGNEDen 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.
Time tracking (v0.5.0)
Sección titulada «Time tracking (v0.5.0)»El seeder también alimenta el Calendario:
- Asigna
dueDate/startDateyestimatedHoursa 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.
Idempotencia
Sección titulada «Idempotencia»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.
Resetear datos
Sección titulada «Resetear datos»cd syncro/apps/webnpx prisma migrate resetEsto 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.