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.

Participação
Em equipe Principal contribuidor full-stack em equipe de três pessoas
Contexto
Oxeanbits · para a New Apostolic Church (NAK)
Serviço relacionado

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.

  1. 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.

  2. Fluxos de pesquisa

    Gestão de ciclos de pesquisa, fluxos hierárquicos e formulários dinâmicos em React e TypeScript, com internacionalização.

  3. Dados e relatórios

    Sincronização entre ClickHouse e PostgreSQL, publicação em data lake, relatórios e geração de PDF.

  4. 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.

Tecnologias

  • Ruby on Rails 8
  • React
  • TypeScript
  • PostgreSQL
  • ClickHouse
  • Keycloak
  • JWT
  • Docker
  • CI/CD

Conte qual problema você precisa resolver

Quer contratar para sua equipe ou resolver um problema do seu produto? Conte o contexto e o resultado esperado. Podemos conversar sobre uma posição de Senior Full Stack Developer ou Tech Lead, desenvolvimento de projeto ou consultoria técnica.

WhatsApp

+55 71 99705-3401

Abre o WhatsApp com uma mensagem inicial que você pode editar. Nada é enviado automaticamente.

Também estou no GitHub e no LinkedIn.