Visão Geral
API RESTful projetada para gerenciar agendamentos em um modelo multitenant, onde cada inquilino possui isolamento completo de dados. A autenticação é feita via JWT com refresh token, e o cache com Redis reduz a latência em consultas frequentes. O sistema foi construído com Spring Boot 3 e segue princípios de Clean Architecture.
Problema Resolvido
Pequenos negócios como clínicas e barbearias enfrentam dificuldade em gerenciar agendamentos de forma eficiente. Sistemas genéricos não atendem necessidades específicas e soluções enterprise são caras demais.
Objetivos
Arquitetura
Arquitetura em camadas seguindo Clean Architecture: Controllers → Services → Repositories. O multitenancy é implementado via schema isolation no PostgreSQL, onde cada inquilino possui seu próprio schema. O Redis atua como cache distribuído para consultas de horários disponíveis e dados de perfil.
Fluxo dos Dados
O cliente autentica via JWT → a requisição é interceptada por um filtro que identifica o inquilino → o controller valida os dados → o service aplica as regras de negócio → o repository persiste no schema do inquilino → a resposta é retornada com dados cacheados quando aplicável.
Funcionalidades
Tecnologias
Desafios
Aprendizados
Aprofundamento em estratégias de multitenancy, uso avançado de Spring Security com JWT, e otimização de consultas com Redis. Aprendi a importância de planejar o isolamento de dados desde o início da arquitetura.