agilie / BizareChat

Android BizareChat

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android Agilie Internship

Hey there, a couple of months ago (end of 2016) we’ve announced an internship program for Android developers. During November 2016 we’ve gotten hundreds of applications and selected 12 young and smart students. Guys have worked hardly a few months to contribute a chat Android app. We split them into 4 teams with 3 developers on each team.

The process included a couple of local meetings and a lot of remote consulting chats where we discussed the product requirements, an architecture, list of libraries and other technical terms.

By the end of the internship we’ve made a local event to prove own projects, review the results and select a winner. As one of the credits we decided to publish a winning project on a Github.

So let us intro BizareChat!

As a general technical requirements we’ve agreed to develop an Android chat app. We provided the functional requirements and general recommendations on UI/UX.

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

About

Android BizareChat

License:Apache License 2.0


Languages

Language:Java 100.0%