A gentle morning companion for Android. Qigong, yoga and meditation, guided by a calm voice.
  • HTML 50%
  • Kotlin 37.8%
  • Python 10.2%
  • Shell 2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-03 13:37:40 +02:00
app audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
content audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
design audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
gradle init 2026-10-02 23:57:28 +02:00
tools audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
.gitignore init 2026-10-02 23:57:28 +02:00
build.gradle.kts init 2026-10-02 23:57:28 +02:00
gradle.properties init 2026-10-02 23:57:28 +02:00
gradlew init 2026-10-02 23:57:28 +02:00
gradlew.bat init 2026-10-02 23:57:28 +02:00
HANDOVER.md audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
LICENSE init 2026-10-02 23:57:28 +02:00
PLAN.md audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
README.md audio, mockups and cleanup 2026-10-03 13:37:40 +02:00
settings.gradle.kts init 2026-10-02 23:57:28 +02:00
TODO.md audio, mockups and cleanup 2026-10-03 13:37:40 +02:00

Bloom app icon, a soft lavender flower rising over the horizon

Bloom

A gentle morning companion for Android.
Qigong, stretching and stillness, guided by a calm voice.
No account, no ads, no pressure.


What Bloom is

Bloom walks you through a short routine in the morning, step by step. A warm voice tells you what to do, a soft gong marks the transitions, and a small figure shows each movement. You can leave your phone on the floor and simply follow along.

It began as a way to replace four favourite YouTube videos with something calmer and offline. It grew into four programs:

Program What it is Time
🌅 Wake Qigong, five stretches, optional morning yoga, and a short stillness meditation (Kaya Sthairyam) 25 or 35 min
🏃 Move The classic seven-minute workout, twelve exercises with short breathers about 8 min
🌱 Grow A six-week bodyweight build-up for legs, core and arms that adapts to how you are doing about 20 min (in progress)
🌙 Settle Autogenic training, the classic basic course in six formulas about 13 min

What makes it different

  • It invites, it never nags. No streaks to lose, no "you missed three days", no guilt. If you take a break, Bloom just says "Today is a lovely place to begin again." The wording was written with people with demand avoidance (PDA) in mind.
  • Quiet while you practise. Bloom can hold calls and messages for the length of a session and restores everything afterwards. It also sets a comfortable volume and keeps running with the screen locked.
  • Private by design. Everything stays on your phone. No account, no analytics, no Google services needed. It runs happily on de-Googled Android such as /e/OS.
  • Made with care. Three soft pastel palettes, hand-tuned typography, two voices to choose from, and an icon that changes colour with your palette.

Status

Bloom is in early development. The content and most of the app are written, but there is no public release yet. Releases will be published through a self-hosted Forgejo instance and installed with Obtainium. See TODO.md for what is still missing, PLAN.md for the full concept, and HANDOVER.md if you want to work on Bloom.

Building from source

You need Linux, uv and ffmpeg. Android Studio is not required. A setup script installs JDK 21, the Android SDK, Gradle and the fonts into ~/.local/share/bloom-toolchain, without root.

tools/setup_android.sh            # once
tools/build_apk.sh                # translate content, run tests, build a debug APK
tools/build_apk.sh --install      # also install it on a phone connected over USB
tools/build_apk.sh --release      # signed release APK, needs keystore.properties

Requirements on the phone: Android 12 or newer.

Making the voice

All spoken lines are generated ahead of time with Chatterbox on an NVIDIA GPU and shipped as small Opus files, so the app needs no network and no text-to-speech engine. The texts live in content/programs/*.yaml.

tools/tts/run_generate.sh         # create three takes per line and voice (first run sets up ~7 GB)
tools/tts/run_rank.sh             # let Whisper suggest the best take for each line
tools/tts/review_takes.sh         # pick takes on a local page at http://127.0.0.1:8765

The review page works in small batches, shows your progress per voice and can be driven with one hand on the number pad. You can trim a take or mark a line for a new attempt with a short note.

If a short line keeps breaking into two parts, tools/tts/squeeze_pauses.py <voice> <key> <takes> shortens the pause inside those takes and saves the results as new takes.

Project layout

PLAN.md            the concept: what Bloom is and why
TODO.md            what is left to do
HANDOVER.md        start here if you want to work on Bloom
app/               the Android app (Kotlin, Jetpack Compose)
content/           programs as YAML, text drafts, audio choices
tools/             build scripts and the voice pipeline
design/icon/       the app icon in all three palettes
design/figure/     reference drawings of the exercise figure
design/mockup/     a picture of every screen, exported from the design canvas

Credits

Wake retells, in its own words, the routines from these videos:

Move follows Klika & Jordan (2013), Grow builds on current strength training research (see PLAN.md), and Settle follows J. H. Schultz.

The voices are made with Chatterbox (MIT) from short samples of the synthetic Kokoro voices af_bella and af_nicole (Apache-2.0). The fonts are Fraunces and Nunito (SIL Open Font License).

License

Bloom is free software under the GNU General Public License v3.0.