RST Transparente
Nove domínios diferentes convivendo no mesmo sistema.
Portal institucional · Multi-domínio
- Produção
- Status
- 9
- Domínios cobertos
- Base pública do CNJ
- Integração
Visão geral
O que este sistema resolve
O sistema nasceu para resolver um problema de confiança: o morador não enxergava para onde ia o dinheiro da administração. A primeira versão publicava receita, despesa e parecer do conselho fiscal.
O que estava em produção resolvia o problema declarado — e revelou os outros. Hoje o portal cobre obra, demanda com protocolo, proposta, enquete com voto, e um módulo jurídico que acompanha processo judicial, notificação e multa. Hoje o sistema cobre transparência financeira, obras, demandas, propostas, enquetes e gestão jurídica.
O desafio
O que tornava o problema difícil
Estes são os pontos que mais influenciaram a arquitetura.
Domínios que não se parecem, no mesmo produto
Financeiro tem período e publicação. Demanda tem protocolo, prazo e responsável. Processo judicial tem número, movimentação e sigilo. Enquete tem voto único. Cada um desses tem seu próprio ciclo de vida — e o sistema precisa mantê-los coerentes sem virar cinco sistemas grudados.
O mesmo dado é público e sensível ao mesmo tempo
O andamento de um processo judicial do condomínio interessa a todos os moradores. As partes desse processo são o vizinho. Publicar tudo expõe pessoa; publicar nada devolve o problema de confiança que originou o portal.
O acompanhamento não pode exigir login
O morador que abre uma demanda precisa acompanhá-la sem criar conta e sem lembrar senha — mas o acompanhamento não pode virar uma janela para as demandas dos outros.
O histórico contábil vive em planilhas heterogêneas
Anos de balancete montados por pessoas diferentes: mês por extenso ou abreviado, com e sem acento, ano de dois ou quatro dígitos, linhas de saldo misturadas com lançamentos. Migrar isso à mão é inviável; importar automaticamente sem conferência produz um balancete errado que ninguém percebe.
Escopo
Os domínios do sistema
Cada um destes tem entidades, estados e regras próprios. Estão listados porque a variedade é justamente o que o produto tem de mais difícil.
Transparência financeira
Receita e despesa por período, categorizadas, com ciclo de rascunho e publicação, e balancete público exportável.
Pareceres do conselho
Documento do conselho fiscal com publicação controlada e arquivo anexo.
Obras
Acompanhamento de obra com estado e registro de andamento.
Demandas com protocolo
Abertura, protocolo rastreável sem login, atualizações e encerramento.
Propostas
Recebimento e avaliação de proposta de fornecedor.
Enquetes
Consulta com opções e voto registrado por pessoa.
Jurídico — processos
Cadastro de processo com sincronização de andamento na base pública do tribunal e arquivamento.
Jurídico — notificações e multas
Notificação e multa com ciclo próprio, vinculadas a bloco e unidade validados.
Auditoria e configuração
Registro de ação administrativa no módulo jurídico e configuração institucional do portal.
Arquitetura
Como o sistema é montado
- Aplicação
Next.js · App Router · TypeScript
Área pública e área administrativa no mesmo projeto, separadas por grupo de rotas.
- API
Route handlers
Regra de negócio isolada em módulos próprios; a rota valida, autoriza e delega.
- Dados
PostgreSQL · Prisma
Modelos por domínio, com enums que representam os estados de cada ciclo de vida.
- Autenticação
Auth.js
Sessão em middleware, com verificação de papel antes de alcançar a rota administrativa.
- Validação
Zod
Schema por entrada, aplicado no servidor. A validação de formulário é conveniência.
- Arquivos
Cloudinary
Documento e comprovante fora do banco.
- Integração
Base pública do CNJ
Sincronização de andamento processual com recorte deliberado do que é trazido.
Decisões de engenharia
Decisões e trade-offs
Cada decisão registra a justificativa e o trade-off aceito.
Autorização no middleware, antes da rota
Toda rota administrativa passa por um único ponto que verifica sessão e papel. Uma tela nova nasce protegida por padrão, em vez de depender de quem a criou lembrar de adicionar a verificação.
Custo aceito · A regra fica distante da tela que ela protege, e a lista de exceções precisa ser mantida com cuidado para não crescer sem controle.
Publicação controlada por estado
Lançamento e parecer têm ciclo de rascunho e publicação. O que o público vê é filtrado por estado, e não por existência do registro — assim o histórico administrativo permanece completo mesmo quando algo é despublicado.
Custo aceito · Toda consulta pública precisa lembrar do filtro de estado. O custo é mitigado concentrando as consultas públicas em pontos específicos, em vez de espalhá-las pelas páginas.
Importação com revisão antes da gravação
O leitor classifica cada linha e marca as que parecem resumo ou saldo, mas quem confirma é o operador. Uma heurística boa erra em silêncio; uma heurística que propõe erra na frente de quem sabe a resposta.
Custo aceito · A importação deixa de ser um clique e passa a exigir revisão. Para um histórico contábil, é o comportamento correto.
Por dentro da engenharia
Os problemas em detalhe
Cada bloco abre com o problema, mostra a solução e explica por que ela foi escolhida. Expanda o que interessar.
Sincronização com o tribunal sem trazer as partes
Problema
O portal precisa mostrar o andamento dos processos da administração. A base pública do tribunal devolve o processo inteiro — incluindo as partes, que são pessoas físicas identificáveis e, neste caso, moradores do próprio condomínio.
Solução
O cliente da integração consome apenas classe processual, assunto, órgão julgador, grau, data de ajuizamento e a movimentação mais recente. O campo de partes é ignorado explicitamente, com o motivo escrito no código para que ninguém o "conserte" depois. Data inválida vinda da fonte é descartada em vez de derrubar a sincronização inteira.
Por que foi feito assim
A integração ignora os dados pessoais das partes e armazena apenas os campos necessários ao acompanhamento. O que não entra no banco não vaza num backup, não precisa de política de retenção, não aparece por acidente numa exportação e não depende de ninguém lembrar de filtrá-lo na próxima tela. E descartar o registro ruim em vez de falhar é a escolha certa quando a fonte é externa e imperfeita: uma data malformada não pode impedir a atualização dos outros vinte processos.
Número de processo mascarado por posição
Problema
O número unificado de processo é público por natureza, mas identifica diretamente uma pessoa: com ele em mãos, qualquer um consulta o processo inteiro no tribunal. Publicá-lo completo no portal expõe o vizinho.
Solução
A máscara opera por posição dentro do número: preserva ano, ramo da justiça e tribunal — que dão contexto e permitem verificar do que se trata — e apaga sequencial, dígito verificador e unidade de origem, que são o que permite localizar o processo.
Por que foi feito assim
Mascarar tudo tornaria a informação inútil e devolveria a desconfiança que o portal existe para resolver. Mascarar por posição é o que mantém a utilidade pública e remove a capacidade de identificação — e só é possível porque o formato do número é padronizado, com cada faixa de dígitos significando uma coisa.
Leitor de planilha contábil heterogênea
Problema
Anos de balancete existem apenas em planilhas montadas por pessoas diferentes ao longo do tempo. O mês aparece por extenso e abreviado, com e sem acento; o ano com dois ou quatro dígitos; e linhas de saldo, total e disponibilidade estão misturadas com os lançamentos, com aparência idêntica.
Solução
O leitor normaliza o texto — remove acento, padroniza caixa e separadores — e tenta reconhecer o período tanto no cabeçalho quanto no nome da aba. Cada linha é classificada em receita ou despesa, e as que casam com o vocabulário de resumo são marcadas como prováveis cabeçalhos de grupo, desmarcadas por padrão na tela de conferência.
Por que foi feito assim
O ponto de decisão fica com quem sabe a resposta. Uma importação que adivinha e grava produz um balancete plausível e errado — o pior resultado possível, porque ninguém vai auditar um número que parece certo. Marcar a suspeita e pedir confirmação transforma a heurística em sugestão, e mantém a responsabilidade contábil onde ela deve estar.
Stack
Stack do projeto
O sistema em números
- 19
- Modelos de dados
- 41
- Rotas de API
- 51
- Páginas
- 13
- Enums de domínio
conferido no repositório em 27/08/2026
Status
Produção
Aplicação
Dados
Autenticação
Validação
Integrações
Visualização
Infraestrutura