memberflow-docker/memberflow-api
Dennis Eckerskorn d256eb7cfb Updated API README 2025-05-29 22:05:41 +02:00
..
.idea test commit 2025-05-12 23:34:08 +02:00
libs Added and revised javadoc 2025-05-29 21:40:02 +02:00
src/main Added and revised javadoc 2025-05-29 21:40:02 +02:00
.gitignore Projects upload with docker working 2025-05-12 23:16:40 +02:00
README.md Updated API README 2025-05-29 22:05:41 +02:00
pom.xml Added and fixed invoice creation 2025-05-14 20:43:03 +02:00

README.md

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.