O Projeto
Plataforma de conhecimento sobre 980 cultos (757.9h): pipeline de dados em camadas, IA serverless (AWS Bedrock), busca ancorada em fontes, uma TV ao vivo com chat e agentes, playlists no YouTube e um painel admin. Em produção, tudo roda na nuvem (Vercel + AWS); o ambiente local é opcional, só para ingerir conteúdo novo. ~$5-8/mês na AWS com scale-to-zero.
Além da busca e dos guias, o projeto publica e-books por pregador: volumes em EPUB, leitura online e HTML pronto para imprimir/salvar em PDF, com a transcrição do sermão recortada das lives quando possível.
Projeto pessoal de Fernando Francisco Azevedo · licença MIT
Arquitetura
Agrupada por provedor. O usuário acessa a Vercel (Cloudflare faz DNS); o frontend proxia /api/* para a AWS (Lambda → Aurora/Bedrock/Polly). O GitHub Actions mantém o Aurora sincronizado. O bloco Local é opcional — só entra quando há vídeo novo a transcrever/enriquecer.
Camadas de dados (SOR → SOT → SPEC)
transcricoes/youtube/Transcrições cruas por vídeo (txt/srt + metadata). Versionado; nunca editado à mão.
data/sot/acervo.duckdbBanco limpo: cultos, trechos com timestamp, refs determinísticas e tabelas de IA. Reconstruível do SOR.
apps/web/public/data · AuroraJSONs do site + vetores no Aurora (pgvector). Produtos servidos ao usuário.
Inteligência artificial
Em produção, toda IA roda no AWS Bedrock via IAM — sem chave externa. No ETL local, o enriquecimento usa as CLIs autenticadas (Codex/Claude/Gemini).
Busca semântica
Cohere Embed v4 (1536d) + pgvector/HNSW no Aurora — acha por sentido, não só palavra
Perguntar / Chat
RAG ancorado nos cultos (Bedrock Nova Micro), respostas com fontes e timestamp
Assistente contextual
em cada página (culto, tema, livro, pregador, série) com perguntas sugeridas
Trilha & roteiro de célula
estudo pessoal em etapas ou roteiro de grupo pequeno, exportável em .md
E-books por pregador
volumes de leitura com a transcrição do sermão, metadados e links de origem em EPUB, HTML/PDF e Markdown
Leitor de voz
Amazon Polly neural lê o guia; destaca a seção lida; baixar/compartilhar
Reflexão nas frases
meditação devocional curta sobre cada frase, à luz da Escritura
Lume TV · agentes
5 agentes acompanham o culto no ar, comentam (esboço, referências, contexto) e respondem perguntas do chat — ancorados no guia (Bedrock)
Moderação do chat
filtro automático de ofensas/palavrões (normalização anti-evasão) + moderação por admin
Playlists no YouTube
OAuth Google: cria playlists de sermões na conta do próprio usuário, direto do acervo
Stack & integrações
Frontend
Backend / IA
Banco & tempo real
Pipeline (ETL)
IaC & CI/CD
Auth & segurança
Integrações
Git Flow
Domínios & DNS
Infraestrutura AWS
Provisionada por OpenTofu em infra/. Bootstrap (S3 state + DynamoDB lock + OIDC) roda uma vez; o resto aplica via tofu apply ou GitHub Actions. Região principal us-east-2; Bedrock e Polly em us-east-1.
AWS Lambdaacervo-api · Python 3.12 ARM · Function URL + CloudFront$0 idle/mêsCloudFront + ACMedge + TLS em api.acervo.moretes.com~free tier/mêsAurora Serverless v2Postgres 16 + pgvector + unaccent · ACU 0-1 · pausa em 5min~$2-5/mêsAWS BedrockNova Micro (LLM) + Cohere Embed v4 (vetores) + agentes da TV — pay-per-token<$0.30/mêsAmazon Pollyvoz neural pt-BR (Camila) — só na 1ª vez por culto (cache S3)<$0.10/mêsDynamoDBlume-tv · chat, presença e reações da TV ao vivo · on-demand + TTL~$0 (escala a zero)/mêsEventBridgeagenda (5 min) os agentes que comentam o culto no ar$0/mêsAmazon Cognitologin por e-mail (Email OTP) · self-signup · tier Essentials~$0 (poucos MAU)/mêsAmazon SESenvio de OTP de no-reply@moretes.com · DKIM + DMARC · produção~$0 (baixo volume)/mêsS3raw · exports · áudio TTS · Intelligent-Tiering~$0.50/mêsSecrets Managercredenciais do Aurora gerenciadas pela AWS$0.40/mêsIAM + OIDCGitHub Actions assume role sem chaves de longo prazo$0/mêsVPC mínimasubnets privadas só para o Aurora · sem NAT/IGW$0/mêsAPI — api.acervo.moretes.com
POST /perguntarRAG single-shot: busca semântica (pgvector) + síntese por LLM citando [Fonte N]POST /chatRAG conversacional com follow-up — mantém o contexto da conversaPOST /trechosbusca de trechos (semântica via Cohere/pgvector ou palavra-chave) com timestampPOST /estudogera trilha de estudo pessoal (etapas + perguntas + versículos)POST /celulagera roteiro de grupo pequeno (quebra-gelo, discussão, aplicação, oração)POST /ttsAmazon Polly neural → MP3 cacheado em S3 (URL pré-assinada + speech marks)POST /youtube-chatassistente do painel do YouTube (estatísticas do canal)POST /tv-pollLume TV: heartbeat de presença + novas mensagens/reações (DynamoDB)POST /tv-sendLume TV: envia mensagem no chat (login) com moderação anti-ofensaPOST /tv-react · /tv-askreação com emoji · pergunta a um agente (Bedrock, ancorado no culto)POST /tv-modmoderação do chat (admin): apagar mensagem, banir/desbanirtask: tv-botdisparo agendado (EventBridge 5 min): agentes comentam o culto no arPOST /admin · /userdatamétricas do painel admin · favoritos/histórico/acessos do usuárioGET /statusnúmeros reais e ao vivo do Aurora (cultos, refs, embeddings, horas)POST /waitlist · /welcomelista de espera + e-mail de boas-vindas (Aurora + SES)POST /consent · /consent-checkregistra/consulta o aceite dos Termos (LGPD)GET /healthzhealthcheck da Lambda / CloudFrontA Vercel proxia /api/* para a Lambda (via NEXT_PUBLIC_API_URL); em dev local, faz spawn do pipeline Python diretamente.
Banco de dados
Local: DuckDB single-file, reconstruível do SOR. Nuvem: Aurora Serverless v2 Postgres + pgvector, espelhado via pipeline.export_aurora e consultado pela Lambda via RDS Data API.
cultos1 linha por culto: título, data, pregador, tipo, série, duração, canonical_video_id (dedup live/corte)trechostrechos com timestamp (do .srt) — base da busca e dos links no YouTubereferencias_biblicasrefs extraídas por regex determinística, com timestamppassagens (vetores)trechos agrupados, embeddados via Bedrock Cohere Embed v4 (1536d) — pgvector + índice HNSW para busca semânticatemas · resumos · estudos · personagensenriquecimento por IA (texto-base, ideia central, esboço, perguntas) — no SOT local, servido nos JSONsPipeline (módulos Python)
pipeline.build_sotraw → DuckDB limpo (limpeza, refs, pregador, filtro de alucinação)
pipeline.enrichenriquece por IA (resumo, temas, guia de estudo) — CLIs Codex/Claude/Gemini
pipeline.embed_auroraembeddings via Bedrock Cohere v4 → pgvector no Aurora (incremental)
pipeline.dedup_cultosdetecta live/corte, cria aliases e séries; recalcula stats
pipeline.export_webexporta os JSONs do frontend + transcrição completa (merge de fragmentos)
pipeline.export_ebooksgera volumes por pregador em EPUB, HTML imprimível/PDF e Markdown, recortando lives para manter só o sermão
pipeline.export_statussnapshot de saúde do pipeline para a página /status
pipeline.validate_webgate de validação dos JSONs antes do deploy (CI + autoenrich)
pipeline.export_auroraespelha o SOT no Aurora via RDS Data API (idempotente)
CI/CD & Git Flow
GitHub Actions assume role via OIDC (sem AWS keys no repo). Fluxo feature/* → develop → homolog → main, com proteção de branch e validação dos dados antes do deploy.
terraform-planPR · comenta `tofu plan` se mexeu em infra/
terraform-applypush em main · aplica a infra de produção
api-deploypush em main (apps/api/**) · empacota zip + atualiza a Lambda
etl-crondiário 03:00 BRT · build_sot → export_aurora → embed_aurora
deploy (Vercel)push em main · build na nuvem da Vercel
ciPR · ruff + import + validate_web + tsc/next build
Local vs. nuvem
☁️ Produção — 100% nuvem
Site (Vercel), busca/chat/IA (Lambda + Aurora + Bedrock), voz (Polly + S3) e o sync diário do Aurora (GitHub Actions). Não depende de nenhuma máquina local — o site fica no ar mesmo com tudo desligado.
💻 Local — opcional
Só para ingerir conteúdo novo: transcrever vídeos (Whisper) e gerar os guias de estudo (CLIs de IA). O acervo atual já está completo; esses passos rodam sob demanda quando há vídeos novos.
Acompanhe os números reais em Status (ao vivo do Aurora).
Autenticação & e-mail
Acesso por e-mail (código OTP) via Amazon Cognito, com self-signup. O código é enviado por Amazon SES de no-reply@moretes.com (DKIM + DMARC, fora do sandbox). O login por senha continua válido. A sessão é um JWT próprio (cookies httpOnly), e o gate de rotas fica no proxy.ts — o Cognito apenas comprova o e-mail e emite a mesma sessão. Termos & LGPD com aceite registrado por usuário.
Cognito · Email OTP
código de 6 dígitos; conta criada no 1º acesso
SES · seu domínio
no-reply@moretes.com, DKIM/DMARC, lista de espera
Aceite (LGPD)
termos versionados + consentimento gravado no Aurora
Lume TV — canal ao vivo
Um canal contínuo (estilo Samsung TV+) que transmite os sermões do acervo em sequência, sincronizado para todos: a posição no ar é calculada do relógio sobre uma grade determinística (mesma cena no mesmo minuto, sem servidor de vídeo — só o YouTube IFrame). Aberto a todos, sem login para assistir. Abrir a TV →
Sincronizado, sem pausa
Grade de ~734h; a posição vem do relógio + soma das durações. Próximo culto / voltar ao ao vivo.
Estudo acompanhando
O guia da pregação no ar (ideia central, texto-base, esboço, perguntas) atualiza junto com o vídeo.
Presença ao vivo
Quantas pessoas assistindo agora (heartbeat em DynamoDB com TTL, via polling).
Chat + reações
Mensagens em tempo real (polling 2,5s) e emojis que sobem sobre o player. Enviar exige login.
Agentes do estudo
5 personas (Notas da Pregação, Referência Cruzada…) comentam o culto a cada 5 min, interagem entre si e respondem perguntas (Bedrock).
Moderação & segurança
Filtro automático de ofensas (anti-evasão) + admin pode apagar e banir. Tudo passa pelo segredo interno da API.
Painel administrativo
Em /admin (restrito por e-mail), métricas reais do Aurora: DAU/WAU/MAU, acessos por dia (com usuários únicos), uso de IA por tipo, perguntas mais frequentes, heatmap de horários, novos cadastros, lista de espera, cultos mais vistos e detalhe por usuário (frequência, eventos, histórico, favoritos). Inclui busca, ordenação e exportação CSV.
Open source para estudo
Código (pipeline Python + app Next.js + IaC OpenTofu) sob licença MIT, por Fernando Francisco Azevedo — estudo prático de engenharia de dados, RAG, IA aplicada e cloud serverless num caso real. O dataset são transcrições de pregações de um canal público no YouTube; este repositório cobre apenas o software.
uv pip install -e packages/pipeline # pacote Python
cd apps/web && pnpm install # frontend
python -m pipeline.build_sot # constrói o banco (SOT)
python -m pipeline.export_web # gera os JSONs estáticos
node_modules/.bin/next dev # http://localhost:3000cd infra/bootstrap && tofu apply # uma vez: state bucket + OIDC
cd ../envs/prod && tofu apply # Aurora + Lambda + CloudFront + Polly/S3
python -m pipeline.export_aurora # primeira carga de dados
# daí em diante, push em main faz deploy via GitHub ActionsDocs no repositório: docs/ARQUITETURA.md, docs/RUNBOOK.md, docs/DEPLOY.md, infra/README.md, CONTRIBUTING.md.
Sobre o criador

Fernando Francisco Azevedo
Arquiteto de Soluções Sênior · AWS Community Builder 2026 (AI Engineering)
Esposo da Juliana e pai da Maria Fernanda — uma família cristã protestante reformada, que ama a Deus e busca seguir a Sua Palavra. Dediquei este projeto, sem fins lucrativos, para propagar a obra de Cristo: que a pregação fiel da Palavra alcance, sirva e edifique mais pessoas. Soli Deo Gloria.
Profissionalmente, sou especializado em AWS, arquiteturas cloud-native, DevSecOps e soluções de escala enterprise. Tenho 4 certificações AWS e 2 MBAs (Arquitetura de Soluções — Full Cycle; Engenharia de Software com IA) e graduação em Administração pela Universidade Metodista de São Paulo. Vivi e trabalhei por 5 anos na Irlanda, onde concluí o Higher Diploma in Science in Computing com First-Class Honours no CCT College Dublin — uma das melhores faculdades de tecnologia da Europa. Este acervo é também meu laboratório real de engenharia de dados, RAG e IA aplicada.
Credenciais · 4 certificações AWS + 2 MBAs + AWS Community Builder




