Skip to content
Ankit Raminwar
All work

Product case study · Independent product · live on Google Play

Aarti Sangrah

An offline-first devotional library for Android — aartis, mantras and stotras in Hindi, Marathi and English, with full-text search and no network required to read.

Role
Solo: product, design system, mobile, data
When
Live
Links
Google PlaySource
  1. CDN collections
  2. Sync + de-dupe
  3. SQLite · FTS5
  4. Offline UI
System flow

The problem

Devotional texts are read daily, often where connectivity is poor, and in more than one language. The app has to open instantly, work completely offline, and find a hymn by name, deity, lyric or occasion.

What I did

  • Designed and built the app end to end with Expo and React Native
  • Designed the "Sacred Editorial" design system with AI tooling (Stitch via MCP)
  • Built the SQLite data layer, full-text search and CDN sync service
  • Localised the interface in Hindi, Marathi and English
  • Published and maintain the Play Store release

Architecture

  • All content stored locally in SQLite (WAL mode) — the device is the source of truth for reading
  • FTS5 full-text search across names, deities, lyrics and tags
  • A CDN sync service merges multiple content collections into SQLite, de-duplicated by id
  • Zustand for app state, React Query for sync, expo-router for file-based navigation
  • Animations run on the UI thread with Reanimated; long lists use FlashList v2

Key decisions

Local database as the source of truth

Content ships into SQLite and is refreshed from a CDN in the background, so reading never waits on the network.

Search in the database, not in JavaScript

FTS5 indexes name, deity, lyrics and tags, keeping search fast across three languages without loading everything into memory.

Notifications driven by content tags

Four daily slots plus day-specific reminders (Hanuman Chalisa on Tuesday, Santoshi Mata on Friday) come from tags on the content rather than hard-coded schedules.

Outcome

  • Published on Google Play
  • Fully usable offline
  • Three interface languages

Stack

  • Expo SDK 54
  • React Native
  • TypeScript (strict)
  • SQLite + FTS5
  • Zustand
  • React Query
  • Reanimated
  • FlashList
Esc
↑↓ navigate↵ open