Inspiration

Learning Swedish means looking words up constantly — and most dictionary apps stop at the definition. We wanted a Swedish–English dictionary that also helps the words stick: something you'd actually reach for in your pocket every day.

What it does

Lyska is a Swedish–English dictionary and language-learning companion:

  • Fast, accurate Swedish↔English lookups
  • Pin any word to build personal study cards
  • Spaced-repetition review sessions so vocabulary sticks
  • Listen-and-read audio stories that teach words in context
  • Camera scan to look up words from the world around you

How we built it

  • App: Expo (SDK 55) + React Native — one codebase for iOS and Android, with a variant system that builds multiple apps from a single repo.
  • Backend: NestJS API with Better Auth for sessions, deployed on Coolify.
  • Monetization: RevenueCat powers the subscription paywall and entitlements across both stores.
  • Supporting stack: Sentry for crash reporting, Firebase Analytics, OneSignal for push, and AdMob.

Challenges we ran into

Reliable audio playback across iOS and Android, surviving flaky networks (retrying dropped audio downloads and failed camera scans), and rock-solid auth — signing users out cleanly on expired sessions while extending sessions so people stay logged in.

Accomplishments that we're proud of

A polished, production app live on both the App Store and Google Play, with genuine spaced-repetition study built in — not just definitions.

What we learned

  • Cross-platform parity lives in the details. Audio and gestures behave differently on iOS and Android; making them feel identical took more care than the features themselves.
  • Fail closed on money, open on content. Ads read the RevenueCat entitlement and stay hidden until it resolves, so a paying subscriber never flashes an ad on a cold start.
  • Networks are hostile. Retrying dropped audio downloads, failed camera scans, and transient API calls turned "flaky" into "invisible" for the user.
  • Sessions are a UX decision, not only a security one. Signing out cleanly on a 401 while extending sessions to 30 days removed a whole class of "why am I logged out?" frustration.
  • Spaced repetition only works if it's frictionless. A fast, one-tap review flow mattered more than the algorithm behind it.

What's next for Lyska

More languages, richer stories, and smarter review scheduling.

Try it out

Built With

Share this project:

Updates

Submission history