Skip to content

Repository files navigation

open-retro

Herramienta de retrospectiva colaborativa en tiempo real. Permite a equipos crear tableros compartidos donde agregar notas y agruparlas durante sesiones de retrospectiva.

Caracteristicas

  • 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

Estructura del proyecto

open-retro/
├── server/        # Servidor WebSocket (Bun + Elysia)
├── shared/        # Tipos compartidos
└── web-client/    # Frontend (Vue 3 + Vite)

Docker

Levantar con Docker Compose

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).

Variable de entorno ENVIRONMENT

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"

Configuración del Servidor

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.

Limpiar contenedores y volúmenes

docker compose down -v

Desarrollo

Configuracion inicial

Desde la raiz del proyecto, instalar dependencias e instalar los git hooks:

npm install

El script prepare se ejecuta automaticamente e instala el pre-commit hook via simple-git-hooks.

Servidor

cd server
bun run dev    # con hot reload
bun run start  # sin watch

Cliente web

cd web-client
npm run dev      # servidor de desarrollo
npm run build    # build de produccion
npm run lint     # linter (oxlint + eslint)

Calidad de codigo

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:

  1. oxfmt — formatea el archivo
  2. oxlint --fix — corrige errores de linting
  3. eslint --fix — corrige reglas Vue/TS (solo archivos en web-client/src/)

Como funciona

  1. El cliente se conecta al servidor ingresando la URL del servidor WebSocket.
  2. Crea o se une a un tablero con una contrasena.
  3. Todas las acciones (agregar/editar/eliminar notas y grupos) se sincronizan en tiempo real con todos los participantes del tablero.
  4. Al conectarse, el servidor envia el estado completo del tablero. Los tableros se eliminan de memoria cuando el ultimo cliente se desconecta.

Tecnologias

About

Tablero de retrospectivas colaborativo en tiempo real. Crea una sala, comparte el ID y trabajen juntos desde cualquier lugar.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages