Pousada do Brejo
Sistema de gestão hoteleira entregue a uma pousada: reservas, hospedagens, quartos, financeiro e notificações em tempo real.

01O problema
A pousada controlava reservas, ocupação dos quartos e caixa de forma manual. Isso gerava reservas sobrepostas no mesmo quarto, pouca visibilidade do financeiro e nenhum histórico de quem alterou o quê.
02Meu papel
Projeto individual (jan–ago/2025), do levantamento de requisitos com o cliente à entrega: modelagem do banco, API, painel administrativo e infraestrutura.
03Arquitetura
04Decisões técnicas e trade-offs
Autenticar o WebSocket no frame CONNECT do STOMP
O navegador não permite cabeçalhos customizados no handshake do WebSocket. Um ChannelInterceptor lê o Authorization do frame CONNECT e valida o mesmo JWT da API REST.
Trade-off · Evita token na query string (que vaza em logs), mas exige que o cliente reconecte quando o token expira.
Simple broker em memória em vez de RabbitMQ
Uma única instância da API atende poucos usuários simultâneos. O broker embutido do Spring resolve sem outro serviço para operar.
Trade-off · Não escala horizontalmente: com duas instâncias, cada uma só entrega para os próprios clientes. Trocar por um relay STOMP externo resolve, se um dia for necessário.
Rotinas de negócio como jobs agendados com fuso explícito
Checkout automático, lembretes de reserva, inativação de usuários e limpeza de notificações rodam com @Scheduled e zone definida (America/Bahia), independente do fuso do servidor.
Trade-off · Simples e sem infraestrutura extra; o custo é não ter retry nem execução distribuída, aceitável com uma instância.
PDF a partir de HTML (Thymeleaf + OpenHTMLtoPDF)
Os comprovantes são templates HTML/CSS, fáceis de ajustar ao layout que o cliente pede, convertidos em PDF no servidor.
Trade-off · Suporte a CSS limitado (CSS 2.1 + parte do 3), compensado pela facilidade de manutenção.
05Desafios
- Reservas sobrepostas no mesmo quarto
- Validação de disponibilidade por intervalo de datas antes de criar ou editar reservas e hospedagens, e conversão de reserva confirmada em hospedagem sem duplicar ocupação.
- Rastreabilidade de ações sensíveis
- Auditoria das operações críticas e notificações para os perfis responsáveis quando algo é criado, editado ou excluído.
06Destaques
- Três perfis hierárquicos (DEV, ADMIN, GERENTE) com troca de senha obrigatória no primeiro acesso
- Regra anti-conflito: um quarto não aceita duas reservas/hospedagens no mesmo período
- Notificações em tempo real via STOMP sobre WebSocket, autenticadas por JWT
- Jobs agendados para checkout, lembretes de reserva e limpeza de dados
- Comprovantes e relatórios em PDF a partir de templates Thymeleaf