Gravações de reunião ficam no Drive, mas transformar cada MP4 em texto útil exige baixar arquivo, chamar provedor, cuidar de fila, persistir resultado e entregar um TXT sem travar a interface.
meet-transcription
Um app web + worker que observa uma pasta do Google Drive, baixa gravações, transcreve com Deepgram ou engine local CPU e salva o resultado no PostgreSQL.
Leitura técnica
Leitura rápida do case
A UI valida e enfileira o job; o worker baixa o arquivo, escolhe Deepgram ou transcrição local, salva transcript no PostgreSQL e expõe download. Redis segura fila e lock global.
Python · FastAPI · Deepgram · Whisper
Projeto principal
Arquitetura
Drive entra, worker processa, Postgres vira fonte de verdade
O web nunca transcreve dentro da request: ele só cria um job pendente. O worker consome a fila com lock global e grava o resultado no banco.
Fluxo técnico
- Entrada
- Processamento
- Fila
- Persistência
- Saída
Fluxo em etapas
Código do diagrama (Mermaid)
flowchart LR
drive["Google Drive"]
web["FastAPI web"]
redis["Redis"]
worker["Worker"]
engine["Deepgram ou Whisper local"]
postgres["PostgreSQL"]
txt["TXT"]
drive --> web
web --> redis
redis --> worker
worker --> engine
engine --> postgres
postgres --> txtStack e responsabilidades
- FastAPI
UI server-rendered, OAuth e criação de jobs.
- Redis
Fila de transcrição e lock global de execução.
- PostgreSQL
Usuários, settings, jobs e transcripts; fonte de verdade.
- Deepgram / Whisper local
Provedores intercambiáveis de transcrição.
- Docker Compose
Empacota web, worker, migrate, Redis e Postgres.
Decisões técnicas
- Postgres como verdade
Redis pode cair ou ser limpo; jobs pendentes são reconciliados a partir do banco.
- Request leve
A interface só valida e enfileira. Transcrição pesada fica no worker.
- Local vs cloud explícito
Deepgram entrega velocidade/diarização; local CPU reduz custo por uso e mantém processamento na infra própria.
Operação
- documentadoHealthchecks e startup order
Postgres -> Redis -> migrate -> web/worker.
- documentadoDokploy
Guia público de deploy com domínio apenas no serviço web.
- documentadoGHCR
Workflow publica imagem em pushes para main.
Status e próximos passos
- Compilar whisper.cpp multiarch na imagem.
- Adicionar busca em transcripts e resumos com IA.
- Melhorar notificações e automação de gravações.
Contato
Quer algo parecido para seu processo?
Se existe uma entrada repetida, uma etapa manual e uma saída esperada, provavelmente dá para desenhar um sistema.