Mobile

KetabGB

React Native audiobook & podcast app

Role
Author
Period
2019 – 2022
Commits
160+ verified
Targets
iOS + Android

Overview

KetabGB — a React Native audiobook & podcast player for iOS and Android that I built solo: streaming playback, subscriptions with in-app payment (Charkhone SDK), and catalog discovery over a GraphQL API via Apollo Client with persisted cache.

Jalali-calendar UX (moment-jalaali), Lottie animation, and the Firebase suite (analytics, crashlytics, dynamic links, push) round out the production footprint.

  • Shahrzad / ShahrzadUpgradethe RN codebase across its upgrade generations
  • Shahrzad/app (KetabGB)the original 2019 codebase

Tech stack

App

  • React Native
  • react-navigation
  • Apollo Client
  • GraphQL

Platform services

  • Firebase suite
  • Charkhone in-app SDK
  • Lottie

Persistence

  • apollo3-cache-persist
  • AsyncStorage

Repository structure

The real source layout:

KetabGB (React Native)
src/
├─ screens/          player · catalog · profile
├─ components/       shared UI
├─ navigation/       stacks · bottom tabs · top tabs
├─ services/         Apollo GraphQL client
├─ store/ · config/ · constants/
├─ assets/
android/ · ios/      native projects
plugin/react-charkhone-inappsdk   payment SDK

Design patterns

  • GraphQL client with offline cache

    Apollo + apollo3-cache-persist keeps the catalog browsable and playback state warm across launches.

  • Navigation-first structure

    Stack, bottom-tab, and material-top-tab navigators compose the whole UX tree.

  • Native payment bridge

    The Charkhone in-app SDK ships as a local RN plugin bridging the store-side subscription flow.

System design

APPPLATFORMSERVICESGraphQLstreamScreensplayer · catalogApollo Clientpersisted cacheCharkhone SDKin-app paymentGraphQL APIplatform backendAudio storagestreamsFirebasepush · analytics