An audio-first personal knowledge management PWA. Save an article, listen to it hands-free while commuting, capture timestamped voice notes, then search everything and resume exactly where you left off.
Long articles worth reading pile up faster than there's ever a quiet hour to sit and read them — but there's a commute, a walk, or a drive most days where the eyes are busy but the ears aren't. Text-to-speech apps exist, but none of them treat the notes you'd take while listening — a thought, a reference to follow up on, a disagreement with the author — as first-class, timestamped, and searchable alongside the article itself.
The name is a small joke worth keeping: Gosha (گوشہ) is Urdu for a quiet corner, with gosh ("ear") hidden inside — the same pun as the project's original codename, Earmark.
Drop in a URL, PDF, or DOCX; Earmark parses it into a clean, sentence-segmented reading view and reads it aloud via on-device text-to-speech. Tap or speak a note at any point and it's saved with an exact timestamp into the article. Later, search runs across articles and notes together — and every article remembers exactly which sentence you were on, even across a refresh, a browser restart, or a dead phone.

PlayerEngine interface. V1 ships on-device speech synthesis; a future pre-generated-audio engine can slot in behind the same interface with no schema or UI change.| Frontend | React 18 + Vite + Tailwind + Dexie (IndexedDB), Workbox PWA |
| Backend | PHP 8 REST API + MariaDB, no Composer dependency |
| Auth | JWT in HttpOnly cookies + double-submit CSRF token |
| Hosting | Hostinger shared hosting |
Live and in daily personal use, currently mid-rebrand from "Earmark" to "Gosha" (the internal identifiers — repo folder, database name, cookie prefix — deliberately keep the old codename so nothing breaks).
If a workflow needs to survive real-world constraints — spotty networks, distracted attention, mobile-only use — that's the kind of design problem I like solving.