Español
Goftego — plataforma de chat autoalojada
Goftego (گفتگو — conversación) es lo que una comunidad pequeña tiene en vez de entregar sus conversaciones a un SaaS: chat autoalojado con un solo comando y datos propios. Canales, entrega en tiempo real, recuentos de presencia, indicadores de escritura, auth JWT con contraseñas bcrypt — todo en un archivo SQLite con WAL, sin servicios externos.
El stack
- Servidor — Node.js (ESM): API REST con Express, hub WebSocket (
join/leave/typing/post→ persistir → fan-out),better-sqlite3, bcrypt cost 12, JWT verificado en REST y en el handshake WS. - Cliente — SPA en Vue 3: store reactivo sin librería de estado, UI bilingüe fa (RTL) / en, tema oscuro, móvil incluido.
- Despliegue — Dockerfile multi-etapa +
docker compose up.
bash
docker compose up --build # → http://localhost:3000Detalles que me costaron
Los mensajes que llegan por REST y por WebSocket fluyen por una sola ruta de persistencia, así que el broadcast y el INSERT nunca discrepan. El hub re-verifica JWTs por conexión, la presencia se actualiza al salir o caerse, y el cliente Vue es persa-first: <html dir="rtl">, fuente Vazirmatn — el inglés está a un clic.
7 tests con vitest cubren auth, CRUD de canales, paginación y validación. Es mi build full-stack de referencia: base de datos, API, tiempo real, SPA, i18n y contenedores — el ciclo completo. Licencia MIT.