Restaurant App :
This is an Android app for a restaurant that allows users to view the menu, place orders, and make reservations. The app is built using Kotlin and follows the recommended architecture from Google (data, domain, and UI).
Libraries Used :
The following libraries were used in this project:
Kotlin coroutines: For asynchronous programming and managing background threads. Room: For local data storage and caching. Retrofit: For networking and communicating with APIs. Navigation Component: For implementing navigation between different screens in the app. Hilt: For dependency injection and managing dependencies. ViewPager2: For implementing a swipeable gallery of restaurant images. Firebase Authentication: For user authentication and managing user accounts. Firebase Firestore: For storing and syncing data in real-time. ssp, sdp: For creating responsive layouts across different screen sizes. Coil: For loading images efficiently and asynchronously.
Operators Used :
The following operators were used in this project
Kotlin flow: For handling streams of data asynchronously and reactively. LiveData: For observing changes to data and updating the UI accordingly.
Architecture : The app follows the recommended architecture from Google, which separates the app into three layers:
Data layer: This layer contains the data sources and repository classes that manage the data. The data sources can be local (using Room) or remote (using Retrofit), and the repository class acts as an interface between the data sources and the domain layer. Domain layer: This layer contains the use case classes that implement the business logic of the app. These classes use the repository classes to fetch and manipulate data. UI layer: This layer contains the UI components (Fragments, Activities, and Views) that display the data to the user. The UI components observe changes to the data using LiveData or Kotlin flow.
Installation : To install and run the app, follow these steps:
Clone the repository. Open the project in Android Studio. Build and run the app on an emulator or physical device. License