Polylogue

Polylogue

Polylogue is a community-powered language preservation platform that lets users record spoken translations in their native languages, building a living archive of global linguistic diversity. Includes magic-link and social authentication, browser-based audio recording, a fully internationalized interface, and complete dark mode support.

// CASE_STUDY

01 / Problem

I wanted to share Ghanaian languages, Ga and Twi, and ran into the same wall again later while learning Swahili myself: quality, comprehensible-input resources for African and other under-resourced languages are scarce to non-existent. Language tools cluster around a handful of major world languages, with no accessible way for a native speaker to record themselves and have it become part of something searchable and growing.

02 / Approach

There are two ways to contribute: pick a text from the library and record a spoken translation of it, or work through a structured "comprehensible input" sequence: slides and prompts designed to guide practice, not just capture a one-off recording. Signing in is a magic link or Google/Facebook, no password to manage. Recording runs entirely in the browser: it probes for the best supported audio codec (Opus/WebM first, falling back through MP4, AAC, then WAV) so the same flow works on a laptop or a phone, then uploads straight to Supabase Storage. Every recording and translation gets likes, views, shares, and comments, so contributions get listened to and responded to instead of just sitting in a database. The interface itself is translated into eight languages, so someone can use the site in their own language while recording a completely different one.

03 / Challenges

Letting anyone upload audio means someone has to review it. There's a moderation queue backed by a real content-reports table, sorted by priority, with a role-based admin dashboard for user management and audit logs, so flagged recordings get reviewed instead of piling up. The trickier technical problem turned out to be browser audio recording itself: MediaRecorder's supported codecs vary by browser, so the recording hook has to detect and fall back through a list rather than assume one format works everywhere. It was also built solo against a hackathon deadline, which is why it's earlier-stage than my other work: a handful of migrations in, and unlike the school platform, no automated test coverage yet.

04 / Result

Built solo and submitted to the World's Largest Hackathon (presented by Bolt) in June 2025, then kept running after. Live at polylogue.app, with a schema spanning two distinct content types (free-form passages and structured CI sequences) plus their full social and moderation layers, and a fully localized interface across eight languages.

// TECH_STACK
01 / Frontend
ReactTypeScriptViteTailwind CSSReact RouterTanStack Query
02 / Database
Supabase