memberflow-docker/memberflow-api/README.md

151 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

2025-05-29 20:05:41 +00:00
# MemberFlow API
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
MemberFlow es una plataforma integral para la gestión de academias de artes marciales, con funcionalidades que cubren usuarios, clases, asistencias, membresías, pagos y facturación. Este repositorio corresponde al **backend API** desarrollado en **Java + Spring Boot**.
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
---
## 🧱 Arquitectura General
El proyecto sigue una estructura modular con separación clara por dominios:
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
- **user_management_controllers**: gestión de usuarios (Admins, Teachers, Students, Roles, Permisos).
- **class_management_controllers**: gestión de clases, grupos, asistencias y membresías.
- **finance_management**: facturación, productos, líneas de factura, pagos, IVA.
- **config**: configuración de seguridad, Swagger y Web CORS.
2025-05-12 21:16:40 +00:00
---
2025-05-29 20:05:41 +00:00
## 🔐 Seguridad y JWT
Se utiliza Spring Security con JWT para autenticar y autorizar usuarios. El token se genera mediante el `AuthController` y se debe incluir en las peticiones siguientes vía header:
```
Authorization: Bearer <token>
```
### Roles soportados:
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
- `ADMIN`: acceso completo.
- `TEACHER`: acceso a su información y la de sus estudiantes.
- `STUDENT`: acceso solo a su perfil.
2025-05-12 21:16:40 +00:00
---
2025-05-29 20:05:41 +00:00
## 📂 Endpoints REST por módulo
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
### 🔑 Autenticación
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
| Método | URL | Descripción |
|--------|----------------------|------------------------|
| POST | `/auth/login` | Iniciar sesión |
| GET | `/users/me` | Datos del usuario logeado |
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
---
### 👥 Gestión de Usuarios
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
- `/api/v1/admins`
- `/api/v1/students`
- `/api/v1/teachers`
- `/api/v1/roles`
- `/api/v1/permissions`
- `/api/v1/notifications`
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
Soporta operaciones: `create`, `update`, `getById`, `getAll`, `delete`.
2025-05-12 21:16:40 +00:00
---
2025-05-29 20:05:41 +00:00
### 🏋️‍♂️ Gestión de Clases
| Entidad | Endpoint Base |
|----------------|-------------------------------|
| TrainingGroup | `/api/v1/training-groups` |
| TrainingSession| `/api/v1/training-sessions` |
| Assistance | `/api/v1/assistances` |
| Membership | `/api/v1/memberships` |
Las sesiones pueden generarse automáticamente por grupo. Las asistencias se vinculan a estudiantes y sesiones.
---
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
### 💰 Finanzas
| Entidad | Endpoint Base |
|-----------------|-----------------------------|
| Invoice | `/api/v1/invoices` |
| InvoiceLine | `/api/v1/invoice-lines` |
| ProductService | `/api/v1/products` |
| Payment | `/api/v1/payments` |
| IVAType | `/api/v1/iva-types` |
Incluye generación de PDF de facturas vía:
```
GET /api/v1/invoices/{id}/pdf
```
---
## 📄 Swagger UI
Disponible en:
```
http://localhost:8080/swagger-ui/index.html
```
Configurado a través de `SwaggerConfig.java`. Expone todos los endpoints REST con documentación interactiva.
---
## ⚙️ Configuración
Archivo: `application.properties`
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/mf_db
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.hibernate.ddl-auto=validate
spring.profiles.active=dev (opcional para datos de prueba)
```
---
## 🧪 Datos de prueba
La clase `TestDataSeeder` inserta automáticamente entidades para facilitar pruebas: usuarios, roles, permisos, clases, facturas, etc. Se activa con el perfil `dev`.
---
## 🧾 Uso y construcción
### En desarrollo local:
```bash
mvn clean install
```
Luego ejecutar `MemberFlowApplication` desde tu IDE.
### Docker:
Integrado en `docker-compose`, se despliega junto a MySQL y frontend automáticamente.
---
## ✅ Pruebas
```bash
mvn test
```
Incluye pruebas unitarias para cada servicio (`UserService`, `InvoiceService`, `MembershipService`, etc.).
---
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
## 📦 DTOs y Validaciones
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
Cada entidad tiene su correspondiente DTO con validaciones `javax.validation`, mapeo bidireccional y lógica encapsulada. Esto asegura una capa REST limpia y desacoplada del modelo de base de datos.
2025-05-12 21:16:40 +00:00
2025-05-29 20:05:41 +00:00
---