Libriv
A game economy you can't cheat — Strava meets Duolingo, for reading.
- Year
- 2025—26
- Role
- Solo — product design, mobile, backend & release
- Stack
- React Native 0.81 · Expo SDK 54 · TypeScript · Firebase · Auth · Firestore · Functions · Zustand · Kotlin native module
Libriv turns reading into a ranked game — XP, 50 levels, streaks, book clubs and leagues from Iron to Grandmaster. I designed and shipped it solo, from the mascot to a 2,700-line Firebase backend, now live on Google Play at versionCode 158.
The loop
Every reading session runs a timer, banks XP, feeds daily quests and moves you up the leagues. A social layer — feed, followers, book clubs, real-time chat and leaderboards — wraps the core habit so progress is something you share, not just track.


Trust the server, not the client
When XP and a paid subscription have real value, nothing the client says can be trusted. The app submits only raw session data; a Cloud Function computes every stat behind layered defenses — page-rate clamps, per-day caps, and an adaptive check that learns each reader's pace and rejects anything 3× their norm. Firestore rules make premium and XP fields unwritable from the client, and receipts are verified server-side against both Google Play and the App Store.
Native when it matters
Some features can't be faked in JavaScript. Libriv ships a hand-written Kotlin Expo module wrapping Google ML Kit for on-device OCR — snap a page, capture the quote. An ISBN scanner falls back across four metadata sources so international titles still resolve, and an Android home-screen widget syncs current book and daily progress in the background.

- 0117 cloud functions · 2,700 loc backend
- 02Server-validated sessions · adaptive anti-cheat
- 03IAP: Play Billing + App Store receipts, verified server-side
- 04AdMob interstitials + GDPR/UMP consent
- 05~1,600 i18n keys × EN/PL
- 06Custom Kotlin Expo module — ML Kit OCR
- 07Android home-screen widget · 30-min background sync