https://github.com/bengisusaahin/geogallery
https://github.com/bengisusaahin/geogallery
exif-interface jetpack-compose kotlin mvvm
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bengisusaahin/geogallery
- Owner: bengisusaahin
- License: apache-2.0
- Created: 2024-10-03T20:10:23.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-23T16:36:04.000Z (over 1 year ago)
- Last Synced: 2025-02-04T09:22:41.053Z (over 1 year ago)
- Topics: exif-interface, jetpack-compose, kotlin, mvvm
- Language: Kotlin
- Homepage:
- Size: 144 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://medium.com/@bengisusaahin/dijital-an%C4%B1lar%C4%B1n%C4%B1z%C4%B1-yerinde-yakalamak-exifinterface-ve-android-ile-konum-bilgisi-kullan%C4%B1m%C4%B1-e0975c456f0f)
Table of Contents
## 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
https://github.com/user-attachments/assets/08524549-4d96-43b0-8170-9e9ac718ea60
## 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)](https://developer.android.com/training/dependency-injection/hilt-android) - Used for dependency injection, simplifying the management of application components.
* [Jetpack Compose (1.9.1)](https://developer.android.com/develop/ui/compose) - A modern toolkit for building native UI in Android.
* [Compose Lifecycle (2.8.4)](https://developer.android.com/develop/ui/compose/lifecycle) - Manages lifecycle-aware components in Jetpack Compose.
* [MVVM](https://developer.android.com/topic/libraries/architecture/viewmodel#implement) - A design pattern used to separate concerns, making the application more modular, testable, and maintainable.
* [Lifecycle (2.8.4)](https://developer.android.com/topic/libraries/architecture/lifecycle) - Manages Android lifecycle-aware components.
* [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores
UI-related data that isn't destroyed on UI changes.
* [UseCases](https://developer.android.com/topic/architecture/domain-layer) - Located domain
layer that sits between the UI layer and the data layer.
* [Repository](https://developer.android.com/topic/architecture/data-layer) - Located in the data
layer that contains application data and business logic.
* [Coil (2.6.0)](https://coil-kt.github.io/coil/compose/) - An image loading library for Android backed by Kotlin Coroutines.
* [ExifInterface (1.3.7)](https://developer.android.com/reference/androidx/exifinterface/media/ExifInterface) - 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
```
2. Open the cloned project in Android Studio.
3. Build and run the app on an emulator or a physical device.
----------------------------------------------------------------
* Or you can download the APK of the application [here](https://drive.google.com/file/d/1RgIxpYJLNMky4nM836JD1FeD_0PJgiN8/view?usp=sharing)
## Contact
Bengisu Şahin - bengisusaahin@gmail.com
## Licence
This project is licensed under the [Apache Licence](https://github.com/bengisusaahin/GeoGallery?tab=Apache-2.0-1-ov-file)