A performant, zero-bloat native Android client engineered with Jetpack Compose, Kotlin Coroutines, and Room Database to deliver distraction-free article reading on resource-constrained devices. Features background synchronization via WorkManager, smart tag categorization, offline caching, and responsive typography.
This project started as a simple frustration with my underpowered phone. I wanted to read bookmarked articles without the bloat of traditional news apps, so I built a native app using Jetpack Compose that prioritizes speed and minimalism.
Most bookmarking and reading apps are heavy on resources. They load unnecessary trackers, ads, and have bloated UIs. On a budget Android phone with 2GB RAM, most apps would freeze or take forever to load. I needed something that just worked.
Stock Android phones with limited RAM struggle with heavy apps. This was the core motivation behind building Bookmarked Android.
I built Bookmarked Android with performance as the primary goal from day one. Using Jetpack Compose's declarative approach, I created a streamlined interface that fetches bookmarks efficiently and renders them with minimal overhead.
On devices with limited RAM, loading large articles caused OutOfMemoryErrors. We solved this by implementing lazy loading and streaming large content chunks.
1// Efficient memory management with lazy loading2class ArticleViewModel : ViewModel() {3 private val articleRepository = ArticleRepository()45 fun loadArticlesLazily() {6 viewModelScope.launch {7 articleRepository.getArticlesPaginated(pageSize = 20)8 }9 }10}
Bookmarks wouldn't sync on unstable connections. We implemented exponential backoff retry logic with local queue management to ensure no data loss.
Query times were slow with thousands of bookmarks. We added proper database indexing and pagination to keep the UI responsive.
Database indexing reduced query times from 2 seconds to 50ms for large datasets.