
Gutenread
Gutenread
GutenRead is a lightweight Flutter app for browsing books from the Gutendex API, supporting online and offline access, infinite scroll, search history, and favorites — all built with clean architecture and Riverpod.
GutenRead is a Flutter mobile application built to explore book collections from the Gutendex API, designed with performance, testability, and scalability in mind. I architected the app using a clean architecture pattern (data → domain → presentation), applying Domain-Driven Design principles.
I implemented offline-first behavior using Isar DB, ensuring that users could access their search history and favorites even without an internet connection. Book browsing supports infinite scroll with caching, and smart search handles both local and remote results dynamically. Favorites are persistently stored using Isar and synchronized across app sessions.
I used Riverpod and StateNotifier for scalable state management and handled complex UI state with AsyncValue. The networking layer was built with Dio and modeled with `freezed` data classes and `json_serializable`. I maintained a modular structure and ensured testability by isolating business logic in the domain layer.
Additional enhancements included local storage management (shared_preferences & path_provider), network awareness (connectivity_plus), optimized image loading (cached_network_image), and page indicators for better UX. I also wrote unit tests to ensure code robustness.
See Application
Timeline
: July 2025
Tech Stack
Flutter
Riverpod
Isar DB
Freezed
Dio
GoRouter
Connectivity Plus
< Previous
MyIndihome
Next >
Pokedex