Kore é uma plataforma de gestão para salões e estúdios, desenvolvida como projeto de faculdade em arquitetura de monorepo. O sistema reúne gestão de usuários, agendamentos, produtos, estoque, transações financeiras, autenticação e notificações em tempo real.
O projeto está dividido em três partes principais:
- backend/kore: API principal da aplicação
- backend/notification: microsserviço de notificações
- front-end: interface web em React + Vite
A solução também conta com um ambiente de testes em test/backend, com suporte a containers para integração automatizada.
| Camada | Tecnologias |
|---|---|
| Backend principal | Java 21, Spring Boot 4.0.3, Maven, Spring Security, JPA, JWT |
| Microsserviço de notificações | Java 21, Spring Boot 4.1.1, RabbitMQ, JPA |
| Frontend | React 19, Vite 8, Tailwind CSS 4, DaisyUI |
| Banco de dados | MySQL |
| Mensageria | RabbitMQ |
| Arquivos | AWS S3 (configurável) |
| Testes | JUnit, Spring Test, Testcontainers |
| Documentação de API | Swagger / OpenAPI |
A API principal segue a estrutura em camadas:
controller -> service -> repository -> model (JPA entities)
Principais responsabilidades:
- autenticação com JWT
- cadastro e gestão de usuários
- gestão de produtos, categorias e estoque
- agendamentos, transações e finanças
- geração e persistência de notificações
- envio de eventos via SSE para atualização em tempo real
O serviço de notificações segue um modelo mais enxuto e orientado a casos de uso:
adapters/entities -> adapters/repositories -> application/useCases -> entities
Ele escuta eventos enviados pela API principal via RabbitMQ e processa as notificações de forma desacoplada.
A interface web é uma SPA em React com rotas protegidas, contexto para estados globais e comunicação com o backend via Axios e SSE.
- autenticação e autorização com JWT
- cadastro e login de usuários
- painel administrativo e financeiro
- agendamentos e controle de sessões
- catálogo de produtos, categorias e estoque
- registro de transações
- notificações em tempo real
- upload de fotos de produtos
- dashboard com métricas e indicadores
- documentação da API via Swagger
kore-sptech/
├── README.md
├── backend/
│ ├── .env.example
│ ├── docker-compose.yml
│ ├── docker-compose.dev.yml
│ ├── README-DOCKER.md
│ ├── kore/
│ │ ├── Dockerfile
│ │ ├── mvnw
│ │ └── src/
│ ├── notification/
│ │ ├── Dockerfile
│ │ ├── mvnw
│ │ └── src/
│ └── ...
Antes de rodar o projeto, verifique se você possui:
- Docker e Docker Compose
- Java 21
- Maven
- Node.js 20+ e npm
- Git
Crie o arquivo de ambiente do backend com base no exemplo:
cd backend
cp .env.example .envVariáveis importantes:
JWT_SECRET: chave secreta para assinatura dos tokensFRONT_END_URL: origem permitida para CORS / SSEAWS_*: credenciais do S3 para upload de imagensRABBITMQ_DEFAULT_USEReRABBITMQ_DEFAULT_PASS: usuário e senha do RabbitMQ
Na raiz do backend:
cd backend
# Ambiente de desenvolvimento com hot reload
docker compose -f docker-compose.dev.yml up --buildEsse ambiente sobe:
- API principal em
http://localhost:8080 - Microsserviço de notificações em
http://localhost:8081 - MySQL em
localhost:3306 - RabbitMQ em
localhost:5672 - RabbitMQ Management em
http://localhost:15672(usuário:guest, senha:guest) - Porta de debug em
localhost:5005
Para rodar a API principal localmente, será necessário ter o MySQL em execução e ajustar as variáveis de ambiente:
cd backend/kore
./mvnw spring-boot:runcd front-end
npm install
npm run devA aplicação frontend fica em:
http://localhost:5173
A aplicação principal expõe a documentação OpenAPI/Swagger em:
http://localhost:8080/swagger-ui.html
O backend principal expõe o fluxo SSE em:
/sse/stream
O frontend se conecta a esse endpoint via NotificationProvider, permitindo notificações instantâneas sem polling constante.
A comunicação entre os serviços utiliza RabbitMQ. A fila principal é:
notification-queue
A API principal publica eventos de notificação e o microsserviço de notificações os consome.
cd backend/kore
./mvnw testTestes do projeto usam Testcontainers e exigem Docker em execução.
cd front-end
npm run lint
npm run buildcd backend/kore
./mvnw clean install
./mvnw test
./mvnw spring-boot:runcd backend/notification
./mvnw clean install
./mvnw spring-boot:runcd front-end
npm install
npm run dev
npm run build
npm run preview- O projeto usa arquitetura de monorepo com serviços independentes, mas integrados.
- O backend principal e o microsserviço de notificações possuem configurações próprias e dependem de variáveis de ambiente e de infraestrutura externa.
- O armazenamento de fotos foi configurado para o diretório do frontend em
front-end/public/uploadspara facilitar o desenvolvimento local. - O projeto foi pensado para desenvolvimento em ambiente local e integração com Docker, preservando fluxo de hot reload e debug.
Este projeto foi desenvolvido como parte de atividade acadêmica e não foi definido um modelo de licença específico até o momento.