- Singular Activity - ChatActivity (thin Activity only responsible for UI updates).
- RecyclerView Adapter - ChatAdapter
- RecyclerView Items - ChatViewHolder
- Simple Chat data POJO - ChatMessageContainer, ChatMessageData
- Single conversation POJO - ChatThread
- NetworkController - with static methods of POST/GET Volley requests
- Router - Currently simple but can be extended for more functionality
- ChatActivityController - acts as a presenter in the MVP pattern. Can be implemented as an actual Presenter using Injection later.
- SharedPreferencesController - Singleton
- Assumption: Data stays simple with 2,3 variables only
- Extended message functionality like forward, delete, reply etc. are not required in the assignment
- Extended data functionality like searching, sorting are not required in the assignment
- Butterknife
- Volley
- CircularImageView
- JSON parsing - not accounting for 'optional' variables
- Unit testing - an actual MVP pattern would have made modules easier to unit test
- Have not yet implemented going-away of keyboard on scrolling the RecylerView