VOICE DISPATCH · PHASE 2 · RFC 0001

Record a voice dispatch.

Ten to sixty seconds. One take. Public by default. Tap to start, tap to stop. Preview before submit. Phase 3 wires the R2 upload; right now Submit is a stub and nothing leaves your browser.

READY · TAP RECORD 00 : 00

10s min · 60s max · auto-stops

Add details

PHASE 3 COMING · R2 UPLOAD NOT YET WIRED

What's live in Phase 2

  • Mic permission flow via navigator.mediaDevices.getUserMedia
  • MediaRecorder capture with opus/webm (Firefox, Chrome, Edge) or AAC/mp4 (Safari)
  • 10-60 second enforcement — auto-stops at 60, Submit disabled below 10
  • Live timer + progress bar with 10s minimum marker
  • Preview playback via <audio> + blob URL
  • Details form — channel chip, title, dek, location
  • `POST /api/talk` stub — accepts multipart, returns mock block ID

What Phase 3 adds

  • Cloudflare R2 bucket (`pointcast-audio`) for real audio storage
  • Server-side duration validation after upload
  • Rate limit: 3 dispatches per IP per hour (PC_RATELIMIT_KV)
  • TALK block persistence via GitHub API commit or KV-backed draft
  • Profanity wordlist filter (flag, don't delete)