Segundo cerebro técnico para Brazilian Jiu-Jitsu
API REST construida con Spring Boot 4, arquitectura hexagonal por bounded contexts y PostgreSQL 17.
| Capa | Tecnología |
|---|---|
| Lenguaje | Java 25 |
| Framework | Spring Boot 4.x (Spring Framework 7) |
| Base de datos | PostgreSQL 17 |
| Migraciones | Flyway (V200–V265) |
| ORM | JPA / Hibernate 7 |
| Mapping | MapStruct + Lombok |
| Tests | JUnit 5, AssertJ, JaCoCo |
| API Docs | springdoc-openapi (Swagger UI) |
| Seguridad | Spring Security 7, JWT RS256, OAuth2 Google |
| CI/CD | GitHub Actions + Docker + GHCR |
com.ossflow/
├── catalog/ # Técnicas, posiciones, ejercicios, reglamentos
├── journal/ # Sesiones BJJ y físicas, notas, competiciones
├── planning/ # Planes de estudio, plantilla semanal, rutinas
├── coaching/ # Relación maestro-atleta, observaciones, notas, sesiones privadas
├── dashboard/ # Radares de análisis técnico y físico
├── identity/ # Perfil, cinturón, federaciones
└── shared/ # Seguridad, excepciones, configuración
- JDK 25 (
sdk install java 25.0.3-temcon SDKMAN) - PostgreSQL 17 corriendo localmente (o vía Docker)
- Maven 3.9+
docker run -d \
--name ossflow-pg \
-e POSTGRES_DB=ossflow_dev \
-e POSTGRES_USER=ossflow \
-e POSTGRES_PASSWORD=ossflow \
-p 5432:5432 \
postgres:17-alpine./mvnw spring-boot:run -Dspring-boot.run.profiles=devLa API arranca en http://localhost:8080.
Swagger UI disponible en http://localhost:8080/swagger-ui.html.
./mvnw clean verify # build + tests + jacoco
./mvnw test # solo tests| Perfil | Base de datos | Uso |
|---|---|---|
dev |
PostgreSQL local (ossflow_dev) |
Desarrollo local, Swagger habilitado |
test |
PostgreSQL (CI) | Tests de integración |
prod |
PostgreSQL externo (env vars) | Producción |
Variables de entorno para prod: POSTGRES_HOST, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, AUTH_JWT_PRIVATE_KEY_B64, AUTH_JWT_PUBLIC_KEY_B64.
docker build -t ossflow-backend .
docker run -d \
-e SPRING_PROFILES_ACTIVE=prod \
-e POSTGRES_HOST=<host> \
-e POSTGRES_DB=ossflow \
-e POSTGRES_USER=<user> \
-e POSTGRES_PASSWORD=<pass> \
-p 8080:8080 \
ossflow-backend