HRV-biofeedback in de browser: vingertop-PPG via de telefooncamera, kleur en klank, alles op het toestel
Translation pending
HealthJavaScript · HTMLGitHub @bopfelix-derwischOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Rustig ademen op een vast ritme, terwijl je telefoon via de camera je hartslag meet en met kleur en klank terugkoppelt hoe coherent je hartritme is. Live op adem.felixisfelix.com.
Breathing-paced HRV biofeedback in the browser: fingertip PPG via the phone camera, colour and sound feedback, all processing on-device. Dutch UI, MIT licensed.
Alles gebeurt op je toestel. Er gaat geen video, meting of profiel naar een server; profiel en
geschiedenis staan in de localStorage van je browser.
Deze app is bedoeld als ontspannings- en oefenhulp. Hij stelt geen diagnose en vervangt geen arts. Voel je je duizelig of benauwd, stop dan en adem normaal.
Getest op iPhone 15 Pro (Safari, iOS 26): alleen de telelens naast de flitser levert een bruikbaar vingertopsignaal; de app kiest die zelf. Andere telefoons werken vaak ook, maar zijn niet getest. "Alleen ademen" werkt in elke moderne browser.
Geen build-stap en geen afhankelijkheden: statische HTML plus ES-modules.
python3 -m http.server 8000 # open http://localhost:8000
node tests/run.mjs # tests (Node ≥ 12)
Camera en flitser vragen HTTPS; test op een telefoon via een gedeployde versie of een tunnel.
| Bestand | Rol |
|---|---|
index.html | schermen en stijl |
adem/app.mjs | koppelt alles in de browser |
adem/camera.mjs | camera kiezen, flitser, witbalans |
adem/signal.mjs | PPG → hartslagen, vingerdetectie, signaalkwaliteit |
adem/hrv.mjs | RR-reeks, hartslag, RMSSD, coherentie |
adem/breath.mjs, session.mjs | ademgids en sessieverloop |
adem/visual.mjs, palette.mjs, audio.mjs | beeld (OKLCH koel → warm) en klank |
adem/norms.mjs, tempo.mjs, explain.mjs | normen, tempovoorstel, uitleg |
adem/store.mjs | opslag van profiel en sessies |
Standaard bewaart de app alles in localStorage. Een andere omgeving (bijvoorbeeld een
dashboard met login) kan vóór het laden van adem/app.mjs een eigen opslag meegeven als
globalThis.ADEM_STORE, met hetzelfde synchrone contract als localStore in
adem/store.mjs.
Ontwerp en plan staan in docs/superpowers/.