Multimodule test task
Application consists of 12 modules: app ui_categories ui_dishes ui_details ui_cart datasource_categories datasource_dishes datasource_details datasource_cart di_module resourse_module location_module delegate_adapter
app consists of main activity that have navigation bar and topbar with date and location provided by location_module.
Application have 4 feature-screens, each of them is located in its module (ui_categories, ui_dishes, ui_details, ui_cart). This feature modules does not depend on each other and share data through database or MainActicity and FragmentManager (for primitives).
UI feature modules depend on their corresponding datasources modules (datasource_categories, datasource_dishes, datasource_details, datasource_cart), that contains dataModels and interfaces that are neccesary for feature modules. This datasource modules can be shared between feature modules.
di_module contains dagger main component with providers of retrofit API and room DB. App depends on di_module and provides dependencies from di_module to Dagger Components of feature modules. Dagger components provide Viewmodel to feature fragments and dependencies to VM.
delegate_adapter contains DelegateAdapter to use in feature modules
resource_module contains drawables, strings etc to be used in other modules
Application uses flow and coroutines for work with server api and DB, Dagger 2 for dependency injection. Architecture pattern is MVVM with CLEAN (partially).
Unfortunately, for now mock server is unavailable, video of the app https://drive.google.com/file/d/1M3tUv1ny6JocAPArdLz1qc8y_8LY90xJ/view?usp=share_link
![](https://private-user-images.githubusercontent.com/62521232/277002861-76500517-0519-4e91-ab6c-19787adf0fc6.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzU3MTMsIm5iZiI6MTcxOTEzNTQxMywicGF0aCI6Ii82MjUyMTIzMi8yNzcwMDI4NjEtNzY1MDA1MTctMDUxOS00ZTkxLWFiNmMtMTk3ODdhZGYwZmM2LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5MzY1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVlMTc3MDhhNjY5YzJjODg2OTBlMmZmMDliMzAwYTA0MWU1NGYxYmNjNTY2NTNjZGIyNWY2ODgwODVmOTQ4NTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.cbec5QtPtwVUF3qDYkb11pjDXvjGUSFhe2HUrVrInyY)
![](https://private-user-images.githubusercontent.com/62521232/277002887-92237969-cac8-4c79-8ba9-ec45b520dd3b.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzU3MTMsIm5iZiI6MTcxOTEzNTQxMywicGF0aCI6Ii82MjUyMTIzMi8yNzcwMDI4ODctOTIyMzc5NjktY2FjOC00Yzc5LThiYTktZWM0NWI1MjBkZDNiLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5MzY1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwMzcyNzcyMmYwMzE5NDhkZTVhMWRlOWQ1MjNlOWY3ODVjNjU3MGJhNDIxODE3ZGZjOGM4ODhmMWY1ZjNjNzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.l6yS7UY6Jtw_2hU3Vv3tCNPLh2J7UKKVHMi4ODg7IV0)
![](https://private-user-images.githubusercontent.com/62521232/277002911-ac8817d3-27eb-4ae8-a4e0-6c633c23db8f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzU3MTMsIm5iZiI6MTcxOTEzNTQxMywicGF0aCI6Ii82MjUyMTIzMi8yNzcwMDI5MTEtYWM4ODE3ZDMtMjdlYi00YWU4LWE0ZTAtNmM2MzNjMjNkYjhmLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5MzY1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmMzBlYTA2YTk1ZTYyY2Q3NmE4OTEzZjNmYjgyZmUwMTdhODdiZjU5OGNkNzk2ZDVkMjg5NGM5YzdhYTVkODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.eLO9mtl3AOLVfEdejfjhrYKfK7K7O94WvP2Q0bFCuyw)
![](https://private-user-images.githubusercontent.com/62521232/277002942-b1c5922f-b1a3-4e6c-81cb-f74b97baeb3d.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkxMzU3MTMsIm5iZiI6MTcxOTEzNTQxMywicGF0aCI6Ii82MjUyMTIzMi8yNzcwMDI5NDItYjFjNTkyMmYtYjFhMy00ZTZjLTgxY2ItZjc0Yjk3YmFlYjNkLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjIzVDA5MzY1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5MjgwZTMyN2I3ZjdhOTQyOWE0NTZkZTIwZDBkODFkMWRiOTUzYzcyY2EwZDU5YjUzMzRmZjA1OTNjNzg0MDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Cz6VRzIqVKtIMTlouaNKmJ-rziH-jnkJOOsvOSM6FBs)