Thanks to visit codestin.com
Credit goes to github.com

Skip to content

arslan555/GalleryON

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⚑ GalleryOn App

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.

Android Kotlin Jetpack Compose MVI MediaStore Unit Tests

πŸ“ App Overview

  1. Albums View

    • Displays albums grouped by folders.
    • Supports switching between Grid View and List View.
    • Each album shows preview and media count.
  2. Media Listing

    • After selecting an album, displays media items (images/videos) within it.
    • Supports basic viewing of media metadata like name, size, and date.
  3. Media Details

    • Displays basic metadata of media items:
      • πŸ–ΌοΈ Media
      • πŸ“„ Name
      • πŸ“ Size
      • πŸ—“οΈ Date Taken
  4. Permission Handling

    • Requests appropriate storage permissions at runtime based on Android version.

πŸ“Έ Screenshots

β˜€οΈ Light Mode

Album Screen (Grid) Album Screen (List) Media List Screen Media Detail Screen Cleanup Duplicate Screen Cleanup Large-Media Screen Cleanup Old-Media Screen

πŸŒ™ Dark Mode

Album Screen (Grid) Album Screen (List) Media List Screen Media Detail Screen Cleanup Duplicate Screen Cleanup Large-Media Screen Cleanup Old-Media Screen

🧠 Architecture

🧱 Clean MVI + Modularized Architecture
Maintains strict separation of concerns between layers.

πŸ“ Module Structure

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.

πŸš€ Libraries & Tech Stack

🧰 Core Technologies

  • 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.

πŸ§ͺ Testing Libraries

  • JUnit4 β€” Unit testing framework.
  • MockK β€” Mocks/stubs for testing.
  • Turbine β€” Test Kotlin Flow emissions.

πŸ§ͺ Testing Strategy

🧷 Unit Tests

  • βœ… *ViewModel
  • βœ… *Repository
  • βœ… *UseCases

All tests utilize MockK, Turbine, and Compose Test APIs.

./gradlew clean test

πŸ’‘ Thought Process

  • 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.

πŸ“Œ GalleryOn – Phase 2 Feature Backlog

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

πŸ‘¨β€πŸ’» Author

Mirza Arslan
πŸ“§ [email protected]
πŸ”— LinkedIn

🧭 Final Thoughts

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! πŸš€

About

GalleryOn is a modern Android gallery application built using Kotlin, Jetpack Compose, and a clean MVVM architecture. It offers a fast, beautiful, and customizable way to explore your device's images and videos, supporting both light and dark modes, multiple view layouts (Grid/List) & media details

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages