Riyad Al-Salheen Android App
A modern, high-performance Android application built with Kotlin and Jetpack Compose for reading and searching Islamic literature.
Modern Android Architecture
Building a reactive, maintainable UI with Jetpack Compose and MVVM.
The application is architected using modern Android best practices, focusing on unidirectional data flow and declarative UI.
- Jetpack Compose: Fully declarative UI layer, utilizing state hoisting and recomposition optimization for a smooth 60 FPS experience.
- MVVM Pattern: Clear separation of concerns with MainViewModel managing UI state via StateFlow.
- Single-Activity Architecture: Utilizes Jetpack Navigation Compose for seamless screen transitions.
- Custom Rendering: Implemented a specialized HtmlText component to handle complex styled text rendering directly from the database.
Main dashboard with book and chapter navigation.
Data Engineering & Search Optimization
Efficiently handling thousands of records with specialized search capabilities.
Optimized search results with highlighted keywords.
Full-Text Search & Normalization
To provide an enterprise-grade search experience, I developed a custom data pipeline to handle Arabic text complexities.
- Python Data Pipeline: Developed scripts for database maintenance, HTML cleaning, and text normalization (removing tashkeel and variant characters).
- Optimized SQLite: Leveraged a pre-populated SQLite database with custom indices for rapid data retrieval.
- DataStore Preferences: Utilized Jetpack DataStore for persistent user settings like font size and theme.
- Repository Pattern: Abstracted data operations behind a clean Repository interface for better testability.
Enhanced User Experience
Prioritizing accessibility and readability for long-form content.
Bookmarks System
Efficient management of favorite content using a persistent storage layer.
Modern Navigation
Intuitive navigation drawer for quick access to all application sections.
Dark Mode & Scaling
Full support for system dark mode and adjustable font scaling for accessibility.