My heroes list
The requirements raised for this assignment shall test concepts of:
- Architectural design for Android Applications;
- Ability to communicate with complex end-points, parsing JSON responses and update UI;
- Use Apiary to communicate with api, to check documentation click in link
Requirements | |||
ID | Name | Description | |
REQ001 | Get my heroes | Application must be able to read an URL and parse url | |
REQ002 | Display list heroes | Display list when click in item on bottom navigation view | |
REQ003 | Display empty heroes | When not has heroes show empty view | |
REQ004 | Display error screen | When something is wrong on request show error view |
Architecture Uses concepts of the notorious Uncle Bob's architecture called Clean Architecture. The software produced by this architecture is going to be:
Independent of Frameworks. Testable. Independent of UI. Independent of Database.
-----------------![](https://raw.githubusercontent.com/uziassantosferreira/DogHero-Challange/master/architecture/clean.png)
![](https://raw.githubusercontent.com/uziassantosferreira/DogHero-Challange/master/architecture/clean_1.jpg)
- Android Support Library Provides additional convenience classes and features not available in the standard Framework API for easier development and support across more devices.
- Android Architecture Components A collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.
- [Koin] A pragmatic lightweight dependency injection framework for Kotlin developers.
- RX Java A library for composing asynchronous and event-based programs using observable sequences for the Java VM.
- RX Kotlin RxJava bindings for Kotlin.
- RX Android RxJava bindings for Android.
- ConstraintLayout Allows you to create large and complex layouts with a flat view hierarchy (no nested view groups).
- RecyclerView A flexible view for providing a limited window into a large data set.
- Glide An image loading and caching library for Android focused on smooth scrolling
- SectionedRecyclerViewAdapter An Adapter that allows a RecyclerView to be split into Sections with headers and/or footers. Each Section can have its state controlled individually.
- CircleImageView A circular ImageView for Android
- GifImageView Android ImageView that handles animated GIF images
- Retrofit A type-safe HTTP client for Android and Kotlin.
- OkHttp An HTTP & HTTP/2 client for Android and Kotlin applications.
- Gson A Converter which uses Gson for serialization to and from JSON..
- Junit) JUnit is a unit testing framework for the Java programming language.
- Mockito A small library that provides helper functions to work with Mockito in Kotlin.
- kluent Kluent is a "Fluent Assertions" library written specifically for Kotlin.
- kakao Nice and simple DSL for Espresso in Kotlin
- Explain more about the architecture diagrams in README file.
- Improve and add more unit and instrumentation tests
- Improve viewmodel to more reactive like add behaviours
- Add static analysis tools
- Add CI
- Remove dependency circleview and use only glide
- Add jacoco to generate report about code coverage
Copyright 2018 Uzias Santos Ferreira
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.