Skip to content

bengisusaahin/GeoGallery

Repository files navigation

GeoGallery

GeoGallery is an application designed to allow users to select images from their device's gallery, view them, and display associated location information. This intuitive platform enhances the user experience by combining image viewing with geolocation data.

Check out the full Medium article that dives deeper into the development process and challenges faced during the creation of GeoGallery! Medium Article Link

Table of Contents

  1. Key Features
  2. Demo
  3. Requirements
  4. Open-Source Libraries
  5. Architecture
  6. Getting Started
  7. Contact
  8. Licence

Key Features

  • Select Images: Users can easily select images from their device's gallery.
  • View Image Locations: Display geolocation information (latitude and longitude) for the selected images.
  • Date and Time: Show the date and time associated with the image.
  • User-Friendly Interface: An intuitive and easy-to-navigate UI built with Jetpack Compose.

With GeoGallery, users can explore their images along with geographical context, making it a valuable tool for documenting memories and locations.

Demo

WhatsApp.Video.2024-10-05.at.14.33.47.mp4

Requirements

  • Android 7.0 (Nougat) or higher (Min SDK 24)
  • Kotlin 1.5.1 or higher

Open-Source Libraries

  • Minimum SDK level 26
  • Dependency Injection (Hilt) (2.51.1) - Used for dependency injection, simplifying the management of application components.
  • Jetpack Compose (1.9.1) - A modern toolkit for building native UI in Android.
  • Compose Lifecycle (2.8.4) - Manages lifecycle-aware components in Jetpack Compose.
  • MVVM - A design pattern used to separate concerns, making the application more modular, testable, and maintainable.
    • Lifecycle (2.8.4) - Manages Android lifecycle-aware components.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • UseCases - Located domain layer that sits between the UI layer and the data layer.
    • Repository - Located in the data layer that contains application data and business logic.
  • Coil (2.6.0) - An image loading library for Android backed by Kotlin Coroutines.
  • ExifInterface (1.3.7) - Used to read and write EXIF data for images, allowing the application to display metadata such as location, date, and time associated with photos.

Architecture

This Android app uses the MVVM (Model-View-ViewModel) pattern and Clean Architecture principles, organized into four main modules for better scalability and maintainability.

MVVM

  • Model: Manages data and business logic, separate from the UI.
  • View: Displays the data and interacts with the user.
  • ViewModel: Connects the View and Model, handling UI-related logic and state management.

Clean Architecture & Multi Module

  • App Module: The core module that integrates all other modules and provides the main entry point of the application.
  • Data Module: Handles data sources, such as APIs and databases, and provides data to the Domain Layer.
  • Domain Module: Contains the core business logic and use cases, which are independent of external frameworks.
  • Feature Module: Encapsulates the app's features, allowing for modular development and testing of individual functionalities.

Getting Started

  • If You Want to Run the App on Android Studio:
  1. Clone this repository to your preferred directory using the following command:
git clone https://github.com/bengisusaahin/GeoGallery.git
  1. Open the cloned project in Android Studio.

  2. Build and run the app on an emulator or a physical device.


  • Or you can download the APK of the application here

Contact

Bengisu Şahin - bengisusaahin@gmail.com linkedin

Licence

This project is licensed under the Apache Licence

Releases

No releases published

Packages

No packages published

Languages