5.4 KiB
5.4 KiB
Planlink - Bitacora y planers
Objetivo
Construir desde cero una app tipo Planka (kanban colaborativo) usando React + Node + Tailwind + MariaDB, sin TypeScript y con arquitectura modular. Este archivo se usara para registrar cada paso validado y los planers que la app va a manejar.
Referencia funcional (Planka)
Planka ofrece tableros kanban colaborativos con proyectos, boards, listas y cards, drag and drop, actualizacion en tiempo real, markdown en descripciones, notificaciones y soporte multilenguaje. Esta lista es la referencia base para el alcance inicial. Ver repositorio oficial para mas detalles.
Stack confirmado
- Frontend: React (sin TS) + Tailwind
- Backend: Node.js (sin TS)
- DB: MariaDB
- Realtime: WebSocket (Socket.io) desde el inicio
Autenticacion (MVP)
- Email/password basico para acceder a la app
- Acceso al asistente IA solo despues de login
- Google OAuth (opcional, pendiente de confirmacion)
Arquitectura propuesta (modular)
- client/: app React
- server/: API Node
- db/: migraciones y seeders
- docs/: notas tecnicas (opcional)
Modulos iniciales
- Auth y usuarios (email/password, roles basicos)
- Proyectos (un proyecto es la unidad principal, sin workspaces)
- Invitaciones a proyecto (owner invita usuarios)
- Boards
- Listas
- Cards (tareas)
- Etiquetas
- Comentarios
- Adjuntos
- Actividad / historial
- Realtime (eventos por board)
- Asistente de planers (tipo Codex, para generar planes desde la app)
- Modo A: plantillas predefinidas (sin IA)
- Modo B: IA via OpenAI API (server-side, sin login de usuario)
- UI web integrada en la app (chat + planes guardados)
Modelo de datos (borrador)
- users
- projects
- project_members
- project_invites
- boards
- lists
- cards
- card_members
- labels
- card_labels
- comments
- attachments
- activities
- sessions (o tokens)
- planner_requests
- planner_outputs
API (borrador)
- POST /auth/register, /auth/login, /auth/logout
- GET /auth/google, /auth/google/callback
- GET /me
- CRUD /projects, /boards, /lists, /cards
- POST /projects/:id/invites
- POST /projects/:id/members
- POST /cards/:id/members
- POST /cards/:id/labels
- POST /cards/:id/comments
- POST /cards/:id/attachments
- GET /boards/:id/activity
- POST /planner/requests
- GET /planner/requests/:id
- POST /planner/requests/:id/run (ejecuta plantilla o IA)
Realtime (borrador)
- Namespace por board
- Eventos: list:create, list:update, list:delete, card:create, card:update, card:move, comment:create, label:update
Pasos validados (bitacora)
- 2026-03-05: Se confirma stack y referencia funcional tipo Planka. Se crea esta bitacora.
- 2026-03-05: Alcance MVP decidido: auth email/password, proyectos sin workspaces, invitaciones por owner, roles owner/admin/member, realtime con Socket.io, asistente de planers.
- 2026-03-05: Asistente de planers tendra dos modos: plantillas sin IA y generacion con OpenAI API (server-side).
- 2026-03-05: Se agrega Google OAuth como opcion de login (flujo web).
- 2026-03-05: Se crea BD planlinked y usuario planlinked con permisos completos. Se aplica esquema v1 en MariaDB.
- 2026-03-05: Se implementa backend base con auth email/password, JWT cookie, y CRUD inicial para proyectos/boards/listas/cards + planner (plantilla).
- 2026-03-05: Frontend base con login/registro, listado y creacion de proyectos, y modo claro/oscuro.
- 2026-03-05: Se configura .env de server/client con datos MariaDB planlinked.
- 2026-03-05: UI conecta proyectos -> boards -> listas -> cards con endpoints reales.
- 2026-03-05: Asistente de planers con plantillas y streaming IA via OpenAI (backend + UI).
- 2026-03-05: Se agrega switch AI_ENABLED en .env y prompt maestro en docs/PLANNER_PROMPT.md.
- 2026-03-05: Se agrega flujo para pegar un plan Markdown y guardarlo en Planlink.
- 2026-03-05: Se agrega modal para generar prompt guiado y area para pegar el resultado.
- 2026-03-05: Se agrega historial y edicion de planers guardados (UI + endpoints).
- 2026-03-05: Se agrega drag & drop basico de cards entre listas con persistencia de posicion.
- 2026-03-05: Se agrega reordenamiento de cards dentro de la misma lista y entre listas (persistencia de posiciones).
- 2026-03-05: Se agrega drag & drop de listas y modal de card (titulo, descripcion, fecha, comentarios).
- 2026-03-05: Se agrega soporte basico de etiquetas y miembros en cards (UI + endpoints).
- 2026-03-05: Se agrega miembros de proyecto e invitaciones basicas (UI + endpoints).
- 2026-03-05: Se agrega soporte de adjuntos (UI + endpoints).
- 2026-03-05: Se agrega realtime basico (Socket.io) para listas y cards en UI.
- 2026-03-05: Se agrega actividad de board y notificaciones basicas (toast).
- 2026-03-05: Se agrega gestion de invitaciones (listar, revocar) en UI.
- 2026-03-05: Se agrega aceptacion de invitaciones por token en UI.
- 2026-03-05: Se agrega busqueda simple de cards por titulo en UI.
- 2026-03-05: Se agregan filtros de cards por etiqueta y miembro (con mapeo por card).
- 2026-03-05: Se endurecen permisos backend por rol (boards/listas/labels solo admin/owner).
- 2026-03-05: Se crea plan de pruebas en docs/TEST_PLAN.md.
- 2026-03-05: Se agregan restricciones basicas por rol en UI (member limita acciones).
Siguiente paso propuesto
- Crear estructura base del repo (client/server/db) y configuracion inicial.
- Ajustar modelo de datos segun MVP (sin workspaces).
- Esqueleto backend + frontend con modo claro/oscuro.
Planers (a construir y mantener)
- (pendiente) planers de proyectos y tableros