Saltar al contenido
JC.dev
Área Técnica
Volver a Proyectos

Proyecto de empresa

Squaads Meeting Bot

Plataforma interna y autoalojada de inteligencia de reuniones para Squaads: un bot entra a Google Meet o Microsoft Teams, graba audio y vídeo, transcribe, resume y permite conversar con las reuniones mediante IA.

Pantalla de acceso de Squaads Bot en desarrollo: «Tu asistente inteligente para reuniones», botón «Continuar con Google» y lista de permisos (perfil y email, calendario, auto-join).
  1. Calendar, Extensión · auto-join. Auto-join con Google Calendar y extensión de navegador. Siguiente: Web · Next.js.
  2. Web · Next.js, OAuth · API. Next.js con inicio de sesión de Google OAuth y API. Siguiente: Cola en Postgres.
  3. Cola en Postgres, pending → completed. Cola de trabajos en Postgres con máquina de estados: pending → recording → transcribing → summarizing → completed. Siguiente: Worker · Docker.
  4. Worker · Docker, Puppeteer + FFmpeg. Worker en Docker: Puppeteer entra a la reunión y FFmpeg la graba; reclama trabajos con heartbeat y reintenta con backoff. Siguiente: S3 / MinIO.
  5. S3 / MinIO, Grabaciones. Las grabaciones viven en S3 / MinIO. Siguiente: Transcripción.
  6. Transcripción, STT. Transcripción con Groq Whisper o Deepgram. Siguiente: Resumen · LLM.
  7. Resumen · LLM, Con fallback. Resumen con Groq, con Gemini como fallback. Siguiente: Panel · Chat IA.
  8. Panel · Chat IA, Reuniones. Panel de reuniones con chat de IA sobre ellas. Fin del flujo.
  9. CI/CD · GitHub Actions, tests · lint · types · Docker → Vercel · Railway. GitHub Actions ejecuta tests, lint, tipos y build Docker; el despliegue continuo sale solo de main: web en Vercel y worker en Railway.

De un vistazo

Tipo de proyecto
Proyecto de empresa
Rol
Colaboré con el equipo en la fase inicial y después lideré el desarrollo prácticamente en solitario, incluido el pipeline de CI/CD y el despliegue.
Stack
  • Bun
  • Next.js 16
  • TypeScript
  • Postgres
  • Drizzle
  • Docker
  • Puppeteer
  • FFmpeg
  • Vercel
  • Railway

Qué demuestra

  1. CI en dev y main y despliegue continuo automático solo desde main, con web en Vercel y worker en Railway.
  2. Cola de trabajos en Postgres con máquina de estados; el worker reclama trabajos con heartbeat y reintenta con backoff.
  3. Proyecto de empresa liderado casi en solitario tras la fase inicial, con ADRs y desarrollo guiado por especificaciones.

Proyecto de empresa · sin demo pública: el entorno de desarrollo exige login de Google.

El Producto

Alternativa interna a los grabadores de reuniones SaaS, sobre la infraestructura propia de la empresa.

Flujo

  • Unirse y grabar El bot se une a la reunión y la graba con un navegador headless (Puppeteer) y FFmpeg con Xvfb y PulseAudio dentro de Docker.
  • Transcribir Con Groq Whisper o Deepgram.
  • Resumir Con Groq, con Gemini como fallback.

Funciones

  • Chat con IA sobre las reuniones.
  • Auto-join con Google Calendar y extensión de navegador.
  • Compartir reuniones por correo electrónico.
  • Inicio de sesión con Google OAuth.

Arquitectura

Web y worker se despliegan por separado y se coordinan mediante una cola de trabajos en Postgres.

Monorepo Bun

apps/web (Next.js 16, React 19 y next-auth), apps/worker (Bun), apps/extension y packages/shared.

Decisiones

  • Máquina de estados: pending → recording → transcribing → summarizing → completed | error, con Postgres y Drizzle como cola.
  • Worker robusto: reclama trabajos con heartbeat y reintenta con backoff.
  • Almacenamiento: las grabaciones viven en S3 / MinIO.
  • Acceso a datos: patrón Repository.

CI/CD y Despliegue

CI en dev y main; despliegue continuo automático solo desde main.

Pipeline

En cada push y PR a dev y main, GitHub Actions ejecuta:

  1. Instalación con lockfile congelado
  2. Esquema de base de datos
  3. Tests contra Postgres 16 real
  4. Lint
  5. Typecheck
  6. ZIP de la extensión = build limpia
  7. Build Docker del worker

Gobernanza y despliegue

  • Gobernanza: feature, PR a dev y PR a main; un guard de GitHub Actions solo admite PRs a main desde dev del mismo repositorio, y se exige aprobación.
  • Web: Vercel con integración Git y vercel.json versionado.
  • Worker: Railway con Dockerfile, migrado desde workflows de despliegue en VPS.

Seguridad y Proceso

  • Endurecimiento RLS y middleware de autenticación, documentados en ADRs.
  • Proceso Desarrollo guiado por especificaciones, con specs de funcionalidad numeradas.

Mi Rol

Colaboré con el equipo en la fase inicial y después lideré el desarrollo prácticamente en solitario, incluido el pipeline de CI/CD y el despliegue.