Inspiration
What it does
How we built it
Challenges we ran into
Inspiration
The apps you get pointed to when you're struggling are the ones holding the most private text you'll ever type, and almost all of them ship it somewhere. A server, an analytics SDK, a font CDN logging your IP on every page load.
Then a friend got a concussion and spent an evening trying to find out if they were allowed to go for a walk. What they found was blog posts and a PDF from 2013.
So I gave myself one rule: no backend at all. Everything after that came out of that rule.
What it does
Mindful runs entirely in your browser. No account, no server, no analytics, no network calls once it's loaded.
There's a daily mood check-in and journal, PHQ-9 and GAD-7 scored on-device, guided breathing with an eyes-closed mode for when light hurts, and a concussion recovery section with the CDC danger signs, a 22-symptom daily record and the graduated return-to-sport plan.
The AI part is Echo. You describe how today feels and it finds the entries you've already written that read like this one, plus what the two weeks after them actually looked like. It searches; it doesn't write anything. There's a second pipeline, Ask, that answers health questions by quoting cited sources verbatim instead of generating text.
How I built it
Vite, React, TypeScript, Tailwind. Everything lives in localStorage.
The privacy promise is enforced rather than claimed. A CSP with
connect-src 'self' means sending a journal entry somewhere is a request the
browser blocks. Fonts are self-hosted. Spellcheck is off, because enhanced
spellcheck uploads what you type. And one test suite runs a whole session of
real use while logging every request the browser makes, failing if any of them
leaves this origin.
Echo is seven stages with tests on each. Two retrievers, BM25 and embeddings, combined by rank rather than score. Then a verification layer that checks everything shown is a literal substring of what the person wrote.
Challenges
Measuring the crisis guard honestly. I'd only ever tested it against phrasings I made up myself, which measures my imagination, not coverage. Auditing it against 53,000 real posts pushed recall from 51.7% to 53.6%, and the things I'd missed weren't clever edge cases. I just hadn't thought to write them down.
I also built a live demo of the retrieval pipeline on the landing page, liked it a lot, then deleted it. Someone opening a mental-health app doesn't want to see my architecture.
Built With
- axe-core
- eslint
- framer-motion
- hugging-face
- localstorage
- lucide
- node.js
- onnx
- playwright
- postcss
- react
- react-router
- tailwind
- transformers.js
- typescript
- vercel
- vite
- web-speech-api
- webassembly

Log in or sign up for Devpost to join the conversation.