- Data (for database, API and preferences code)
- Domain (for business logic and models)
- App (for UI logic, with MVI)
- Dependency injection (with Hilt)
- Reactive programming with RXJAVA
- Google Material Design library
- Quick cached Image loading (with Picasso)
- Networking (with Retrofit)
- Flat layout hierarchy (with Constraint layouts)
- Multi Screen Segmentation (with Fragments)
- Navigation (with Navigation Library)
- Android lifecycle aware components (with Lifecycle)
- Fluid list loading (with Recycler View)
- Data Persistence (with Room)
- Data surviving configuration changes (with ViewModel)
- Type safe dependency management (with Kotlin DSL)
- Clone this repository preferably with Android Studio
- Build project and then run application. In the situation where you are asked about trusting the application please do select yes
- Please make sure you are on the
main
branch as that has all the latest changes.
- Book a room has offline support. Data is retrieved from remote when data is established and saved.
- Improve single source of truth implementation (At the moment the rooms list is being persisted locally after data is retrieved from the remote however is everytime the app starts the remote still call even thought some data is saved.)
- Make sure application UI supports Dark Theme entirely.
- Improve room booking (The the moment the app is still calling the remote to book a room while offline, this does not give a realistic view on the spots for a given room)
- Network notification when data connection is restored while offline.
- I would have loved to use compose for the UI.
- Introduce error pages and not rely on toasts messages for better UI error handling.
- With more time I would have liked to implemented more instrumentation tests and unit tests for the data repositories.
- Include place holder images for meeting rooms
- Improve how data is handled from remote when the expected data is not returned from remote.