All projects
Minimalist Meditation App
Just Meditate preview

Just Meditate

A free, open-source meditation app with zero accounts, zero tracking, and zero complexity. 35+ guided meditations from respected teachers. Works offline. Works on anything.

I started meditating at 27.

The serious practice started after an accident in 2019.

Lots of metta. Somewhere in there, I forgave my father for things I'd been carrying a long time.

I opened a meditation school called Obvious Magic, taught small groups, then retreats.

The more people I taught, the more I noticed something. I'd recommend an app to a new student. They'd tell me they couldn't get past the sign-up screen. Or they'd opened the library and felt overwhelmed. Insight Timer, Headspace, Calm. Every one of them requires an account before you hear a single breath. They gamify your practice with streaks. They track your data. They send notifications. They have hundreds of meditations, which sounds generous until you watch someone spend their entire sit scrolling through options.

This happened slowly. Student after student, the same story. Someone came to sit, and an app made them shop instead.

Challenge

Meditation apps add friction to a practice that's about removing friction. Accounts, libraries, paywalls, gamification. The interface becomes the obstacle.

Solution

A single wave, a random meditation, and nothing else. No accounts, no choices, no tracking. The URL is the settings page.

Value

35+ guided meditations from respected teachers. Works offline, works on anything with a browser. Free, open source, GPL v3.

The person who came to sit

Every app I looked at asked you to create a profile, choose a category, pick a duration, select a teacher, rate your session afterward. Each step is a decision. Each decision is engagement with the interface. The act of choosing is the opposite of sitting down to meditate.

If someone came to me in person and said they wanted to meditate, I wouldn't hand them a catalog. I'd say sit down, close your eyes, and listen. The app needed to do exactly that.

Meditation interface

Meditation interface

The wave as flow

Open justmeditate.com and you see a sinusoid wave in the shape of the letter "m." That's the whole interface. Tap anywhere on the screen and the wave starts oscillating. A meditation begins. Tap again and the wave rolls back to its resting state.

The wave was the idea from day one. It's associated with flow, and it communicates exactly one thing: something is happening, or it's waiting for you. No buttons. No menus. The entire screen is the control surface.

My first design concept was more ambitious. I wanted to use the phone's accelerometer and gyroscope to detect when you set the phone down and it went completely still. Stillness triggers the meditation. I scrapped it because the UX problems were real. What if you're on a train? What if the phone is on a wobbly table? What if you shift your leg and the phone moves? The accelerometer concept had too many false triggers, so I went with the simplest version: tap anywhere.

Randomness as a teaching tool

The app randomly selects from 35+ guided meditations by teachers like Ajahn Sundara, Andrea Fella, and Diana Clark. General mindfulness, body scan, metta, breath, soundscapes. Durations from 5 minutes to an hour.

Openness to new experiences is a big part of the practice. I've seen students default to body scans because that's what they did last time, when what they actually needed was to branch out. The randomness removes that decision: you came to sit and the app picks for you.

The address bar is the settings page

Everything is controlled through the URL. justmeditate.com/#5 gives you a 5-minute meditation. #breath gives you a breath meditation. #metta gives you loving-kindness. #bodyscan gives you a body scan. Bookmark your preferred type and length if you want. The address bar is the only input field.

Duration shows up as an emoji. 🍃 for 5 minutes. 🌳 for 10. 🧘 for 15-20. ⛰️ for 30+. You know what you're getting at a glance.

I wanted as little user input as possible. URL controls were intentional from the start. Why build buttons and input fields when everyone already has a control surface in their browser?

Vanilla HTML/CSS/JS

Pure vanilla JavaScript. No frameworks. No build tools. Canvas API for the wave animation, Service Workers for offline support.

This follows from everything else. If the goal is that anyone can meditate, the app has to work on anything. A Chromebook in a school library, an old Android phone someone found in a drawer, a smart TV, a fridge maybe.

Frameworks add weight, compatibility issues, and points of failure. Vanilla JS on a Service Worker means it loads once and runs forever, regardless of connection.

iOS Safari's autoplay restrictions meant I had to preload audio during the user's first tap gesture with a fallback chain. The Service Worker caches cross-origin audio from the CDN so the whole thing works after the first visit, on any device. Auto dark mode kicks in between 8pm and 6am, or follows system preferences. Each of these is a small problem, but each one matters when the constraint is that it just works.

Free, open source and permanent

Just Meditate is GPL v3. The code is on GitHub. It's a Progressive Web App that installs as native on iOS, Android, and desktop. No login, no paywall, no tracking, no terms to agree to. Your practice stays private.

Just as any book can be simply opened and explored, guided meditation should be that accessible. There is no right or wrong way to practice, and the meditations reflect that: guided mindfulness, body scans, metta, breath work, calming soundscapes. What you discover is up to you.

Meditation showed me what life is in a radical new way. I wanted to make that accessible to everyone and anyone no matter where or who they are.

Meditation isn't about striving or perfection, it's about showing up and being kind 🤗

justmeditate.com.

Status

Live

Tech

JavaScriptHTML5 / CSS3Canvas APIService WorkersFigma

Skills

Product designProgressive Web AppsMinimalist UXOpen source