- Introducción
- Características
- Arquitectura del Sistema
- Tecnologías Utilizadas
- Microservicios
- Frontend
- Instalación y Configuración
- Integración Continua (CI/CD)
- Contribución
Sistema de Gimnacio FitDesk
- Modularidad: Cada dominio del negocio se implementa como un microservicio independiente.
- Escalabilidad: Diseñado para crecer y adaptarse a nuevos requerimientos.
- Seguridad: Implementación de seguridad con Spring Security , JWT y JWK Set URI en Cookies.
- Interfaz Intuitiva: Frontend moderno y responsive desarrollado en React 19.
- Documentación Completa: APIs documentadas con Swagger/OpenAPI.
- Integración Continua: Automatización del proceso de construcción y despliegue a través de GitHub Actions.
La solución se basa en una arquitectura de microservicios, la cual permite:
- Desarrollo y despliegue independiente: Cada servicio puede ser actualizado sin afectar a los demás.
- Comunicación mediante REST APIs: Los microservicios se comunican de forma segura y eficiente.
- Descubrimiento de Servicios: Utilización de Eureka Netflix para la gestión dinámica de servicios.
- Resiliencia: Implementación de patrones de resiliencia con Resilience4j.
- Mensajería Asincrona: Comunicación entre microservicios mediante Kafka.
- Circuit Breaker: Protección contra fallos en cascada entre microservicios.
- Balanceo y Gateway: Un API Gateway centraliza las solicitudes y distribuye la carga.
- Base de Datos Autónoma: Cada microservicio utiliza su propia base de datos PostgreSQL.
Diagrama de Seguridad:
- Java con Spring Boot, Spring Data y Spring Security.
- Spring Cloud Netflix Eureka: Para descubrimiento de servicios.
- Spring Cloud Gateway: Para balanceo de carga y gestión del tráfico.
- Spring Cloud Config: Gestión centralizada de configuraciones.
- Kafka: Comunicación asincrónica entre microservicios.
- JWT y JWK Set URI: Para autenticación y autorización segura.
- PostgreSQL: Bases de datos separadas para cada microservicio.
- Lombok: Para reducir código repetitivo.
- Resilience4j: Manejo de resiliencia en las llamadas a servicios.
- React 19: Desarrollo de la interfaz de usuario.
- Tailwind: Biblioteca de estilos.
- Shadcn: Biblioteca de componentes.
- Bun: Entorno de ejecución y gestor de paquetes.
- Axios: Cliente HTTP para consumir APIs REST.
- TanStack Query: Manejo de estado y caché de datos.
- React Hook Form: Gestión de formularios.
- Zod: Validación de esquemas.
- React Router: Navegación entre vistas.
- Zustand: Manejo de estado global.
- GitHub Actions: Para integración y despliegue continuo (CI/CD).
- Azure: Plataforma de nube para despliegue y alojamiento.
- Docker: Contenerización y despliegue simplificado.
Cada microservicio se encarga de un dominio específico:
- Funcionalidad:
- Gestión centralizada de usuarios y servicios.
- Descubrimiento de servicios: Permite que otros microservicios se registren y se descubran dinámicamente.
- Uso:
- Proporciona endpoints para registrar y monitorizar la disponibilidad de los microservicios.
- Facilita la escalabilidad al permitir que nuevos servicios se integren sin necesidad de reconfiguración manual.
- Funcionalidad:
- Administración y gestión de clientes.
- Permite operaciones CRUD (Crear, Leer, Actualizar y Eliminar) para la información de clientes.
- Uso:
- Asegura la integridad y consistencia de los datos de clientes a través de una base de datos dedicada.
- Facilita la integración con otros microservicios que necesiten acceder a la información de clientes.
- Funcionalidad:
- Gestión de autenticaciones y autorizaciones para asegurar el acceso a todos los microservicios.
- Implementa mecanismos de seguridad basados en JWT para controlar y validar el acceso a los endpoints.
- Uso:
- Centraliza la verificación de credenciales y la emisión de tokens de acceso.
- Se encarga de proteger los recursos sensibles del sistema.
- Documentación:
La aplicación React 19 centraliza las funcionalidades de todos los microservicios, ofreciendo:
- Dashboard: Visualización de estadísticas y métricas en tiempo real.
- Gestión Integral: Administración de usuarios, clientes, productos y ventas.
- Interfaz Moderna: Diseño responsive y experiencia de usuario optimizada.
- Java 21+
- Node.js 20+
- React 19
- Docker
-
Clonar Repositorios:
https://github.com/FitDesk/config-server.git https://github.com/FitDesk/msvc-chat.git https://github.com/FitDesk/msvc-notifications.git https://github.com/FitDesk/msvc-classes.git https://github.com/FitDesk/msvc-members.git https://github.com/FitDesk/msvc-billing.git https://github.com/FitDesk/gateway.git https://github.com/FitDesk/msvc-security.git https://github.com/FitDesk/eureka-server.git
-
Configurar Bases de Datos y Variables de Entorno: Revisa y ajusta los archivos de configuración o utiliza un archivo de ejemplo como
.env.example. -
Ejecutar los Microservicios:
./mvnw spring-boot:run
-
Clonar el Repositorio:
https://github.com/FitDesk/front-end.git
-
Instalar Dependencias:
bun install
-
Ejecutar la Aplicación:
bun run dev
Para automatizar la construcción y despliegue del proyecto, se ha implementado un pipeline de GitHub Actions. Este pipeline realiza las siguientes tareas:
-
Verificación en Pull Requests:
- Checkout del repositorio, configuración de JDK 21 y compilación con Maven.
- Verificación de la generación del JAR y construcción de la imagen Docker.
-
Construcción y Despliegue en Push:
- Construcción y validación del proyecto.
- Login en Docker Hub, construcción y push de la imagen Docker.
- Despliegue automático en Azure mediante Docker y Azure Container Service for WebApp.
¡Las contribuciones son bienvenidas! Si deseas colaborar:
- Clona el repositorio y crea una rama con un nombre descriptivo.
- Realiza tus cambios siguiendo las buenas prácticas de codificación.
- Envía un Pull Request detallando las mejoras o correcciones implementadas.
- Código de Conducta: Por favor, respeta el Código de Conducta del proyecto.





