Paulo.dev
Projeto em Destaque2025fullstack

Room Scheduler

Sistema corporativo de gestão de salas com prevenção de conflitos, RBAC, auditoria JPA & iCalendar

O Room Scheduler é um sistema corporativo completo para gestão e agendamento de salas de reunião projetado para eliminar sobreposições de horários. Diferente de um CRUD comum, o sistema implementa uma lógica transacional stateful com algoritmo matemático de prevenção de conflitos (StartA < EndB && EndA > StartB) diretamente no banco relacional, garantindo integridade mesmo sob alta concorrência. A solução inclui segurança RBAC estrita, auditoria automática JPA, exportação de convites para calendário (.ics RFC 5545), notificações por e-mail e dashboard analítico de ocupação.

Java 21Spring Boot 3Next.js 16PostgreSQLSpring SecurityJWTSwagger OpenAPIFlywayDockeriCalendar
Aviso de Inicialização (Cold Start)

O Back-End desta aplicação está hospedado no plano gratuito do Render. Caso o serviço esteja em repouso (cold start), a primeira inicialização pode levar de 30 a 60 segundos para carregar os dados.

Room Scheduler
Clique para inspecionar em tela cheia

O Desafio de Negócio

Conflitos de agendamento e sobreposição de horários (Double Booking) em empresas e coworkings geram atritos e perda de produtividade. Ferramentas descentralizadas e planilhas não oferecem validação atômica de horários, carecem de regras de SLA de cancelamento (ex: antecedência mínima de 24h), não registram trilha de auditoria e não disponibilizam métricas claras sobre a taxa de ocupação dos espaços.

A Solução de Engenharia

Engenharia de uma plataforma Web Full-Stack desacoplada. A API RESTful em Java 21 LTS e Spring Boot implementa arquitetura em camadas (Controller -> Service -> Repository) com isolamento rigoroso por DTOs, autenticação Stateless via Spring Security + JWT, controle de acesso baseado em papéis (USER vs ADMIN), auditoria JPA com @EnableJpaAuditing, versionamento Flyway com índices otimizados, serviço de e-mails assíncronos e gerador de arquivos .ics RFC 5545 (Google Calendar, Apple, Outlook). O Front-End em Next.js 16 (App Router) e React 19 oferece grade diária interativa de ocupação por sala, validação de senha em tempo real com 5 critérios de segurança, Next.js Edge Middleware para proteção de rotas, gráficos de uso e exportação CSV.

Galeria de Telas & Fluxos do Sistema

Explore as telas completas da aplicação, fluxos operacionais, dashboards em tempo real e painéis administrativos.

Grade Diária de Ocupação & Timeline
Expandir Tela

Grade Diária de Ocupação & Timeline

Visualização interativa da disponibilidade das salas por horário com seletor de datas e status em tempo real.

Catálogo & Gestão de Salas
Expandir Tela

Catálogo & Gestão de Salas

Interface para visualização e gerenciamento de salas com capacidade, recursos disponíveis e restrições.

Minhas Reservas & Exportação iCalendar
Expandir Tela

Minhas Reservas & Exportação iCalendar

Painel do usuário para acompanhar agendamentos, aplicar cancelamento dentro da regra de SLA e baixar convites .ics.

Dashboard de Analytics & Métricas
Expandir Tela

Dashboard de Analytics & Métricas

Indicadores em tempo real de distribuição de ocupação por sala e volume total de horas agendadas.

Painel Administrativo de Usuários & RBAC
Expandir Tela

Painel Administrativo de Usuários & RBAC

Controle de perfis (USER / ADMIN), permissões de acesso, auditoria e exportação de relatórios CSV.

Blueprint de Arquitetura & Stack Técnica

Interface / Frontend

Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS, Edge Middleware

Back-End & Regras de Negócio

Java 21 LTS, Spring Boot 3, Spring Security 6, JWT, JavaMailSender, Swagger OpenAPI 3, Actuator

Banco de Dados & Persistência

PostgreSQL 15, Spring Data JPA, Hibernate, Flyway Migrations

DevOps, Testes & Deploy

Docker, Docker Compose, GitHub Actions (CI), Vercel, JUnit 5, Mockito

Principais Recursos & Regras de Negócio

Prevenção Matemática de Conflitos (Double Booking): Bloqueio atômico de sobreposição de horários (StartA < EndB && EndA > StartB) no PostgreSQL
Segurança & RBAC Estrito: Autenticação JWT Stateless, controle de perfis (USER vs ADMIN) e proteção de rotas no Next.js Edge Middleware
Regras de Negócio & SLA de Cancelamento: Cancelamento permitido a usuários comuns apenas com 24h de antecedência e override irrestrito para Admins
Integração iCalendar (.ics RFC 5545): Exportação direta de convites padronizados para sincronização no Google Agenda, Apple Calendar e Outlook
Grade Diária Interativa de Ocupação: Visualização em linha do tempo das salas com seletor de datas e status visual em tempo real
Auditoria JPA & Lifecycle Hooks: Registro determinístico de created_at e updated_at com @EnableJpaAuditing e callbacks @PrePersist/@PreUpdate
Notificações por E-mail (JavaMailSender): Disparo automático de confirmações e cancelamentos de reservas com fallback resiliente
Validador Dinâmico de Força de Senha: Checklist interativo com 5 requisitos de segurança e feedback visual instantâneo no formulário
Painel Administrativo & Métricas de Ocupação: Indicadores de uso por sala, total de horas reservadas, gestão de usuários e exportação CSV
Documentação Interativa Swagger / OpenAPI 3: Testes de endpoints ao vivo via interface /swagger-ui.html com 25 testes no backend

Desafios de Engenharia & Decisões Técnicas

Algoritmo de Prevenção de Conflitos & Isolamento Transacional

Implementação da validação matemática de intervalos no banco relacional com índices compostos (idx_bookings_room_time) para garantir integridade atômica e performance mesmo sob rajadas de requisições simultâneas.

Arquitetura RBAC & Edge Route Guards

Estruturação de segurança em múltiplas camadas: validação de claims e roles no Spring Security e interceptação preventiva no Edge Middleware do Next.js antes da renderização de páginas administrativas.

Padrão RFC 5545 iCalendar & Compatibilidade Multiplataforma

Desenvolvimento do motor de serialização de eventos de calendário no formato MIME text/calendar, assegurando compatibilidade nativa com Google Agenda, Apple e Outlook.

Experimente a Aplicação na Prática

Acesse a versão em produção online ou explore o código-fonte e arquitetura no repositório oficial.

Nota: Back-End no Render Free Tier (pode levar 30s–120s na primeira requisição)