No description
  • Kotlin 88.1%
  • Go 10%
  • Shell 1.4%
  • Dockerfile 0.4%
Find a file
Jens Kulka 468257e909
All checks were successful
Build and Deploy Backend / build-and-push (push) Successful in 8s
Build and Deploy Backend / deploy (push) Successful in 3s
docs: rewrite README in English and remove emojis
2026-04-19 12:48:13 +02:00
.forgejo/workflows fix(ci): fix EOF indentation in workflow YAML 2026-04-19 12:32:02 +02:00
.husky feat(shared): setup multiplatform structure and migrate data layer to shared module 2026-04-17 11:17:10 +02:00
app fix(app): remove duplicate ComponentActivity import 2026-04-19 12:41:51 +02:00
backend fix(backend): prevent config panic and fix deployment workflow 2026-04-19 12:31:06 +02:00
gradle/wrapper initial commit 2026-04-17 11:05:15 +02:00
shared feat(shared): final multiplatform hardware bridges and fix deviceId name conflict 2026-04-17 12:31:16 +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 chore(ci): simplify setup by using fixed deployment path ~/pushbattles 2026-04-19 10:58:12 +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.