This README file provides an overview of the Nike Store Android Application, outlining its key features, architecture, and the technologies used in its development.
The Nike Store Android Application is a native Kotlin application that allows users to explore and shop for Nike products. It utilizes modern Android development practices and various technologies to deliver a seamless shopping experience.
-
Firebase Integration: Firebase is used for authentication, real-time database, and cloud functions, ensuring a secure and dynamic user experience.
-
Coroutines: We leverage Kotlin Coroutines for managing asynchronous operations efficiently, making the application responsive and performant.
-
SuspendCoroutine: The
suspendCoroutine
function is used to convert callback-based APIs into coroutine-friendly ones, simplifying asynchronous code. -
Kotlin Flows: Kotlin Flows are employed to handle streams of data in a reactive manner, providing a smooth and reactive UI.
-
Clean Architecture: The application follows Clean Architecture principles, ensuring separation of concerns, maintainability, and testability.
-
Multi-Module Project: The project is structured into multiple modules, promoting modularity, code reusability, and better organization.
-
MVVM (Model-View-ViewModel): We adopt the MVVM architectural pattern to create a clear separation between UI, business logic, and data operations.
-
Jetpack Compose: The user interface is built using Jetpack Compose, enabling a declarative and modern approach to UI development.
-
Kotlin: The application is written entirely in Kotlin, benefiting from its concise syntax, null safety, and modern language features.
-
Android DataStore: DataStore is used for efficient data persistence, offering a convenient way to store and manage user settings and preferences.
-
Room Database: Room is employed as a local database solution to store and manage user-related data offline.
-
Dagger Hilt : To provide instances and creation of objects.
- Kotlin
- Android Jetpack (Compose, Navigation, ViewModel, LiveData)
- Firebase (Authentication, Realtime Database, Cloud Functions)
- Kotlin Coroutines
- Kotlin Flow
- Clean Architecture
- Multi-Module Project
- Android DataStore
- Room Database
- Dagger Hilt
To get started with the Nike Store Android Application, follow these steps:
-
Clone this repository to your local machine:
git clone https://github.com/AhmedMaherHosny/NikeStore
-
Open the project in Android Studio.
-
Build and run the application on an Android emulator or physical device.
The project is structured into multiple modules for better organization and modularity:
- app: The main application module that contains the all dagger hilt dependency injection.
- domain: The domain module contains the core business logic and domain models.
- data (remote - local): The data module handles data retrieval, storage, and interaction with external APIs and databases.
- presentation: This module is responsible for UI presentation logic and state management and viewmodels.
- Core: Contains shared utility code and resources used across the application.
- ui: Contains all composable function and screens.