Herramienta de retrospectiva colaborativa en tiempo real. Permite a equipos crear tableros compartidos donde agregar notas y agruparlas durante sesiones de retrospectiva.
- Tableros en tiempo real sincronizados via WebSocket
- Creacion y union a tableros con contrasena
- Agregar, editar y eliminar notas
- Agrupar notas en categorias
- Reconexion automatica ante desconexiones
open-retro/
├── server/ # Servidor WebSocket (Bun + Elysia)
├── shared/ # Tipos compartidos
└── web-client/ # Frontend (Vue 3 + Vite)
docker compose up --build- Servidor:
http://localhost:3001 - Cliente:
http://localhost:5173
Los cambios en server/src/, web-client/src/ y shared/ se reflejan automáticamente en los contenedores (hot reload).
Cada servicio acepta la variable ENVIRONMENT para controlar el modo de ejecución:
| Valor | Servidor | Cliente |
|---|---|---|
develop (default) |
bun --watch src/server.ts |
vite dev server |
production |
bun src/server.ts |
vite build + vite preview |
Para cambiar el modo, editar docker-compose.yml:
environment:
ENVIRONMENT: "production"El servidor acepta las siguientes variables de entorno para su configuración:
| Variable | Descripción | Valor por defecto |
|---|---|---|
PORT |
Puerto en el que corre el servidor | 3001 |
CORS_ORIGINS |
Orígenes permitidos (separados por ;) |
* |
SESSION_TIME_LIMIT |
Tiempo máximo en segundos para una sesión (vencimiento) | Sin límite |
ADMIN_GRACE_SECONDS |
Tiempo de gracia en segundos tras el vencimiento antes de borrar datos | 60 |
MAX_USERS_PER_SESSION |
Límite de usuarios conectados por tablero | Sin límite |
Esto se puede configurar en el archivo docker-compose.yml bajo la sección environment del servicio server.
docker compose down -vDesde la raiz del proyecto, instalar dependencias e instalar los git hooks:
npm installEl script prepare se ejecuta automaticamente e instala el pre-commit hook via simple-git-hooks.
cd server
bun run dev # con hot reload
bun run start # sin watchcd web-client
npm run dev # servidor de desarrollo
npm run build # build de produccion
npm run lint # linter (oxlint + eslint)Los scripts de formato y linting se ejecutan desde la raiz y cubren todos los packages:
npm run format # formatea server/, shared/ y web-client/src/
npm run lint # oxlint sobre todos los packages
npm run lint:eslint # eslint (Vue/TS) sobre web-client/El pre-commit hook corre automaticamente sobre los archivos staged en cada commit:
oxfmt— formatea el archivooxlint --fix— corrige errores de lintingeslint --fix— corrige reglas Vue/TS (solo archivos enweb-client/src/)
- El cliente se conecta al servidor ingresando la URL del servidor WebSocket.
- Crea o se une a un tablero con una contrasena.
- Todas las acciones (agregar/editar/eliminar notas y grupos) se sincronizan en tiempo real con todos los participantes del tablero.
- Al conectarse, el servidor envia el estado completo del tablero. Los tableros se eliminan de memoria cuando el ultimo cliente se desconecta.