REST API for the TrackThat mobile app.
The API provides Google authentication and manages application data such as users, workouts and workout logs.
- Java
- Spring Boot
- Spring Data MongoDB
- MongoDB
- Maven
- MapStruct
- JWT authentication
- Google authentication
- Testcontainers
- JUnit
- Java 21
- Docker
- Maven Wrapper
Docker is required for integration tests using Testcontainers.
Start the application locally:
./mvnw spring-boot:runThe application uses the local Spring profile configuration where required.
Build the application:
./mvnw clean packageThe executable Spring Boot JAR is written to:
target/
Run the complete test suite:
./mvnw clean verifyIntegration tests use Testcontainers to start the required MongoDB instance automatically.
Tests are also executed automatically through GitHub Actions for pushes and pull requests targeting the main branch.
The application requires environment-specific configuration.
GOOGLE_CLIENT_ID=
JWT_SECRET=
MONGODB_URI=
PORT=
Sensitive values should not be committed to the repository.
The application exposes REST endpoints for:
- Google authentication
- User management
- Workout management
- Workout log management
The production API is hosted on Fly.io.
Deployments are handled through GitHub Actions after the test suite has completed successfully.
as of September 22, 2026:
| Technology | Version |
|---|---|
| Java | 21 |
| Spring Boot | 3.5.16 |
| JJWT | 0.13.0 |
| MapStruct | 1.6.3 |
| Google API Client | 2.9.1 |
| Google Auth Library | 1.52.0 |
Check the local Java and Maven versions:
java --version
./mvnw --version