Visão Geral do Projeto
O Zorzal Morazán é uma plataforma de inscrição e presença para uma universidade com vários campi. A equipe agenda sessões, os estudantes se inscrevem e registram presença, e a informação que antes vivia em planilhas agora entra e sai do Google Sheets. Eu a projetei e construí de ponta a ponta. A interface é em espanhol.
O que ela faz
- Contas de estudantes: login com e-mail e senha, com o Google ou com um link mágico, e a situação de formatura de cada estudante é mantida junto à conta.
- Sessões e registro de presença: a equipe agenda sessões e os estudantes se inscrevem. O registro de presença funciona no celular mesmo sem conexão, com um código de acesso próprio de cada sessão.
- Console de administração: três perfis (super administrador, administrador do sistema e administrador de área) limitados a um campus e a uma área acadêmica, com log de auditoria, fila de tarefas em segundo plano e configurações.
- Google Drive e Sheets: listas são importadas e exportadas, pastas são varridas e a plataforma aprende equivalências entre grafias e cabeçalhos.
- Notificações: e-mail e Telegram, com verificação de endereços, um registro de envios e uma cota diária.
- Campi de demonstração: campi de exemplo criados para demonstrações, que podem ser redefinidos quando necessário.

Presença que resiste a uma conexão ruim
O registro de presença acontece no local da atividade, pelo celular de um voluntário, onde o sinal nem sempre é bom. Ao abrir a tela com o código de acesso da sessão, a lista de estudantes inscritos é baixada uma única vez; depois, cada registro é salvo imediatamente no dispositivo e enviado quando a rede permite, em ordem e sem duplicidades. Como a lista já está no celular, quem não está inscrito é recusado na porta.

Como é construído
- API: ASP.NET Core sobre .NET 10 com EF Core e PostgreSQL. O projeto de domínio não depende de EF nem de ASP.NET, e os controllers permanecem enxutos.
- Web: um aplicativo React 19 de página única com Vite, TypeScript, Tailwind CSS v4 e TanStack Query, publicado na Vercel.
- Banco de dados: migrações somente de adição aplicadas com dbmate, além de dados de referência.
- Resiliência: a API roda em Docker com uma réplica de contingência por streaming, e a interface passa para o modo somente leitura quando a réplica responde.
- Testes: os testes de integração rodam contra um PostgreSQL real e migrado em um contêiner, e cada página e estado do aplicativo pode ser explorado no Storybook com dados simulados.