https://github.com/todofixme/gps-tools-backend
Spring/Kotlin Backend of GPS-Tools
https://github.com/todofixme/gps-tools-backend
geojson gpx kotlin openapi spring-boot tcx
Last synced: about 2 months ago
JSON representation
Spring/Kotlin Backend of GPS-Tools
- Host: GitHub
- URL: https://github.com/todofixme/gps-tools-backend
- Owner: todofixme
- Created: 2024-01-07T07:43:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-09T08:26:04.000Z (about 2 months ago)
- Last Synced: 2025-03-09T09:24:32.278Z (about 2 months ago)
- Topics: geojson, gpx, kotlin, openapi, spring-boot, tcx
- Language: Kotlin
- Homepage:
- Size: 475 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Backend of GPS-Tools based on Spring/Kotlin
Used as backend (REST-API) for [GPS-Tools Frontend](https://github.com/devshred/gps-tools-frontend).
## Prod-environment
The prod "server" is running at home on a [Raspberry Pi](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/).The prod website is hosted by [Cloudflare](https://www.cloudflare.com/) at: https://gps-tools.pages.dev/
## Features
* imports data as [FIT](https://developer.garmin.com/fit/overview/), [GPX](https://www.topografix.com/gpx.asp) and [GeoJSON](https://geojson.org/)
* exports data as [TCX](https://www8.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd), [GPX](https://www.topografix.com/gpx.asp) and [GeoJSON](https://geojson.org/)
* converts seamlessly between these formats
* optimizes waypoints to improve performance on GPS-devices
* merges files
* stores data locally as [proto3-files](https://protobuf.dev/).Currently, no persisted storage is used, but the data is stored in memory. Every time the backend is restarted, all data is lost.
## OpenAPI spec
The backend is based on an [OpenAPI spec](https://editor.swagger.io/?url=https://raw.githubusercontent.com/devshred/gps-tools-backend/main/src/main/spec/api-spec.yaml) and interfaces are generated by the [kotlin-spring Generator](https://openapi-generator.tech/docs/generators/kotlin-spring/).## How-to run
```shell
./gradlew bootRun
```
## How-to test
There are different ways to test the application
* start the [frontend](https://github.com/devshred/gps-tools-frontend)
* use the REST-API with [some example requests](src/test/http/gps-files.http)
* run all tests:
```shell
./gradlew test
```## Release process
This project is using [semantic versioning](https://semver.org/) and [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/).
Codequality will be checked by [ktlint](https://github.com/pinterest/ktlint).To add some code:
* create branch, do some changes
* commit messages should respect [Angular Commit Guidelines](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format)### create tag and increase SNAPSHOT-number locally
```shell
./gradlew release
```
### create release on GitHub
* rebase to main branch
* release manually
* a GitHub Actions workflow will build a new Docker image automatically