A multi-module Spring Boot application for storing and analyzing fitness activities from Garmin FIT files, GPX files, and TCX files. The application has a domain-driven modular architecture with separate storage engines and a unified Angular frontend.
- Import and store activities from Garmin FIT, GPX, and TCX file formats
- Query and filter activities by distance, ascent, location, and more
- Export activities in multiple formats (GPX, CSV)
- Analyze metrics: power, heart rate, cadence, elevation
- Interactive map visualization with Leaflet
- GeoJSON support for advanced geospatial queries
- JWT-based authentication with role-based access control
- EclipseStore for high-performance object persistence
- Full REST API for programmatic access
- JDK 25+
- Gradle 9.6+ (included via
gradlew) - Node.js 24+ (Gradle downloads and manages it)
- Optional: Docker for container deployment
-
Clone the repository:
git clone https://github.com/your-org/privactivity-activity-store.git cd privactivity-activity-store -
Build the application:
./gradlew build
-
Configure storage: Create
application-dev.propertiesinprivactivity-app/src/main/resources/with:privactivity.store.activity.storage-directory=${HOME}/privactivity-storage/activity privactivity.fit.import.directory=${HOME}/privactivity-import privactivity.bootstrap.admin-password-file.path=${HOME}/privactivity-secrets/admin-password.txt server.port=8090
On first startup, the application reads the initial admin password from the file above and uses it to create the default
adminaccount inusers.jsonif that file does not already exist. -
Run locally:
./bootRun.sh
This starts the application in development mode at
http://localhost:8090with hot-reload enabled. To use hot-reload web-frontend:./gradlew ngServe
- DEVELOPMENT.md — Architecture, layering, workflow, and testing conventions
- .github/copilot-instructions.md — AI coding agent guidelines
./bootRun.sh # Development server with hot-reload
./gradlew build # Full build (all modules + Angular frontend)
./gradlew :angular:ngServe # Start Angular dev server only
./build-docker-image.sh # Build and push Docker image- Backend: Spring Boot 4, EclipseStore, JUnit 5
- Frontend: Angular 21, Material UI, Leaflet
- Build: Gradle multi-project, Node.js (managed by Gradle)
- Storage: EclipseStore (object database, not SQL)
Please refer to DEVELOPMENT.md for detailed architecture, layering principles, and coding conventions.
See LICENSE file for details.