Skip to content

stub1t/OpenPushups

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’ͺ OpenPushups

A free, open-source PWA pushup coach modeled on Push Ups Workout (com.northpark.pushups) β€” an initial test sets your level, then an adaptive plan across 6 levels takes over. No account; progress is stored by a tiny bundled server so all your devices share one history.

Built as a single HTML file plus a tiny dependency-free Python server. Run it, open it in any browser, add it to your home screen, and go.

Screenshots

Home screen showing level progress and group schedule Workout screen with tap-to-count rep ring History screen showing completed sessions

Statistics screen with achievements Settings screen with theme and backup options

Features

  • Adaptive level program β€” an initial max-effort test sets your starting level; 6 levels Γ— 3 groups, and after each workout you rate it (so hard / just right / so easy) to move up or repeat
  • Initial test β€” one open-ended max set maps you to the right starting level
  • Freestyle mode β€” free push-up counting with no plan, logged to your history
  • Tap-to-count ring β€” tap the ring with a finger or your nose (phone face-up) to count each rep; auto-advances to rest when done
  • Rest timer β€” visual countdown ring between sets; skip or auto-advance
  • Dark / Light / Auto theme β€” follows system preference by default
  • Offline β€” service worker caches the app after the first load (saving progress requires the server to be reachable)
  • Server storage β€” progress lives in one JSON file on your own server (data/data.json), shared across devices; existing on-device data is migrated automatically on first load
  • Export / Import β€” back up and restore progress as JSON
  • Migrate from Push Ups Workout (Google Play) β€” import your existing progress via:
    • Manual wizard β€” pick your current level and group
    • Direct .puud file import β€” reads the app's backup file format (ZIP containing SQLite + JSON preferences), parsed entirely in the browser

Usage

Run the bundled server (Python stdlib only, no dependencies) and open it in a mobile browser:

docker compose up -d        # serves on port 8081
# or without Docker:
python3 server.py           # serves on port 8000

Progress is stored in data/data.json next to the app (gitignored). To update a deployment, git pull (or run update.sh, e.g. from cron) β€” updates never touch the data directory.

Migrating from the Push Ups Workout app

  1. In the old app: Settings β†’ Backup β€” save the .puud file to your device
  2. In OpenPushups: Settings β†’ Import .puud Backup β€” select the file
  3. Your full history and total rep count are imported automatically

Alternatively use the manual wizard (Settings β†’ Migrate from Push Ups Workout) to set your current level/group without a backup file.

Privacy

Everything stays on your own server. No analytics, no third-party requests β€” the app only talks to the host it was loaded from. The service worker caches the app for offline use immediately after first visit.

License

MIT

About

πŸ’ͺ Self-hosted pushup coach PWA β€” adaptive 6-level program, tap-to-count rep ring, progress stored on your own server

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors