Caso 03 Rails 8 · React · TypeScript · ClickHouse
Status Survey: pesquisas hierárquicas, do formulário ao data lake
Uma plataforma para criar e gerir fluxos hierárquicos de pesquisa e coleta de dados da New Apostolic Church (NAK). Em uma equipe de três pessoas, atuei do backend em Rails 8 às interfaces em React, passando por autenticação, sincronização de dados e entrega.
Contexto
O Status Survey foi desenvolvido via Oxeanbits para a New Apostolic Church (NAK). Ele organiza fluxos hierárquicos de pesquisa e coleta de dados: ciclos de pesquisa que percorrem vários níveis da organização.
A equipe tinha três pessoas. Com um time desse tamanho, cada integrante acumula responsabilidades que em projetos maiores se espalham por várias funções.
Problema
Uma organização com vários níveis precisa criar ciclos de pesquisa, distribuir formulários pela hierarquia, controlar quem vê e responde o quê e consolidar os resultados em relatórios, em mais de um idioma.
Os dados coletados também precisam chegar a sistemas de análise sem cópias manuais, e o ambiente precisa ser reproduzível, com backups e documentação para quem vier depois.
Minha responsabilidade
Atuei como principal contribuidor full-stack. Participei da definição da arquitetura e trabalhei no backend em Ruby on Rails 8 e nas interfaces em React e TypeScript.
Implementei a autenticação com Keycloak e JWT, o controle de acesso por papéis e a sincronização entre ClickHouse e PostgreSQL com publicação em data lake. Também fiquei responsável por CI/CD, ambientes Docker, backups e documentação técnica.
Decisão
A autenticação usa Keycloak com tokens JWT, e o controle de acesso por papéis define o que cada nível da hierarquia pode ver e fazer. Identidade e permissão aparecem como responsabilidades distintas.
Os dados circulam entre PostgreSQL e ClickHouse, um banco orientado a consultas analíticas, e são publicados em um data lake para outros sistemas.
Alternativas e trade-offs
Análise atual, escrita para este site. Não é um registro das alternativas avaliadas na época.
- Delegar a identidade a um provedor como o Keycloak evita reimplementar login, sessões e políticas de senha, mas adiciona um serviço a operar e exige cuidado com a validação dos tokens.
- Manter mais de um banco tem custo: é preciso tratar consistência, reprocessamento e monitoramento da sincronização. Em troca, cada banco atende o tipo de consulta em que é mais eficiente.
Implementação
O escopo cobre quatro frentes que precisavam funcionar juntas.
Identidade e acesso
Keycloak e JWT para autenticação; controle de acesso por papéis para limitar o que cada nível da organização vê e altera.
Fluxos de pesquisa
Gestão de ciclos de pesquisa, fluxos hierárquicos e formulários dinâmicos em React e TypeScript, com internacionalização.
Dados e relatórios
Sincronização entre ClickHouse e PostgreSQL, publicação em data lake, relatórios e geração de PDF.
Entrega
Testes automatizados, pipelines de CI/CD, ambientes Docker, backups e documentação técnica.
Resultado
Uma plataforma completa entregue por uma equipe pequena, cobrindo do formulário dinâmico ao relatório em PDF, da permissão por papel à publicação de dados para análise.
Métricas internas me registram como principal contribuidor individual do projeto. São indicadores de atividade, e o resultado é de uma equipe de três pessoas.