Skip to content

ukevgen/BizareChat

Repository files navigation

Android Agilie Internship

Project description

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.

Screenshots

Project Specification

Project Requirements

  • OS: Android (min API 19)
  • Device types: mobile only
  • Orientation support: portrait + landscape
  • domain: <your company name>.internship.com
  • localization: en

Backend API (QuickBlox)

Backend is provided as QuickBlox service.

Functional requirements

If you’re interested on getting the requirements to the project, feel free to send an email to info@agilie.com

Design requirements

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

About project

Architecture specs

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.

Used Technologies

License

Apache-2.0

Releases

No releases published

Packages

No packages published

Languages