Inspiration

I keep a lot of thoughts mid-flow — an idea I don't want to interrupt my thinking to type out, or a voice recording I'd have to sift through later, word by word. Two bad options: type it (slow, and it breaks the thought), or record it (fast in, then a painful rambling memo to re-listen to, or hand-transcribe). The build is driven by that friction: capture without interrupting the thought, and retrieve without re-listening.

What it does

VoiceNote is a single-note app for one thought at a time. It has three parts to it:

  • Capture — hold the red round button, talk, release. The button pulses only while it hears sound. Tap again to stop, and the take auto-transcribes to text in a grey bubble with an animated 1-2-3 dot. A silent take shows a "no audio recorded" notice instead of a segment.
  • Read — the note reads top-to-bottom as text. Each voice bubble keeps its words with timestamps, and your typed segments stay as text.
  • Replay in place — in view mode, long-press any word in a voice bubble: a vibration marks the start, playback begins at that exact word, and a circular progress ring animates at the top left. Release to stop.

It also has a home screen (tile list, search, sort, rename, delete), a view/edit toggle, per-segment edit with permanent saving, re-transcription in a chosen language, chained backspace, and everything survives force-quit.

How we built it

The app is a single-note screen built with Expo SDK 58 and React Native 0.88 in TypeScript. One screen owns the note: capture via expo-audio, automatic transcription to word-timestamped text through the Groq Whisper endpoint (uploaded through Expo's native file path), and word-precise replay (player.ts loads the audio and seeks straight to the word you long-pressed). A progress ring animates at the top left. Persistence is a plain JSON document (documents/notes.json) with the audio kept beside it in documents/recordings/ — no database, no backend. Typed segments and voice segments get mixed in one flow, and a top-right toggle switches view/edit. Everything survives force-quit.

Accomplishments that we're proud of

  • Keeping the recording first-class. A voice bubble stays replayable after its text is edited — the audio is never rewritten by a transcription, and the word timings just get remapped. That was the design intent from the start, and it stayed intact through every edit iteration.

What's next for VoiceNote

Accounts, cloud sync, and shared notes — not in a POC, deliberately. Multi-device would have to solve auth and privacy before it's worth it.

  • Better wave indicators and durable gestures — the current pulse doubles as a mic-health indicator; a waveform view would make playback even more precise.
  • A server-side proxy for the transcription key — the Groq key is bundled today for simplicity; we'd rather keep the app small and fix that properly before it matters.

Built With

Share this project:

Updates

Submission history