GalleryOn is a native Android application built in Kotlin, designed to showcase a clean, scalable, and modern approach to building a media gallery. The app uses best practices like modular clean architecture, Jetpack Compose for UI, and robust testing strategies.
-
Albums View
- Displays albums grouped by folders.
- Supports switching between Grid View and List View.
- Each album shows preview and media count.
-
Media Listing
- After selecting an album, displays media items (images/videos) within it.
- Supports basic viewing of media metadata like name, size, and date.
-
Media Details
- Displays basic metadata of media items:
- πΌοΈ Media
- π Name
- π Size
- ποΈ Date Taken
- Displays basic metadata of media items:
-
Permission Handling
- Requests appropriate storage permissions at runtime based on Android version.
| Album Screen (Grid) | Album Screen (List) | Media List Screen | Media Detail Screen | Cleanup Duplicate Screen | Cleanup Large-Media Screen | Cleanup Old-Media Screen |
|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Album Screen (Grid) | Album Screen (List) | Media List Screen | Media Detail Screen | Cleanup Duplicate Screen | Cleanup Large-Media Screen | Cleanup Old-Media Screen |
|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
π§± Clean MVI + Modularized Architecture
Maintains strict separation of concerns between layers.
| Module | Description |
|---|---|
app/ |
Application entry point and DI setup. |
core/ |
Common utilities like permissions management. |
domain/ |
Business models and use cases (pure Kotlin). |
data/ |
Repository implementations, media management. |
feature/albums/ |
Albums screen, view models, UI components. |
feature/media/ |
Media listing screen, view models, UI components. |
feature/smart-cleaner/ |
Identify large files, duplicates, and low-quality media for cleanup. |
- Kotlin β Modern Android language.
- Jetpack Compose β Declarative UI toolkit.
- Coroutines & Flow β Async & reactive data streams.
- Navigation (Compose) β Type-safe screen navigation.
- Hilt β Dependency Injection framework.
- JUnit4 β Unit testing framework.
- MockK β Mocks/stubs for testing.
- Turbine β Test Kotlin Flow emissions.
- β *ViewModel
- β *Repository
- β *UseCases
All tests utilize MockK, Turbine, and Compose Test APIs.
./gradlew clean test- Adopted a Clean MVI architecture to ensure clear separation of concerns and scalable code structure.
- Used Jetpack Compose for modern, declarative, and efficient UI development.
- Applied Dagger-Hilt for lightweight and easy-to-manage dependency injection.
- Focused heavily on testability, modularization, and best Kotlin practices for long-term maintainability.
| Priority | Feature | Module | Description | Status | Target Milestone |
|---|---|---|---|---|---|
| β High | Smart Cleaner | feature-cleaner |
Identify large files, duplicates, and low-quality media for cleanup. | β Done | v2.0.0 |
| β High | Album Management | feature-albums |
Create albums. | β Done | v2.0.0 |
| β High | Search Functionality | feature-search |
Global search by name, date, tags, or file type. | π Todo | v2.1.0 |
| β High | Tagging System | feature-tagging |
Let users assign tags and filter media accordingly. | π Todo | v2.1.0 |
| β High | Vault Mode (Private Albums) | feature-vault |
Add biometric-secured private albums. | π Todo | v2.2.0 |
| β High | Cloud Backup Integration | feature-cloud |
Optional Google Drive/Dropbox backup for media. | π§ͺ Idea | v2.3.0 |
| β Medium | Sort & Filter Controls | feature-media |
Filter media by size, type, date; sort by date, name, or size. | π Todo | v2.3.0 |
| β Medium | AI Categorization | feature-ai |
Use ML Kit to categorize photos (e.g., people, travel, food). | π§ͺ Idea | v2.4.0 |
| β Medium | Media Editor Options | feature-edit |
Crop, rotate, compress, or trim media within app. | π§ͺ Idea | v2.5.0 |
| β Medium | Crash Reporting | core-analytics |
Firebase Crashlytics integration for error monitoring. | π Todo | v2.0.0 |
| β Low | Favorites View | feature-favorites |
Mark favorite media and access them quickly. | π Todo | v2.2.0 |
| β Low | Custom Themes | feature-theme |
Offer user-selectable themes (light/dark/custom accent colors). | π Todo | v2.6.0 |
| β Low | Sharing Suggestions | feature-share |
Show nearby friends/devices to share media easily. | π§ͺ Idea | v2.6.0 |
Mirza Arslan
π§ [email protected]
π LinkedIn
GalleryOn showcases a modern Android media application built with a focus on clean architecture, performance, and best development practices.
The project emphasizes modularity, test coverage, scalability, and a smooth user experience.
Feel free to explore it, and suggestions for improvements are always welcome! π













