118 lines
5.4 KiB
Markdown
118 lines
5.4 KiB
Markdown
# 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
|