Features
Built to reduce a clinical EMDR session to software.
Every feature came out of a real clinical workflow. None of them is decorative.
Stimulation engine
Audio-clock master scheduler
The Chris Wilson look-ahead pattern. The audio clock is the reference and the visual layer follows it. Typical sync error is sub-millisecond.
Three trajectories
Horizontal oscillation, diagonal movement, infinity (∞). Selectable per session according to clinical preference.
Configurable parameters
BPM, ball size, ball colour, background colour, tone frequency, waveform (sine/triangle/square) and sync mode.
Page-visibility handling
If the tab goes to the background the session stops automatically. It lowers the chance of re-traumatisation, with emergency stop when needed.
Wake Lock
Keeps the screen from sleeping while a session is active. Critical for tablets and long sessions.
Worker ticker + fallback
A high-frequency timer on a Web Worker. If CSP blocks the worker, it falls back to the main thread automatically.
Multi-sensory & EMDR with children
Bilateral stimulation is not limited to eye movement. Visual, auditory and tactile channels are locked to the same audio clock; for children there is a hardware-free butterfly-hug pacer and face-based measurement. All of it under the clinician's control.
Tactile channel — vibration (Remnema buzzer)
A third bilateral channel: left/right vibration via the Web Gamepad Haptics API, locked to the same audio clock as the visual and audio channels — no drift. Works with the Remnema buzzer.
Per-set tactile fidelity
For every set the number of pulses sent, dropped pulses and timing deviation are measured and recorded. If a controller drops out you are warned immediately — an audit trail hardware cannot give.
Butterfly-hug pacer (no hardware)
Instead of eye tracking: two wings glow alternately on screen and the client or child taps the glowing side (butterfly hug). No hardware at all, and it works on the client screen too.
Face-based child SUD
A six-face scale instead of an abstract 0–10 (very good → worst). Stored internally as 0–10, so trends and reports stay identical. Concrete and understandable measurement for a child.
Minors + guardian consent
For clients under 18, KVKK explicit consent is taken from the parent or guardian, and the guardian's identity is encrypted with AES-256-GCM as well. A minor's session opens with the child scale automatically.
Multi-sensory, under clinician control
Visual, auditory and tactile channels switch on and off independently — a child can be given tactile only. All of it is advisory; the clinical decision always belongs to the licensed clinician. It is not a medical device.
Clinical follow-up & measurement
EMDR does not stop at the session. Validated measures, the between-session client journal, trend charts and the session report support the clinical decision.
Validated measures — PCL-5, PHQ-9, GAD-7, DES-II
The trauma (PCL-5), depression (PHQ-9), anxiety (GAD-7) and dissociative-experience (DES-II) measures live in the code catalogue. They are scored server-side; raw responses, score, band and flag freeze at the moment of recording.
Clinical flags — advisory, never blocking
PHQ-9 item 9 (a high-risk indicator), PCL-5 ≥33 and a DES-II mean ≥30 raise a non-blocking warning before the session starts. The clinical decision always belongs to the licensed clinician. The flag is written to the audit log.
Between-session client journal
A durable token link (/journal/[token]); the client records emotions, SUD and free text without signing in. Encrypted in an AES-256-GCM envelope, valid until the clinician revokes it, and the token URL exists only on the client's device.
Client timeline
Sessions, measures, journal entries and assignment changes in a single stream. Within-set SUD and between-session VOC change become visible; the clinician sees the point of intervention side by side.
SUD / VOC trend charts
A dependency-free SVG TrendChart — RSC-compatible. Within-set SUD decline and between-session VOC progress in a printable format.
PDF session report
Decrypted server-side with @react-pdf/renderer and streamed directly — never written to disk. A printable EMDR session document for the clinical file; every export goes into the append-only audit log.
Cohort outcomes panel
/organization/outcomes — clinic-wide measure deltas plus per-client change. Computed without ever decrypting PII; for the clinic manager.
Supervision
Profile.supervisorId. The supervisor sees the supervisee's clinical flow read-only; KVKK §9.4 access traces are kept in the normal chain.
Per-therapist access sharing
View-only, per-client sharing inside the clinic. Managed by the assigned owner plus the clinic administrator; timestamped and revocable through PatientAccessGrant.
Clinic operations
Multi-tenant architecture
Every clinic's data is fully isolated. PostgreSQL Row-Level Security is fail-closed on the application side.
Super admin · Clinic admin · Therapist
Three roles, three boundaries. Licence assignment belongs to the super admin only; in-clinic invitations to the clinic administrator.
Two-phase licence consumption
Starting a session marks it RESERVED, completing it CONSUMED. An abort within 3 minutes is RELEASED — no credit is spent for nothing.
Client assignment
The clinic administrator assigns a client to a specific therapist. A therapist only sees the clients assigned to them.
SUDS and set logs
SUDS, beat count and duration are recorded after every set. A summary report at session close.
Easy invitations in dev mode
In local development the invitation link is printed to the terminal in an ANSI banner. In production email goes out with Resend → SES failover.
Compliance & security
AES-256-GCM envelope encryption
Client PII (first name, surname, phone, email, date of birth) sits in a single envelope blob, bound to the row id through AAD. The key version is open to rotation.
Clinical text is encrypted too
The session's target memory, negative/positive cognition, body location and therapist notes use the same encryption scheme — in a separate blob.
Append-only audit log
UPDATE/DELETE are revoked at the database level and mutation is blocked by a trigger. KVKK §9.4 access traces are guaranteed twice over.
Soft-delete + retention
The KVKK right to erasure. The client is soft-deleted; a hard delete is scheduled at the end of the retention window, and the audit trail is preserved.
A licence-server outage does not stop the clinic
An active session can still be completed while offline. Only starting a new session is blocked — as a guard against re-traumatisation risk.
Closed onboarding
There is no public /signup. Next middleware blocks /api/auth/sign-up/*. Trial abuse is prevented.
Book a detailed walkthrough for your clinic.
We will show you the whole system in 30 minutes.
Book a demo →