Inspiration
Aphasia affects roughly 1 in 3 stroke survivors. Speech therapy can cost $150–$275 per session, while Medicare's roughly $1,870 therapy cap disappears quickly. Home practice works, but when nobody can verify it, care teams and payers struggle to trust or reimburse it.
In 3,686 post-stroke patients, app-based home practice reached task mastery in a median 6 days versus 12 in clinic — 2× faster with the same outcomes, because patients practiced more often (Frontiers in Neurology, 2019).
We wanted proof of practice without a new database of someone's hardest words.
What it does
IMP- we plan on adding more aphasia drills in future. Demo only shows one game.
Bloom turns at-home naming practice into a cozy word-garden game. Correct answers grow plants; optional cues help the patient keep moving.
At the end of a session, Bloom runs a Midnight Compact circuit and seals deliberately disclosed aggregates: sessions completed, items attempted and correct, whole-percent accuracy, and cues used. Raw word-level responses never leave the device. A clinician care portal shows the verified progress, and its proof ledger replay-checks each receipt against the same compiled circuit.
How we built it
We framed Bloom inside a React Three Fiber home office, then built the word garden, session flow, and care dashboard in React and TypeScript. The real contract/src/bloom.compact contract is compiled with the Compact CLI into committed circuit artifacts. In the browser, @midnight-ntwrk/compact-runtime executes recordSession; the local ledger stores the disclosed aggregates and a rolling commitment, while the care portal replay-verifies the receipts.
Challenges
- Compact has no division, so the prover supplies
accuracyPctand the circuit checks multiplication bounds around the exact floor percentage. - Running compact-runtime's WASM cleanly inside Vite required careful module and asset wiring.
- We had two minutes to make selective disclosure visible: what the clinician can verify matters as much as what they can never see.
Accomplishments that we're proud of
- The circuit is real, compiled Compact
- The privacy model is part of the product flow, not a slide after the demo.
- Bloom feels like a game someone could return to, with a clinician-grade dashboard on the other side.
What we learned
Selective disclosure is more than a security feature. It is a product primitive for healthcare adherence: prove that meaningful work happened, disclose only what the next person needs, and keep the sensitive detail with the patient.
What's next for Bloom
Next: deploy the same contract artifacts to Midnight testnet, add therapist-authored word lists, and validate the workflow with care teams. The same rails could support physical therapy, medication adherence, and decentralized clinical trials—private activity in, verifiable evidence out.
Built with
react, typescript, three.js, react-three-fiber, tailwindcss, vite, midnight, compact, zero-knowledge-proofs, zustand
Try it out
- Repository: github.com/imraghavojha/midnight-bloom
- Live demo: imraghavojha.github.io/midnight-bloom
Built With
- compact
- react
- three.js
- typescript
- wasm
- zustand


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