Bizare Android chat app has the most common features like:
- Users and friends;
- Auth & Facebook;
- Chat messages and all the actions like remove and edit;
- Push messages and local data cache.
- OS: Android (min API 19)
- Device types: mobile only
- Orientation support: portrait + landscape
- domain: <your company name>.internship.com
- localization: en
Backend is provided as QuickBlox service.
-
QuickBlox Admin panel: https://admin.quickblox.com
-
Backend API documentation: http://quickblox.com/developers/Overview
-
Error codes and rate limits API documentation: http://quickblox.com/developers/Errors
-
Authentication and Authorization API documentation: http://quickblox.com/developers/Authentication_and_Authorization
-
Users API documentation: http://quickblox.com/developers/Users
-
Chat API documentation: http://quickblox.com/developers/Chat
-
Content API documentation: http://quickblox.com/developers/Content
-
Push notifications API documentation: http://quickblox.com/developers/Messages
If you’re interested on getting the requirements to the project, feel free to send an email to info@agilie.com
Application’s UI should be implemented based on Material Design principles. Next points should be taken into consideration during app’s design implementation:
- use Material Theme
- use native Android SDK’s UI widgets
- ripple effect should be implemented for all clickable elements (rows, buttons, clickable texts etc) for Android 5.0+ selected/unselected/enabled/disabled states should be implemented for all clickable elements for Android with version lower than 5.0
- use animations for changing UI elements’ properties (i. e. show/hide, move). Switching between screens should be also animated.
- User should be notified in case of background processes (network, db operations). Use loading indicators. Do not block UI with loading elements, User should always have possibility to navigate the app
- User should be notified in case of any kind of errors occur
- Use Crouton and Toast UI Widgets
In this project our team adhere to Clean Architecture principles. It means that we've made 3 layers which perform their specific task.
Presentation: Here we've used MVP pattern, which allows us to separate view elements from the logic and retrieving data. In View we contain only View elements, lists, specific Android parts which need to be displayed to user. Also we have reference on Presenter class. In Model we've implemented retrieving of data with specific methods which needs Context for perform. In Presenter we contain references on Model, View and UseCase classes. Here we implement all the logic that is required for concrete View.
Domain: In this layer we have UseCase classes, every particular class implements one event that allows us to plan architecture and add every feature without any conflict.
Data: In this layer we've implemented retrieving data from net, database, cache or another source. Also, in this layer we've implemented choosing of source. For example if we have no cached data, we fetch one from network.
- Retrofit 2 https://github.com/square/retrofit
- Okhttp https://github.com/square/okhttp
- RxAndroid https://github.com/ReactiveX/RxAndroid
- Smack https://github.com/igniterealtime/Smack
- Moxy https://github.com/Arello-Mobile/Moxy
- Google-Cloud-Messaging https://github.com/google/gcm
- EventBus https://github.com/greenrobot/EventBus
- Swipe layout https://github.com/daimajia/AndroidSwipeLayout
- GreenDAO https://github.com/greenrobot/greenDAO
- SqlCipher https://github.com/sqlcipher/android-database-sqlcipher
- Mockito https://github.com/mockito/mockito
- Powermock https://github.com/powermock/powermock