Trabalho

Zorzal Morazán

Educação
.NET
React

Uma plataforma de inscrição e presença para uma universidade com vários campi: os estudantes se inscrevem em sessões e registram presença, mesmo sem conexão, enquanto a equipe administra listas, perfis e notificações.

A página de sessões do console de administração: um formulário para agendar uma sessão e, abaixo, a lista de sessões com o número de inscritos.

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.

A página inicial do console de administração, com as seções disponíveis para um super administrador.

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.

A tela de digitação do código de presença em um celular.

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.