← Back to portfolio
OffRead icon
Mobile App iOS + Android Offline-First

OffRead

Your reading life, tracked offline — a reading tracker and PDF reader with no account, no cloud, no tracking.

Overview

A distraction-free reading habit

OffRead helps readers build a daily habit by combining a reading timer, book library, in-app PDF reader, and session notes into one clean, distraction-free app. Everything stays on the device — no account, no cloud, no tracking.

It is built entirely offline on a local SQLite architecture with Drizzle ORM, and it uses a custom WebView plus PDF.js renderer built from scratch to avoid native rendering crashes. Shipped from zero to production in a single sprint.

At a glance

  • Platforms: iOS, Android
  • Role: Full mobile build
  • Data: 100% offline (SQLite)
  • Standout: Custom WebView PDF reader
  • Status: Production (Play internal testing)

Highlights

What makes it work

Offline-first architecture

Schema migrations, local queries, and zero network dependency. The whole app works with no connection — no fallback states, no empty screens.

Custom PDF renderer

No native PDF library. A hand-built WebView plus PDF.js solution with DPR capping, per-page cleanup, and swipe gestures, made to dodge Android rendering crashes.

Timer, notes, and streaks

Timed sessions track pages and elapsed time, notes anchor to page ranges, and daily goals plus streak counters keep the habit going.

Shipped in one sprint

An AAB shipped to Google Play internal testing with an IPA pipeline ready for the App Store — from zero to production fast.

Tech Stack

Built with

SQLite React Native (Expo) TypeScript Drizzle ORM Zustand TanStack Query NativeWind WebView + PDF.js EAS Build

Screens

Inside the app

OffRead screen 1 OffRead screen 2 OffRead screen 3 OffRead screen 4 OffRead screen 5

Need a mobile app shipped fast?

OffRead went from zero to production in a single sprint. Tell me what you are building and I will help you scope a focused first version.