This is a simple app to get basic information about several countries of the world
Countries of the World is an app made as a task which is part of the application process at Rebtel
- Select Country
- Display Country's Information
- Show Country's Flag
- Use REST Countries API
Based on the given requirements, I made a list of thing that I think this app should have. I will list them below.
-
RecyclerView: My first idea was to make a list of flags. For that, I used the RecyclerView and the CardView since they work very well together, besides they are very flexible, making the layout task easier.
-
Volley: Since the REST API needed to be accessed, I chose Volley as a library to perform the network operations. I chose this mainly because I had worked with it before.
-
Butter Knife: to make view binding simpler and the code a little bit cleaner.
-
Unit testing: for better quality of code, allowing less bugs and side effects.
-
Fragments: to show the country's information, a fragment is created containing a few informations from the API.
-
Check and Request permissions at runtime for API 23+
-
Present the user with a few error messages as a feedback in case something go wrong.
-
Search View: as the user iteracts with the list, since it is a big one, I thought it would be better to have a Search View for better UX.
-
Separete classes in different packages: this help any developer to understand better the code. The organization of a MVC-like structure is vry familiar and easy to understand.
The whole process was thought to be like a Sprint in SCRUM, since I wanted to finish in a few days.
In the last day, I decided to add a MapBox map to the app to make it more interesting to use. For that, I got a limited access token, which I believe anyone who can run the code will be able to use it.
For the environment, I used Ubuntu with Android Studio as IDE. For testing, I used a Samsung Galaxy Note 5.
Despite being a simple app, the openness of the requirements made me think about what is really important to showcase while developing an Android app. For the most part, I believe all the requirements were fulfilled and the quality of the development is good enough to suit the team needs.