Uma plataforma completa para gerenciar sua barbearia com segurança, profissionalismo e facilidade. 💈✨
O RaphaBarber é um sistema Full Stack moderno desenvolvido para barbearias gerenciarem seus negócios de forma eficiente. Com autenticação segura, agendamentos inteligentes e um painel administrativo, o Rapha pode focar no que faz de melhor: cortes impecáveis! 💇
Fase Atual: Sistema completo (Frontend + Backend) com toda a lógica de segurança, serviços e agendamentos implementada e em produção. 🚀
- ✅ Registro seguro de usuários (clientes e admin)
- ✅ Login com geração de JWT Token
- ✅ Senhas criptografadas (bcrypt)
- ✅ Controle de acesso por Roles (ADMIN/CLIENTE)
- ✅ Token com expiração de 1 hora
- ✅ CRUD completo de serviços
- ✅ Definição de preços e duração
- ✅ Descrições detalhadas
- ✅ Validações profissionais
- ✅ Agendamento com validação de data/hora
- ✅ Controle de disponibilidade (sem conflitos)
- ✅ Status do agendamento (AGENDADO, CONCLUÍDO, CANCELADO)
- ✅ Agenda diária do Rapha
- ✅ Histórico completo de cada agendamento
- ✅ Atualização e cancelamento de agendamentos
- ✅ Spring Security integrado
- ✅ Validação em todas as camadas (Controller → Service → Database)
- ✅ Mensagens de erro claras e úteis
- ✅ Proteção contra SQL Injection (JPA)
raphabarber/ ├── src/main/java/com/claudio/dev/raphabarber/ │ ├── controller/ 🌐 Endpoints HTTP │ │ ├── AuthController.java │ │ ├── ServicoController.java │ │ └── AgendamentoController.java │ │ │ ├── service/ 🧠 Lógica de Negócio │ │ ├── UsuarioService.java │ │ ├── ServicoService.java │ │ ├── AgendamentoService.java │ │ └── JwtService.java │ │ │ ├── repository/ 🗄️ Acesso ao Banco │ │ ├── UsuarioRepository.java │ │ ├── ServicoRepository.java │ │ └── AgendamentoRepository.java │ │ │ ├── model/ 📦 Entidades (JPA) │ │ ├── Usuario.java │ │ ├── Servico.java │ │ ├── Agendamento.java │ │ ├── StatusAgendamento.java │ │ └── UserRole.java │ │ │ └── RaphabarberApplication.java │ └── src/main/resources/ └── application.properties ⚙️ Configurações
Cliente HTTP Request ↓ Controller (Valida entrada) ↓ Service (Lógica de negócio) ↓ Repository (JPA) ↓ MySQL Database ↓ Response JSON 200/400/404
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /registrar |
Registrar novo usuário |
| POST | /login |
Fazer login (retorna JWT) |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /servicos |
Listar todos os serviços |
| GET | /servicos/{id} |
Buscar serviço por ID |
| POST | /servicos |
Criar novo serviço ⭐ |
| PUT | /servicos/{id} |
Atualizar serviço ⭐ |
| DELETE | /servicos/{id} |
Deletar serviço ⭐ |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /agendamentos |
Listar agendamentos ativos |
| GET | /agendamentos/{id} |
Buscar agendamento por ID |
| GET | /agendamentos/dia?data=YYYY-MM-DD |
📅 Agenda do dia (Rapha) |
| POST | /agendamentos |
Criar novo agendamento |
| PUT | /agendamentos/{id} |
Atualizar agendamento |
| DELETE | /agendamentos/{id} |
Cancelar agendamento |
⭐ Requer autenticação (token JWT)
| Tecnologia | Versão | Função |
|---|---|---|
| Java | 17 | Linguagem principal |
| Spring Boot | 3.x | Framework Web/Rest |
| Spring Security | 6.x | Autenticação |
| Spring Data JPA | 3.x | ORM Hibernate |
| JWT (JJWT) | 0.11.5 | Tokens seguros |
| MySQL | 8.0+ | Banco de dados |
| Maven | 3.9+ | Build & Dependências |
| Tecnologia | Função |
|---|---|
| React.js | Interface do Usuário |
| Vite | Build Tool rápida |
| Tailwind CSS | Estilização Responsiva |
| Axios | Consumo da API |
- 🔐 Spring Security para autenticação/autorização
- 🔑 JWT (JSON Web Tokens) para sessões
- 🔒 BCrypt para hash de senhas
- ✅ Validações em camadas (Controller → Service)
- ✅ Repositório e dependências
- ✅ Banco de dados MySQL
- ✅ Spring Security + JWT
- ✅ AuthController (Cadastro/Login)
- ✅ Classe Servico e Agendamento
- ✅ Métodos de agendamento e visualização de horários
- ✅ Validações de conflito de horários
- ✅ Projeto React com Vite e Tailwind CSS
- ✅ Tela de login/cadastro integrada ao JWT
- ✅ Painel de agendamentos funcional (Admin e Cliente)
- ✅ Consumo de rotas protegidas com Axios
- ✅ Deploy do banco e API (Railway)
- ✅ Deploy do Frontend (Vercel)
- ✅ Vídeo de demonstração (LinkedIn)
- MySQL rodando localmente
- Java 17+
- Node.js instalado
- Clone o repositório:
git clone [https://github.com/claudiondev/raphabarber.git](https://github.com/claudiondev/raphabarber.git)
Backend: Configure o application.properties com suas credenciais do MySQL e rode:
Bash
./mvnw spring-boot:run
Frontend:
Bash
npm install
npm run dev
👨💻 Autor
Claudio Nascimento
🔗 GitHub: @claudiondev
💼 LinkedIn: linkedin.com/in/claudionascimento-dev
📧 Email: claudinhon152@gmail.com
⭐ Se este projeto foi útil, deixe uma star! ⭐
Desenvolvido para a RaphaBarber!
Status: 🟢 Production Ready | Última atualização: Maio de 2026