v1.6
All checks were successful
Build & Release APK / build (push) Successful in 56m28s
Desktop runner (marcusDesktop) is off; runs 4-5 queued indefinitely. ubuntu-latest label targets the VPS docker runner so releases ship now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Kegel
Pelvic floor trainer for sexual performance — a free, local-only take on what Stamina was before it went paid. Expo / React Native, Android + iOS.
How it works
A session is four guided blocks driven by a step timer with haptic cues:
- Holds — 8 × squeeze-and-hold. This is the progressive-overload driver: holds start at 5s and grow +1s every 3 completed sessions (capped at 30s). Manual ±1s adjustment in Settings.
- Pushes — 5 × reverse kegel (gently bear down). Scales at half the rate of holds, capped at 12s.
- Quick squeezes — 10 × 1s burst contractions with 1s release.
- Quick pushes — 10 × 1s burst pushes with 1s release.
Progress (session count, difficulty adjustment) lives in AsyncStorage — no server, no account.
Layout
src/app/— expo-router screens:index(home),session(timer),settingssrc/lib/workout.ts— pure session-plan + progression logicsrc/lib/store.ts— tiny local store persisted to AsyncStorageandroid/— committed prebuild output; CI builds it directly
Development
npm install
npm start # Expo dev server
npm run typecheck
Release
Push to main → Gitea Actions on the desktop runner (runs-on: desktop,
never the VPS) builds a signed APK and publishes a Gitea release — install via
Obtainium. Keystore: ~/.android-keys/kegel-release.jks (repo secrets
KEYSTORE_B64, KEYSTORE_PASSWORD; alias kegel). iOS runs via
npx expo run:ios from a Mac.
Description
Him: Kegel Exercises for Men — free, open-source, offline pelvic floor trainer for iOS & Android (Expo/React Native). MIT.
https://rehbock.xyz/kegel/privacy.html
Readme
MIT
4.5 MiB
v1.6
Latest
Languages
TypeScript
60.9%
JavaScript
30.4%
Kotlin
5.9%
HTML
2.8%