Isolamento por residência no middleware
Em vez de cada rota checar se o usuário é morador, um middleware faz isso antes de qualquer handler. Esquecer a verificação numa rota nova fica bem mais difícil.
estudo de caso / mobile + api
A república organizada num painel só.
Quem divide casa costuma organizar tarefas, compras e despesas em grupos de mensagem e planilhas. O RepublicApp junta tudo: residência com código de convite, tarefas com recorrência e responsável, lista de compras e um resumo de quem deve o quê.
É o mesmo app do celular, exportado para a web com o Expo e ligado a uma API própria neste servidor. Já existe uma residência de exemplo com moradores e tarefas recorrentes. Entre com a conta abaixo ou crie a sua.
Para testar o convite, crie uma conta nova e entre na residência pelo código
REP-BTJ6.
O projeto foi feito em equipe. As partes que fiz:
requireMembership isola os dados por residência. requirePremium bloqueia recursos do plano.
Cada módulo (auth, residences, tasks, expenses, shopping, history, reports) segue o mesmo caminho
model → schema → service → controller → routes. Os testes de integração rodam com
mongodb-memory-server, sem depender de um banco externo.
Em vez de cada rota checar se o usuário é morador, um middleware faz isso antes de qualquer handler. Esquecer a verificação numa rota nova fica bem mais difícil.
Tarefas diárias, semanais e mensais têm o próximo vencimento calculado na API, e um job agendado reabre as recorrentes todo dia.
O mesmo app em React Native roda no Android, no iOS e, nesta demo, no navegador via react-native-web.
Só o admin remove moradores, o admin não pode se remover e o último morador não pode sair. Assim, nenhuma residência fica sem dono.