... | ... | @@ -12,3 +12,137 @@ aqui deve ter: |
|
|
* Arquitetura básica do frontend
|
|
|
* Diagrama do sistema
|
|
|
* Diagrama de componentes
|
|
|
|
|
|
|
|
|
## 📋 Índice
|
|
|
|
|
|
- [Arquitetura](#-componentes)
|
|
|
- [API Documentation](#-api-documentation)
|
|
|
|
|
|
## 🏗 Componentes
|
|
|
|
|
|
O projeto é dividido em três principais componentes:
|
|
|
|
|
|
```
|
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
|
│ │ │ │ │ │
|
|
|
│ Frontend │◄──►│ Backend │◄──►│ PostgreSQL │
|
|
|
│ (Next.js) │ │ (Spring Boot) │ │ (Database) │
|
|
|
│ │ │ │ │ │
|
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
|
```
|
|
|
|
|
|
- **Frontend**: Aplicação Next.js com TypeScript, Tailwind CSS e shadcn/ui
|
|
|
- **Backend**: API REST com Spring Boot 3, Spring Security e JWT
|
|
|
- **Database**: PostgreSQL 16 com migrações Flyway
|
|
|
|
|
|
|
|
|
## 📁 Estrutura do Projeto
|
|
|
|
|
|
### Organização dos Repositórios
|
|
|
|
|
|
O projeto está organizado em um **monorepo** com separação clara de responsabilidades:
|
|
|
|
|
|
```
|
|
|
conexao-treinamento/
|
|
|
├── backend/ # API Spring Boot
|
|
|
│ ├── src/
|
|
|
│ │ ├── main/java/ # Código fonte principal
|
|
|
│ │ │ └── org/conexaotreinamento/
|
|
|
│ │ │ ├── config/ # Configurações (Security, OpenAPI, etc.)
|
|
|
│ │ │ ├── controller/ # Controllers REST
|
|
|
│ │ │ ├── dto/ # Data Transfer Objects
|
|
|
│ │ │ ├── entity/ # Entidades JPA
|
|
|
│ │ │ ├── enums/ # Enumerações
|
|
|
│ │ │ ├── exception/ # Tratamento de exceções
|
|
|
│ │ │ ├── repository/ # Repositórios JPA
|
|
|
│ │ │ ├── service/ # Lógica de negócio
|
|
|
│ │ │ └── specification/ # Especificações para queries dinâmicas
|
|
|
│ │ ├── resources/
|
|
|
│ │ │ ├── db/migration/ # Scripts Flyway
|
|
|
│ │ │ └── application.properties
|
|
|
│ │ └── test/ # Testes unitários e integração
|
|
|
│ ├── Dockerfile
|
|
|
│ └── pom.xml
|
|
|
├── web/ # Frontend Next.js
|
|
|
│ ├── app/ # App Router (Next.js 13+)
|
|
|
│ │ ├── administrators/ # Páginas de administradores
|
|
|
│ │ ├── students/ # Páginas de alunos
|
|
|
│ │ ├── trainers/ # Páginas de treinadores
|
|
|
│ │ └── ...
|
|
|
│ ├── components/ # Componentes React reutilizáveis
|
|
|
│ │ ├── ui/ # Componentes base (shadcn/ui)
|
|
|
│ │ └── ...
|
|
|
│ ├── lib/ # Utilitários e configurações
|
|
|
│ │ ├── api-client/ # Cliente API gerado automaticamente
|
|
|
│ │ └── ...
|
|
|
│ ├── hooks/ # Custom React hooks
|
|
|
│ ├── Dockerfile
|
|
|
│ └── package.json
|
|
|
├── docs/ # Documentação adicional
|
|
|
├── docker-compose.yml # Ambiente de desenvolvimento
|
|
|
├── docker-compose.test.yml # Ambiente de testes
|
|
|
└── README.md
|
|
|
```
|
|
|
|
|
|
### Principais Diretórios
|
|
|
|
|
|
#### Backend (`/backend`)
|
|
|
- **Controllers**: Endpoints REST organizados por domínio
|
|
|
- **Services**: Lógica de negócio e regras da aplicação
|
|
|
- **Repositories**: Acesso a dados com Spring Data JPA
|
|
|
- **DTOs**: Objetos para transferência de dados entre camadas
|
|
|
- **Entities**: Modelos de dados JPA com relacionamentos
|
|
|
- **Config**: Configurações de segurança, CORS, OpenAPI, etc.
|
|
|
|
|
|
#### Frontend (`/web`)
|
|
|
- **App Router**: Estrutura de rotas do Next.js 13+
|
|
|
- **Components**: Componentes React organizados por funcionalidade
|
|
|
- **Lib**: Cliente API auto-gerado, utilitários e configurações
|
|
|
- **Hooks**: Hooks customizados para gerenciamento de estado
|
|
|
|
|
|
|
|
|
## 📚 API Documentation
|
|
|
|
|
|
Após iniciar o backend, a documentação da API estará disponível em:
|
|
|
|
|
|
- **Swagger UI**: http://localhost:8080/swagger-ui.html
|
|
|
- **OpenAPI JSON**: http://localhost:8080/v3/api-docs
|
|
|
|
|
|
### Principais Endpoints
|
|
|
|
|
|
#### Autenticação
|
|
|
- `POST /api/auth/login` - Login de usuário
|
|
|
- `POST /api/auth/refresh` - Renovar token JWT
|
|
|
|
|
|
#### Usuários
|
|
|
- `GET /api/students` - Listar alunos
|
|
|
- `POST /api/students` - Criar novo aluno
|
|
|
- `GET /api/students/{id}` - Buscar aluno por ID
|
|
|
- `PUT /api/students/{id}` - Atualizar aluno
|
|
|
|
|
|
#### Treinadores
|
|
|
- `GET /api/trainers` - Listar treinadores
|
|
|
- `POST /api/trainers` - Criar novo treinador
|
|
|
- `GET /api/trainers/{id}` - Buscar treinador por ID
|
|
|
|
|
|
#### Exercícios
|
|
|
- `GET /api/exercises` - Listar exercícios
|
|
|
- `POST /api/exercises` - Criar novo exercício
|
|
|
- `GET /api/exercises/{id}` - Buscar exercício por ID
|
|
|
|
|
|
#### Agendamentos
|
|
|
- `GET /api/schedules` - Consultar agendamentos
|
|
|
- `POST /api/schedules` - Criar novo agendamento
|
|
|
- `GET /api/schedules/{id}` - Buscar agendamento por ID
|
|
|
|
|
|
> 💡 **Dica**: Use o Swagger UI para testar os endpoints interativamente
|
|
|
|
|
|
### Diretrizes
|
|
|
|
|
|
- ✅ Siga o padrão de commits (Conventional Commits)
|
|
|
- ✅ Execute testes antes de fazer push
|
|
|
- ✅ Mantenha o código bem documentado
|
|
|
- ✅ Teste suas alterações localmente
|
|
|
- ✅ Abra PRs pequenos e focados
|
|
|
- ❌ Não faça commit diretamente na `main` ou `develop` |