The REST API that powers Demy, a multiplatform academy-management product built by Nistra. It centralizes identity, institutions, enrollment, scheduling, attendance, billing, and accounting so the administrator, teacher, and student applications share one source of truth.
- JWT-based authentication, account recovery, and role-aware access.
- Academy, teacher, student, course, classroom, and academic-period management.
- Enrollment and schedule workflows for administrators, teachers, and students.
- Attendance recording and reporting.
- Billing, transactions, financial summaries, and PDF/Excel report endpoints.
- English and Spanish message bundles.
- OpenAPI 3 documentation through Swagger UI.
The service is built with Java 21, Spring Boot, Spring Data JPA, and MySQL. Its package structure follows Domain-Driven Design with these bounded contexts:
com.nistra.demy.platform
├── iam
├── institution
├── enrollment
├── scheduling
├── attendance
├── billing
├── accountingfinance
└── shared
Each bounded context separates application, domain, infrastructure, and interface concerns. shared contains cross-cutting infrastructure rather than business ownership.
- JDK 21
- MySQL 8+
- The included Maven Wrapper
Configure the variables referenced by application.properties and application-dev.properties, including the database connection, JWT settings, documentation contact, and mail sender. Then run:
SPRING_PROFILES_ACTIVE=dev ./mvnw spring-boot:runThe default local endpoints are:
- API:
http://localhost:8080/api/v1 - Swagger UI:
http://localhost:8080/swagger-ui/index.html - OpenAPI document:
http://localhost:8080/v3/api-docs
Swagger advertises a relative server URL, so requests stay on the host that served the documentation.
./mvnw test
./mvnw packageIntegration tests require a valid MySQL test configuration.
See CONTRIBUTING.md for the Git workflow and coding conventions.


