Files

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

  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