Personal project · Sep 2026
Mindful App
An Android app that makes me say why before I open a distracting app.

- Role
- Solo: design, app, backend, deploy
- Period
- Sep 2026
- Stack
- Kotlin · Jetpack Compose · Go · Docker
- Status
- Running on my phone, syncing to my own server
Why I built it
I open apps on autopilot. I wanted a small pause that asks me why before they open.
How it works
It asks why
When I open a guarded app, a screen asks "Why would you open this app?" and won't continue until I type a reason.
It gives me a way out
Then "Are you sure?": a large "I'll do it later" button, or a small "Open anyway" that lets me in for a few minutes.
It keeps a record
Every attempt is saved on the phone first and synced to my server in the background, so I can look back at my reasons.
What I built
Android app
Kotlin and Jetpack Compose. An accessibility service notices when a guarded app comes to the front, and Room keeps the records on the phone.
Backend
A small Go API with a SQLite database and token check, built from a written API contract.
Deployment
A Docker image on my own Ubuntu server behind HTTPS, with backup and rollback steps written down.
Choices I made
- Go for the backend. A small static binary and a ~15 MB image, against ~200 MB for a JVM option. Cheap to run, and no new framework to learn.
- SQLite is enough. One file in a volume, and a backup is a file copy. That's plenty for one user, and it's one less service to secure.
- An accessibility service. Launch events arrive instantly, so nothing has to poll in the background.
- Phone first, sync later. Records are saved on the phone before anything is sent. Sync retries with backoff, so it works offline.
Privacy
The accessibility service only reads the name of the app that comes to the front. It does not read the screen or what I type.