|
1 | | -# GptMap |
2 | | -Crafted a map search app using Kotlin and Jetpack Compose. The app boasts a modular architecture, dynamic UI, secure user data handling, and efficient dependency injection. It integrates various APIs and advanced graphics, ensuring a smooth user experience. |
| 1 | +<h1 align="center">Gptmap🗺️🤖</h1> |
| 2 | +<p align="center">Welcome to Gptmap, a startup project crafted using Kotlin and Jetpack Compose.</p> |
| 3 | + <p align="center" text-align="center">This project will guide you through creating a comprehensive Android application using a modern toolkit, highlighting the integration of AI technologies and illustrating the real-world applications of these advanced technologies, providing valuable insights and best practices.</p> |
3 | 4 |
|
4 | | -Demo: [Gptmap-Demo](https://drive.google.com/file/d/1gCmDmGglGuZJ5VTG2jt_mFadUiBiQuKd/view?usp=sharing) |
| 5 | + |
5 | 6 |
|
6 | | -## Key Technologies: |
| 7 | +## Download |
| 8 | +Go to the [Releases](https://github.com/f-arslan/GptMap/releases) to download the latest APK. |
7 | 9 |
|
8 | | -- Kotlin |
9 | | -- Jetpack Compose (custom composables and animations) |
10 | | -- Ktor |
11 | | -- MongoDB (Realm, Database, and JWT Auth) |
12 | | -- Firestore and Storage |
13 | | -- Firebase Auth (Email & Password - Gmail) |
14 | | -- Dagger2, Hilt, Koin |
15 | | -- Google Maps API |
16 | | -- Third-party APIs (Gemini, Palm, Chatgpt, Unsplash) |
17 | | -- Coil, Lottie |
18 | | -- Kotlin Symbol Processing (KSP) |
19 | | -- Model-View-ViewModel (MVVM) and Model-View-Intent (MVI) patterns |
20 | | -- Coroutines |
21 | | -- ViewModel |
22 | | -- Retrofit |
23 | | -- Docker |
24 | | -- GCP Secret Manager |
25 | | -- Testing (JUnit 4 - JUnit 5 - Mockk - turbine) |
26 | | -- Linting (Detekt) |
| 10 | +## Tech Stack & Open-source Libraries |
| 11 | + |
| 12 | +- **[Kotlin](https://kotlinlang.org/)**: The primary language for application development, emphasizing safety, simplicity, and interoperability. |
| 13 | +- **[Jetpack Compose](https://developer.android.com/jetpack/compose)**: Used for modern UI development, leveraging custom composables and animations for a dynamic and responsive design. |
| 14 | +- **Jetpack Libraries**: |
| 15 | + - **ViewModel**: Centralizes UI-related data management, making it resilient to configuration changes. |
| 16 | + - **Lifecycle**: Observes component lifecycles to ensure appropriate UI actions are taken at each stage. |
| 17 | + - **SavedStateHandle**: Enhances state management by preserving UI data across system-initiated process terminations. |
| 18 | + - **DataStore**: A modern data storage solution that utilizes Kotlin coroutines and Flow to store data asynchronously, securely, and consistently, serving as a replacement for SharedPreferences. |
| 19 | +- **[Ktor](https://ktor.io/)**: Enables server and client-side HTTP communications, seamlessly integrating with various third-party APIs for extended functionality. |
| 20 | +- **Database and Storage Solutions**: |
| 21 | + - **MongoDB Realm**: Provides a robust local database and synchronization solutions, enabling efficient offline data access and seamless cloud integration. It also implements **JWT Authentication** for secure user authentication and data access. |
| 22 | + - **Firebase Firestore and Storage**: Facilitates real-time data synchronization and scalable cloud storage, ensuring smooth data operations and media management. |
| 23 | +- **Asynchronous Programming**: |
| 24 | + - **[Coroutines](https://github.com/Kotlin/kotlinx.coroutines)** and **[Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/)**: Manage asynchronous tasks and streamline data stream processing, guaranteeing a smooth user experience. |
| 25 | +- **Authentication Systems**: |
| 26 | + - **Firebase Auth**: Offers support for diverse authentication mechanisms, including email & password and Gmail, ensuring secure user access and streamlined account management. |
| 27 | + - **[MongoDB Realm JWT Auth](https://www.mongodb.com/docs/atlas/app-services/authentication/custom-jwt/)**: Implements JSON Web Token (JWT) authentication to ensure secure and scalable user authentication within the MongoDB Realm ecosystem. |
| 28 | +- **Dependency Injection Frameworks**: |
| 29 | + - **[Dagger2](https://dagger.dev/)**, **[Hilt](https://dagger.dev/hilt/)**, and **[Koin](https://insert-koin.io/)**: Provide scalable and maintainable object creation and management, optimizing app architecture and development workflow. |
| 30 | +- **APIs & Services Integration**: |
| 31 | + - **Google Maps API**: Enhances app functionality with comprehensive mapping and location services. |
| 32 | + - **Third-party APIs (Gemini, Palm, ChatGPT, Unsplash)**: Enrich the application with a diverse range of services, including cryptocurrency data, AI-generated content, and high-quality images. |
| 33 | +- **Image Loading and Animation Libraries**: |
| 34 | + - **Coil**: Efficiently loads and displays images, optimizing memory and network usage. |
| 35 | + - **Lottie**: Implements complex animations sourced from JSON files, enriching the UI with engaging visuals. |
| 36 | +- **Material Design 3**: Adopts the latest Material Design guidelines for a cohesive, dynamic user interface and enhanced user experience, leveraging the newest components, theming, and layout principles. |
| 37 | +- **[Kotlin Symbol Processing (KSP)](https://github.com/google/ksp)**: Streamlines code generation and processing, enhancing development efficiency. |
| 38 | +- **WorkManager**: Manages background tasks and asynchronous operations, ensuring reliable execution under various system conditions. |
| 39 | +- **Architectural Patterns**: |
| 40 | + - **MVVM and MVI**: Adopt modern architectural patterns for a clean separation of concerns, facilitating the development of testable and maintainable code. |
| 41 | +- **Core Android Features**: |
| 42 | + - Utilizes Services, Broadcast Receivers, and Intents for robust background processing and inter-component communication. |
| 43 | +- **Project Organization**: |
| 44 | + - Implements a Multi Module Structure with a version catalogue, promoting modular development and easier dependency management. |
| 45 | +- **Networking**: |
| 46 | + - **[Retrofit](https://github.com/square/retrofit)**: Simplifies REST API communication, enhancing data exchange and integration. |
| 47 | +- **[Docker](https://www.docker.com/)**: Utilizes container technology for consistent development, testing, and deployment environments. |
| 48 | +- **Secure Management**: |
| 49 | + - **GCP Secret Manager**: Safeguards sensitive information, ensuring secure access and storage of secrets. |
| 50 | +- **Testing Suite**: |
| 51 | + - Employs **JUnit 4 & 5**, **[Mockk](https://mockk.io/)**, and **[turbine](https://github.com/cashapp/turbine)** for comprehensive testing across units and integration points. |
| 52 | +- **Code Quality Tools**: |
| 53 | + - **Detekt**: Monitors code quality and maintainability, enforcing best practices and coding standards. |
| 54 | + |
| 55 | +### Architecture Overview |
| 56 | + |
| 57 | + |
| 58 | +<p>This project is designed following the principles of Clean Architecture, utilizing a multi-modular approach. It includes several layers, including the UI Layer, Domain Layer, Data Layer, and the backend, to ensure a solid separation of concerns and enhance maintainability. |
| 59 | + |
| 60 | +For the backend, Ktor for server-side logic, MongoDB for database management (Realm Sync and Auth for synchronization and authentication), Firebase for authentication, storage, and real-time database capabilities (Auth, Storage, Firestore), and GCP's Secret Manager for secure management of secrets and API keys.</p> |
0 commit comments