No description
  • Kotlin 88.7%
  • Go 9.7%
  • Shell 1.2%
  • Dockerfile 0.3%
Find a file
Jens Kulka 7411c56124
Some checks failed
Build and Deploy Backend / build-and-push (push) Failing after 13s
Build and Deploy Backend / deploy (push) Has been skipped
Merge pull request 'fix(ci): rename registry secrets away from reserved FORGEJO_ prefix' (#3) from fix/ci-secret-names into main
Reviewed-on: #3
2026-08-01 16:12:31 +02:00
.forgejo/workflows fix(ci): rename registry secrets away from reserved FORGEJO_ prefix 2026-08-01 16:12:16 +02:00
.husky feat(shared): setup multiplatform structure and migrate data layer to shared module 2026-04-17 11:17:10 +02:00
app feat(app): add pike pushups as a third exercise type 2026-08-01 15:15:37 +02:00
backend feat(app): add pike pushups as a third exercise type 2026-08-01 15:15:37 +02:00
docs fix(ci): rename registry secrets away from reserved FORGEJO_ prefix 2026-08-01 16:12:16 +02:00
gradle/wrapper initial commit 2026-04-17 11:05:15 +02:00
shared feat(app): add pike pushups as a third exercise type 2026-08-01 15:15:37 +02:00
.gitignore fix(backend): prevent config panic and fix deployment workflow 2026-04-19 12:31:06 +02:00
build.gradle.kts feat(shared): final multiplatform hardware bridges and fix deviceId name conflict 2026-04-17 12:31:16 +02:00
commitlint.config.js chore: setup project documentation and commit-linting infrastructure 2026-04-17 11:17:04 +02:00
deploy.sh feat(shared): final multiplatform hardware bridges and fix deviceId name conflict 2026-04-17 12:31:16 +02:00
DEPLOYMENT.md fix(ci): rename registry secrets away from reserved FORGEJO_ prefix 2026-08-01 16:12:16 +02:00
docker-compose.yml initial commit 2026-04-17 11:05:15 +02:00
DOKUMENTATION.md initial commit 2026-04-17 11:05:15 +02:00
example.png initial commit 2026-04-17 11:05:15 +02:00
gradlew initial commit 2026-04-17 11:05:15 +02:00
INSTALL.md initial commit 2026-04-17 11:05:15 +02:00
log initial commit 2026-04-17 11:05:15 +02:00
log.png initial commit 2026-04-17 11:05:15 +02:00
log2.png initial commit 2026-04-17 11:05:15 +02:00
package-lock.json chore: setup project documentation and commit-linting infrastructure 2026-04-17 11:17:04 +02:00
package.json chore: setup project documentation and commit-linting infrastructure 2026-04-17 11:17:04 +02:00
PORTING_PLAN.md initial commit 2026-04-17 11:05:15 +02:00
README.md docs: rewrite README in English and remove emojis 2026-04-19 12:48:13 +02:00
settings.gradle.kts feat(shared): final multiplatform hardware bridges and fix deviceId name conflict 2026-04-17 12:31:16 +02:00

PushBattles

PushBattles is a gamified fitness application that transforms pushups and planks into epic boss battles. Use your smartphone camera to automatically count repetitions and defeat monsters through physical exertion.

Features

  • AI Tracking: Automatic detection of pushups and planks via MediaPipe Pose Detection.
  • Boss Battles: Your exercises reduce the boss's HP. Defeat them to level up.
  • Streak System: Maintain your daily series for pushups and planks by defeating at least one boss every day.
  • Leaderboard: Compete with other players worldwide to achieve the highest score and the longest streak.
  • Remote Balancing: Adjust game values such as XP, damage, and difficulty live via a central configuration file on the server.
  • History: Track your progress and view records of defeated bosses.

Tech Stack

Frontend (Mobile App)

  • Language: Kotlin
  • UI: Jetpack Compose (Material 3)
  • AI/ML: Google MediaPipe Pose Landmarker
  • Database: Room SQLite
  • Networking: Ktor Client / Retrofit

Backend (Server)

  • Language: Go (Golang)
  • Framework: Gin Gonic
  • Database: SQLite (via sqlx)
  • Deployment: Docker and Docker Compose

Installation

1. Start Backend (Docker)

The backend runs in a Docker container and uses a volume for configuration.

cd backend
docker-compose up -d

2. Adjust Balancing

You can modify the game values in backend/config.json. Restart the backend afterwards:

docker-compose restart pushbattles-backend

3. Android Application

  1. Open the project in Android Studio.
  2. In the app settings, enter your server IP address (Default for emulator: http://10.0.2.2:8080).
  3. Build and run the application on your smartphone or emulator.

Roadmap

  • Migration to Kotlin Multiplatform (KMP) for iOS support.
  • Full integration of Ktor for cross-platform networking.
  • Enhanced boss animations and sound effects.

License

This project is licensed under the MIT License.