An Android application built with modern development practices to help developers learn System Design in Bangla. The application scrapes and displays content from the System Design Bangla GitHub Page. Mobile App Version of lahin31
- Topic Explorer: Browse through various System Design topics categorized by sections (e.g., Scaling, Database Indexing, Caching, etc.).
- Detailed Reading: View comprehensive content for each topic with a clean reading experience.
- Adaptive UI: Built with Jetpack Compose Adaptive components, offering a responsive List-Detail Pane layout that works seamlessly on phones, foldables, and tablets.
- State Persistence: Handles process death and configuration changes gracefully using
Parcelablenavigation state.
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3)
- Architecture: Clean Architecture with MVVM (Model-View-ViewModel)
- Asynchronous Programming: Coroutines & Flow
- Dependency Management: Gradle Version Catalog (libs.versions.toml)
- Navigation: Jetpack Compose Adaptive Navigation
- Web Scraping: Jsoup
- Networking: Retrofit & OkHttp (Infrastructure ready)
The project follows a modular and clean architecture pattern:
domain: Contains the business logic, includingModeldefinitions andUseCases. Completely independent of Android and UI frameworks.data: Implements the repository pattern, managing data sources (currently web scraping viaJsoup).ui: Jetpack Compose-based UI layer.screens: Contains Screen-level composables and their respectiveViewModels andStateholders.theme: Material 3 theme configuration.
- Clone the repository.
- Open the project in Android Studio (Ladybug or newer).
- Sync the project with Gradle files.
- Run the
appmodule on an emulator or a physical device.
- Stability: UI State classes are annotated with
@Immutableto help the Compose compiler optimize recompositions. - State Handling: ViewModels avoid direct
@Stableor@Immutableannotations, letting Compose's Strong Skipping Mode handle it efficiently while keeping state logic robust.
Contributions are welcome! If you find any issues or have suggestions for improvements, feel free to open a Pull Request.