BookTracker - iOS Reading Progress Tracker

Aplikasi iOS SwiftUI untuk mencatat progres membaca, sesi bacaan, heatmap aktivitas, scan nomor halaman, Google Books integration, dan share card.

Role
iOS Developer
Ownership
Solo builder: SwiftUI UI, SwiftData model, Google Books service, page scanning, and unit tests
Team
Solo open-source project
Period
2025 - 2026
Focus
iOS, iOS Developer, Swift, Mobile Developer

Overview

BookTracker adalah aplikasi iOS untuk membantu pengguna melacak progres membaca dan membangun kebiasaan baca. Aplikasi ini menggabungkan local persistence, Google Books API, VisionKit page scanner, activity dashboard, dan shareable reading card.

Tech & Libraries

Teknologi dan library yang dipakai atau disentuh di project ini:

SwiftSwiftUISwiftDataMVVMGoogle Books APIVisionKitCoreImageURLSessionDependency InjectionXCTestMockURLProtocol

Problem

Pembaca sering kehilangan konteks buku yang sedang dibaca, halaman terakhir, dan pola kebiasaan membaca. Aplikasi tracker perlu cepat saat input progress, mudah mencari metadata buku, dan tetap bekerja dengan data lokal yang rapi.

My Role & Ownership

Solo builder: SwiftUI UI, SwiftData model, Google Books service, page scanning, and unit tests

Technical Approach

Membangun aplikasi SwiftUI dengan MVVM, SwiftData, service layer, Google Books API integration, VisionKit untuk scan nomor halaman, CoreImage untuk QR code pada share card, dan dependency injection terpusat melalui `Injection`.

Architecture Notes

Aplikasi memakai MVVM dengan model Book dan ReadingSession di SwiftData. Service layer memisahkan BookService dan GoogleBooksService, sementara Injection menyediakan ModelContainer dan ViewModel dependencies secara terpusat.

Trade-offs

SwiftData dipilih agar persistence native dan modern, tetapi membuat target platform lebih baru. Scan halaman berbasis VisionKit membantu input cepat, tapi tetap membutuhkan fallback manual untuk kondisi kamera/izin yang tidak ideal.

Implementation Highlights

  • Tracking halaman terakhir dan sesi membaca menggunakan SwiftData.
  • Heatmap aktivitas dan kartu share aktivitas 6 bulan.
  • Scan nomor halaman otomatis dengan VisionKit.
  • Google Books API untuk search metadata dan cover buku.
  • Dependency injection terpusat untuk ViewModel dan service.
  • Unit test untuk BookService dan GoogleBooksService dengan MockURLProtocol.

Results

  • Mengubah tracking bacaan pribadi menjadi aplikasi iOS yang lebih visual, otomatis, dan mudah dipakai harian.
  • Pengguna bisa mencatat progress membaca dan melihat pola aktivitasnya.
  • Pencarian buku lebih cepat karena metadata diambil dari Google Books API.
  • Share card membuat progress membaca bisa dibagikan secara visual.
  • Public GitHub repository created in 2025 and active into 2026.
  • Menggunakan SwiftData, VisionKit, dan Google Books API.
  • Memiliki unit test untuk service layer.

Links