# 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 1) Auth y usuarios (email/password, roles basicos) 2) Proyectos (un proyecto es la unidad principal, sin workspaces) 3) Invitaciones a proyecto (owner invita usuarios) 4) Boards 5) Listas 6) Cards (tareas) 7) Etiquetas 8) Comentarios 9) Adjuntos 10) Actividad / historial 11) Realtime (eventos por board) 12) 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