This is a test - please ignore this repository!
Find a file
2026-05-04 16:45:56 +02:00
.idea Merge branch 'fix/ignore-intellij-config' into sattelgeschichten 2026-05-03 13:18:17 +02:00
.mvn/wrapper build: add Maven Wrapper 2026-04-28 16:18:25 +02:00
scripts Peak Detection 2026-04-06 23:41:33 +02:00
src Merge branch 'fix/remote-activity-unknown' into sattelgeschichten 2026-05-04 16:45:56 +02:00
.dockerignore More vibin 2025-11-28 21:04:38 +01:00
.env.example docs: add and refine project documentation 2026-05-02 17:37:27 +02:00
.gitignore Merge branch 'fix/ignore-intellij-config' into sattelgeschichten 2026-05-03 13:18:17 +02:00
.sdkmanrc chore: add .sdkmanrc for SDK version management 2026-04-28 09:37:38 +02:00
CONTAINERS.md docs: add and refine project documentation 2026-05-02 17:37:27 +02:00
CONTRIBUTING.md docs: add and refine project documentation 2026-05-02 17:37:27 +02:00
docker-compose.federation-test.yml Added Heatmaps 2026-01-01 23:48:05 +01:00
docker-compose.yml Update environment variable names in docker-compose 2026-02-26 07:32:26 +01:00
Dockerfile Add a font 2026-01-05 11:07:15 +01:00
mvnw build: add Maven Wrapper 2026-04-28 16:18:25 +02:00
mvnw.cmd build: add Maven Wrapper 2026-04-28 16:18:25 +02:00
ogr.sh Reverse Lookup for activities 2026-01-15 10:59:34 +01:00
pom.xml fix(testcontainers): align versions and stabilize PostGIS setup 2026-04-30 11:37:38 +02:00
README.md docs: add and refine project documentation 2026-05-02 17:37:27 +02:00

FitPub

FitPub is a self-hosted fitness tracking platform for the Fediverse. It lets people upload workout files, review their activities with maps and metrics, and share them through ActivityPub instead of locking them into a closed social network.

The project is built for people who want to keep control of their training data while still participating in a social graph that reaches Mastodon-compatible platforms and other ActivityPub servers.

What FitPub does

  • Imports activity files from GPS devices and training apps
  • Supports FIT and GPX uploads
  • Publishes activities to followers over ActivityPub
  • Provides public, followers-only, and private visibility modes
  • Applies privacy zones to protect sensitive start and end locations
  • Shows maps, metrics, timelines, and profile pages in a server-rendered web UI
  • Includes analytics such as summaries, personal records, achievements, training load, and heatmaps
  • Supports batch imports from ZIP archives

Why this project exists

Most fitness platforms combine activity storage, analysis, and social distribution inside one vendor-controlled product. FitPub separates those concerns. You can run your own instance, keep your own data, and still share workouts with people on the wider Fediverse.

Stack

FitPub is built with:

  • Java 17
  • Spring Boot 3
  • Thymeleaf
  • PostgreSQL with PostGIS
  • Flyway
  • ActivityPub-compatible federation

Project layout

  • src/main/java/ - application code
  • src/main/resources/templates/ - server-rendered views
  • src/main/resources/static/ - frontend assets
  • src/main/resources/db/migration/ - Flyway database migrations
  • src/test/ - automated tests
  • CONTAINERS.md - container deployment notes for Docker- or Podman-based setups

Deployment

FitPub is intended to be self-hosted.

For container-based deployment, see CONTAINERS.md.

Current scope

The repository already includes:

  • local accounts and authentication
  • activity upload and post-processing
  • federation endpoints and delivery logic
  • social features such as follows, comments, likes, notifications, and timelines
  • analytics and heatmap views
  • privacy-zone filtering for track data

Status

FitPub is an actively developed public project. The feature set is already substantial, but the codebase is still evolving and interface details may change as the platform matures.

Contributing

Issues and pull requests are welcome.

For contributor workflow, local setup, build steps, and test execution, see CONTRIBUTING.md.

License

No license file is currently present in this repository. Until one is added, reuse terms are not explicitly defined.