Inspiration

Colombian Sign Language (LSC) has almost no accessible practice material online. Courses are expensive and hard to find, interpreters are booked weeks in advance, and most of what is free is a static word list with no video. Anyone who wants to learn ends up giving up halfway.

I wanted something that runs completely offline on an everyday phone with zero connectivity, for the real-life cases where an interpreter is not around.

What it does

A gamified course. Five units covering 112 signs you can actually practice, complete with hearts, streaks, XP, and a reward chest at the end of each unit.

A visual dictionary. All 201 signs from the interpreter's course. 158 have verified video recordings today. The app prints that exact coverage ratio on screen instead of hiding the gap.

An offline translator. Type any Spanish sentence and get back an LSC sign sequence with glosses, speed control (0.75× / 1×), and offline text-to-speech. No network, no API, no account required.

A sustainable freemium model (RevenueCat). Signo Pro unlocks infinite hearts, unlimited practice modules, and offline video copies ($49.99/year with a 7-day free trial, or $9.99/month), with dynamic offerings and entitlements powered by RevenueCat.

The core rule connecting everything: Every sign you can practice is a sign you can watch. A sign only enters the course if a real human video clip exists for it, so nothing on the learning path is ever a dead end.

How we built it

Built with Flutter, organized feature-first inside signo_app/ — learn, translator, dictionary, profile, and paywall over a lean core, using Riverpod for clean, reactive state management.

Course content ships pre-compiled. A Dart pipeline reads the interpreter's CSV and emits a typed vocab.json plus a grammar-rules asset. Clips are dynamically bound by matching that output against manifest.json, ensuring a course row cannot claim a video the app does not ship.

The translator is a local rule engine. Colombian Sign Language drops copulas, fronts time expressions, and places the verb at the end (SOV). The mapper rewrites Spanish syntactic order into LSC order before looking up signs.

RevenueCat (purchases_flutter) manages active customer entitlements ('pro'), package offerings, purchases, and state restoration.

flutter analyze is 100% clean. 232 automated tests pass.

Challenges we ran into

Word order. Spanish is SVO; LSC is verb-final without copulas. "Quiero café" is not a word-for-word swap. The linguistic rules live in grammar.json, and they remain the component I intend to refine most.

43 signs have no video. Because the course only teaches signs that have verified clips, 43 of the 201 vocabulary items cannot enter the path yet. The dictionary transparently reports how many are missing and which ones, while each sign card indicates that the video is in production.

Billing. RevenueCat's hosted paywall lets the buyer select any plan, which created the risk that tapping "USD 9.99/month" could settle the annual subscription instead. We engineered strict package resolution during checkout that surfaces an explicit error if a package is missing from the active offering.

Accomplishments that we're proud of

The coverage metric is calculated directly from shipped assets at runtime rather than hardcoded into a string, guaranteeing that what the app claims can never drift from what it actually ships.

That same manifest is what governs which signs are teachable. One strict rule explains why 43 signs are absent from the course today, and why the app can state that plainly instead of pretending the curriculum is finished.

What we learned

Working with a Deaf collaborator fundamentally redefined our definition of "done." A sign could look visually acceptable on screen and still be linguistically wrong — a subtle handshape angle or movement trajectory was off — and only a daily LSC signer catches that. All 198 clips were recorded and verified that way.

Content provenance determines credibility. Keeping MonikLSC/ in the repository preserves the certified interpreter's raw curriculum, serving as the shortest and most authoritative answer to the first question anyone asks: "Is this authentic LSC?"

What's next

  • Record the remaining 43 clips, bringing dictionary video coverage from 158 to 201 and unlocking those signs for course inclusion.
  • Extend the learning path: 46 signs already have video clips but no course node yet, representing the next unit waiting to be designed.
  • Publish Signo to Google Play.

Built With

Share this project:

Updates

Submission history