memberflow-docker/memberflow-api/README.md

3.9 KiB

MemberFlow API

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.


🧱 Arquitectura General

El proyecto sigue una estructura modular con separación clara por dominios:

  • 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.

🔐 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:

  • ADMIN: acceso completo.
  • TEACHER: acceso a su información y la de sus estudiantes.
  • STUDENT: acceso solo a su perfil.

📂 Endpoints REST por módulo

🔑 Autenticación

Método URL Descripción
POST /auth/login Iniciar sesión
GET /users/me Datos del usuario logeado

👥 Gestión de Usuarios

  • /api/v1/admins
  • /api/v1/students
  • /api/v1/teachers
  • /api/v1/roles
  • /api/v1/permissions
  • /api/v1/notifications

Soporta operaciones: create, update, getById, getAll, delete.


🏋️‍♂️ 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.


💰 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

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:

mvn clean install

Luego ejecutar MemberFlowApplication desde tu IDE.

Docker:

Integrado en docker-compose, se despliega junto a MySQL y frontend automáticamente.


Pruebas

mvn test

Incluye pruebas unitarias para cada servicio (UserService, InvoiceService, MembershipService, etc.).


📦 DTOs y Validaciones

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.