01 / Gurmat SaanjDeployed community web application

Following live Gurbani recitation, line by line.

Built for live use at a local Gurdwara, Gurmat Saanj follows Punjabi recitation while one editor coordinates the projector and Sangat viewers read on their own devices—behaviour ordinary presentation software could not provide.

Context
Community application
Role
End-to-end developer
Access
QR code or session code
Devices
Multiple viewers · one editor
Source
BaniDB
Status
Deployed community project

01 / Product

One live line, read across the room.

I built the React and JavaScript interface, Node.js and Express API, matching flow, and multi-device session. Participants join by QR or session code; phones follow the projector without becoming extra control surfaces.

Gurmat Saanj projector output showing a Gurbani line with transliteration and English translationView projector evidence ↗
Projector evidence · shared Gurbani line, transliteration, and translation; the reusable QR region is excluded.

02-03 / Live system

Speech narrows the search; the application selects the line.

Web Speech API output is normalized and matched against known BaniDB text before the display changes.

Live recitation to room display

Gurmat Saanj workspace showing line navigation, presentation controls, and active shared outputInspect operator view →
Main workspace evidence
Gurmat Saanj projector output showing the shared Gurbani line, transliteration, and translation
Projector follows shared state
Gurmat Saanj mobile editor interface showing a connected phone in the live sessionInspect mobile view →
Connected phone evidence
Gurmat Saanj viewer showing a pending control request while the current controller remains activeView transfer evidence →
Editor transfer remains approval-controlled

Recognition path

Speech input produces candidates, not display text.

The transcript is normalized, checked against BaniDB, and scored before the application selects a known line.

Application selection

Uncertain input can hold the current line.

Matching and confidence handling decide whether the application advances; raw transcript text never reaches the display.

Shared line, local display

Projector and viewers follow the same selected line.

Viewer font, size, language, and translation settings stay on each device and do not change the projector.

Editor ownership

Control changes only after approval.

A second device may request control, but remains a viewer until the current editor or main application approves the transfer.

04 / Application decision

Keep uncertain recognition away from the display.

decision 01

Keep known text and final selection under application control

Context
Recognition can be noisy; known lines can be textually close.
Decision
Fuzzy scores and confidence handling narrow BaniDB candidates before anything reaches the display.
Reason
Known text and projector authority remain in the application.
Trade-off
Uncertain input sometimes holds rather than advances.

05 / Limitations

What the current implementation cannot guarantee

Browser dependency
Speech recognition availability and behaviour are platform-dependent.
Room conditions
Noise, overlapping speech, and pronunciation weaken transcripts.
Matching limit
Similar lines and language variation remain ambiguous; a score is not proof.
Display control
One approved editor operates the projector; viewers cannot override it.

06 / Evidence

The next evidence, not a roadmap

evaluation

No accuracy, latency, threshold, or scalability figure is published without controlled measurement. A reproducible set across speakers, devices, room conditions, and similar lines would make changes comparable.

operating context

Setup still needs clearer documentation across microphone permissions, browser support, the Node service, BaniDB, projector output, and connected devices.

07 / Reflection

Built for live use, not a demo

live outcome

Gurmat Saanj is in active use at a local Gurdwara, coordinating a shared projector with connected personal reading.

product lesson

Probabilistic recognition narrows ambiguity; known text, shared state, personal presentation, and editor approval remain explicit application behaviour.

Project screenshot viewer