A native Android app (Kotlin + Jetpack Compose) to schedule, execute, and track climbing training programs. Fully configurable — no hardcoded routines. Made with AI.
| Category | Color | Purpose |
|---|---|---|
| Endurance | 🔵 | Aerobic capacity (ARC, 4x6, 1-on-1-off) |
| Power Endurance | 🟠 | Anaerobic intervals (Intensive Triples, 8-set circuits) |
| Strength | 🔴 | Max finger strength, low rep pulling |
| Power | 🟣 | Explosive contact strength, dynos |
| Mobility & Recovery | 🟢 | Stretching, CARs, tissue care |
| Antagonist & Core | 🔵 | Push-ups, TRX, shoulder stability |
Each exercise assigned to a day has a section that indicates its role in the session:
| Section | Purpose |
|---|---|
| Main | Primary focus of the day |
| Secondary | Supporting work that complements the main goal |
| Complementary | Warm-up, cool-down, prehab, or accessory work |
The app includes a few mock plans and exercises to get you going, but everything is fully customizable.
- Create exercises — Define the exercises you train (e.g. pull-ups, hangboard repeaters, ARCs).
- Build a plan — Assemble exercises into a weekly training plan, assigning them to specific days.
- Activate a plan — Only one plan is active at a time. The main screen shows today's exercises from that plan.
- Swipe through the week — Swipe left/right on the main screen to preview upcoming or past days.
- Run a workout — Tap any exercise to see its details and start a session using the built-in timer.
Each plan covers a single week. For multi-week programs, create a separate plan for each week and activate them in sequence.
The app supports Light, Dark, and System theme modes. Toggle between them from the main screen - upper right corner icon.
All your data (exercises + plans) can be exported to a single JSON file and imported back later. This is useful for backups, sharing plans with friends, or moving data between devices.
- Export — Saves everything to a
.jsonfile or shares it directly via any app (email, messaging, cloud storage). - Import — Loads a previously exported JSON file. Existing data with the same IDs gets overwritten; everything else is left untouched.
The JSON format is human-readable, so you can also hand-edit plans in a text editor and import them into the app. See app/src/main/assets/demo_climbing_plans.json for a working example.
[ UI Layer — Jetpack Compose + Material 3 ]
│
[ ViewModel Layer — StateFlow / Events ]
│
[ Domain Layer — Timer Engine / Use Cases ]
│
[ Data Layer — Room DB / Repositories ]
Stack: Kotlin 2.0 · Compose BOM 2024.06 · Room · Navigation Compose · Material 3
./gradlew assembleDebugRequires Android Studio Koala+ / AGP 8.5+ / JDK 17
Min SDK: 26 (Android 8.0) · Target SDK: 35
This project is licensed under the GNU General Public License v3.0.


