Sefer

Productivity / Mobile

Offline-first PDF reader for Android - library management, persistent annotations, and an immersive reading experience.

SeferOngoing

A clean, feature-rich PDF reader built with Flutter for Android. Manage a local library of documents, organise files into collections, annotate with highlights and freehand drawing, and resume reading exactly where you left off - all without a network connection.

Background

Most Android PDF readers are either too bloated or too bare. Sefer was built to hit the sweet spot - fast, offline-first, and genuinely useful. The annotation system was the hardest part: accurately mapping touch coordinates to PDF page space across different zoom levels and reading modes required a custom coordinate mapper layered on top of pdfrx's render pipeline. Persisting those annotations reliably in SQLite, then replaying them as overlays on re-open, took careful separation between the render layer and the data layer.

Challenge

Building a pixel-accurate annotation overlay that survives zoom, page changes, and reading mode switches, while keeping the SQLite persistence and Riverpod state in sync without leaking render details into business logic.

Solution

Implemented a custom CoordinateMapper that converts between screen and normalised PDF-space coordinates, backed by dedicated SQLite DAOs for annotations and notes. Riverpod providers isolate reader state from annotation state, and a debounced persistence service batches rapid library mutations into single writes.

Tech Stack

FlutterDartRiverpodsqflitepdfrxSyncfusion PDFGoRouterFreezedSharedPreferencesGoogle Fonts

Project Profile

2026
Mobile Developer
Ongoing

Impact

Reading Modes
3
Annotation Types
Highlight, Draw, Note
Offline Support
Full CRUD

Interested in building something similar?

Get in touch