Berg Enterprise

Berg Enterprise · bergenterprise.com.br · 26 de agosto de 2026

A planta do ecossistema

Doze apps, um login, dois universos de organização e um banco que decide sozinho quem pode ler o quê. Este é o desenho de como as peças se ligam — não a lista do que existe.

12apps em produção
51functions node
57rotas /api/
59tabelas
7crons diários
0passos de CI

01Quem fala com quem

O navegador conversa direto com o banco. A Netlify entra só onde o navegador não pode ir: segredo, e-mail, cron, IA, cross-org.

A pessoa, no navegador um login magic link · uma conta pra todos os apps ESTÁTICO NA NETLIFY Church · Corp React + Vite + TS — build commitado como artefato 10 apps HTML puro 1 arquivo por app, sem build, sem lint NETLIFY FUNCTIONS 51 funções Node e-mail · cron · geocode · IA console super-admin · backup foto por URL fixa · NFS-e TERCEIROS Resend todo e-mail Anthropic Claude — IA dos apps Mapbox geocode e mapa eNotas NFS-e BrasilAPI CNPJ e CEP do navegador SUPABASE Auth magic link PostgREST + RLS quem decide o acesso Realtime 8 tabelas críticas Storage baldes privados PostgreSQL — 59 tabelas, 76 chaves estrangeiras políticas RLS, triggers de versão, funções de cobrança e de rodízio a regra de negócio que não pode ficar só na tela mora aqui abre o app chama /api/… fetch direto · token da pessoa nenhum segredo no navegador service role passa por cima da RLS mudou, a tela sabe sem F5
A autorização não está no app — está no banco. Se a tela some com um botão, isso é exibição; o que a pessoa pode de fato ler e gravar é decidido pela RLS, no mesmo lugar, pra todos os doze apps. Por isso o caminho verde é o normal e o âmbar é a exceção: cada função com service role tem que reimplementar o portão sozinha.

02Os doze apps

Dois padrões de frontend, um só login. A cor da rota diz em qual universo de organização o app pensa.

/church/

Church

Igrejas: pessoas, departamentos, eventos, escalas, kids, oração.

React · repo próprio
/corp/

Corporations

A mesma base para empresas, mais a aba Clientes (CRM-lite).

React · repo próprio
/pesquisas/

Questionários

LIDER/Big Five 270 questões em PT/EN/ES, NR-1, 360°, clima.

HTML puro
/money/

Abelha

Tesouraria e finanças pessoais, NFS-e, boletos, backup diário provado.

HTML puro
/daytracker/

Bem-te-vi

Registro de atividades do dia com análise por IA.

HTML puro
/tasktracker/

Formiga

Kanban por departamento, com lembrete de prazo por e-mail.

HTML puro
/agenda/

Agendamentos

Espaços, aulas fixas e reservas — a fonte única de “lugar”.

HTML puro
/vocacional/

Vocacional

Orientação de carreira com devolutiva escrita por IA.

HTML puro
/site/

Site

Espelho editável do site público da org: arrasta a foto, troca no ar.

HTML puro
/admin-org/

Admin Org

Orgs, planos, estoque de testes e o console cross-org do super-admin.

HTML puro
/diagnostico/

Diagnóstico

Saúde do sistema, audit log, disparos manuais, socorro de dados.

HTML puro
/suporte/

Suporte

Atendimento ao vivo com secretária IA que escala pro humano.

HTML puro

03Os dois universos de organização

O ponto mais importante do banco, e o que mais custou caro quando foi esquecido: a mesma igreja tem dois identificadores.

Uma organização — a C3 Curitiba, por exemplo — existe duas vezes ch_organizations o universo da operação Church · Corp · Formiga Bem-te-vi · Agendamentos papéis em ch_org_members dir_organizations o universo do diretório Questionários · Money · Site Vocacional · fichas de pessoa papéis em dir_memberships source_ref a ponte sem chave estrangeira A ESPINHA COMUM auth.users o login — um e-mail, um magic link dir_people a ficha canônica da pessoa, compartilhada por todos os apps e-mail único por pessoa dentro da org — é o que permite ligar login e ficha sozinho
Toda consulta que atravessa apps passa pela ponte. Usar o identificador de um universo numa consulta do outro não dá erro: dá lista vazia, que tem cara de “essa org não tem nada”. Na dúvida, resolva pelo nome e diga qual universo você quer.

04Como uma mudança vai ao ar

Não há integração contínua. O push no main do repo de deploy é o deploy — e é isso que cria a única janela perigosa do processo.

church-manager corp-manager o código-fonte React tsc -b, depois build o typecheck é o que pega nome trocado entre os dois apps — o build não pega artefato commitado o bundle pronto entra no repo de deploy como arquivo, com hash no nome Os 10 apps HTML sem build e sem rede de proteção — o arquivo sobe como foi escrito push no main = deploy no ar em segundos sem CI, sem revisão automática, sem volta commit direto A ETAPA QUE NÃO É AUTOMÁTICA A migração de banco roda pela mão do Ronald, no Supabase uma por vez, colada na conversa, testada antes num Postgres de verdade o código chega antes da coluna
É essa defasagem que dita uma regra de código inteira. Entre o deploy e o SQL existe uma janela em que o app já pede uma coluna que o banco ainda não tem — e o PostgREST derruba o salvamento inteiro por causa dela. Por isso campo novo entra condicional: se ninguém falou dele, ele não vai na gravação.

05O dia do sistema

Sete rotinas automáticas, todas por e-mail, todas com registro no banco pra não mandar duas vezes. Horários em Brasília.

00h 24h 3h00 backup do Money dump, foto e prova 8h00 prazos do Task 9h00 e 10h00 — a manhã da escala cobra o líder que ainda não montou a escala (ter–sáb) resumo do evento pro coordenador, três dias antes 6h30 líder do dia, pra quem ora mensagem de aniversário 8h30 segunda chance do matinal, disparada por outro caminho 18h00 lembrete da véspera pra quem está escalado
Repetir o disparo é seguro. Cada rotina grava no banco quem já recebeu naquele dia, então re-disparar só completa quem ficou de fora — é o que permite a segunda tentativa das 8h30 existir sem risco de e-mail duplicado. Uma oitava rotina existe e não está nesta linha: a cobrança de confirmações de presença teve o cron desligado em julho — no plano grátis do Resend ela competia com os magic links de login — e hoje só sai pelo botão “Cobrar confirmações” dentro do evento.

06De quem o ecossistema depende

Cinco fornecedores. Nenhum deles guarda a verdade do negócio — ela está toda no Postgres.

ResendTodo e-mail que sai, dos avisos de escala à mensagem de aniversário.
Anthropic · ClaudeAnálise do Bem-te-vi, devolutiva do Vocacional, secretária do suporte, assessor do Money.
MapboxEndereço vira coordenada; o mapa de calor da igreja.
eNotas GatewayEmissão de NFS-e a partir do Money.
BrasilAPI · ViaCEPCNPJ e CEP, consultados direto do navegador.
GitHub ActionsSó como segunda chance do cron matinal. Não builda, não testa, não publica.