During Android courses we had to do a little app as a project, where we can explore restaurants and expand the data we have from the REST API with our experience. The goal was to have an app which works well, where the user can have a profile, get data from the API as mentioned, list it, view it one by one, and store the modifications in a local database.
The design and UX was on us, we just had to make sure, that it is simple, shiny and usable, and use Android basic design components and colours.
- Splash(Loading/Start) Screen
- Main Screen - with the restaurant’s list, paginated
- Detail Screen - each restaurant has its own page, that can be accessed from the list item, when you tap it
- Profile Screen
- Activity (max two)
- Fragments
- Recycler View
- Room and/or SQLite
- Constraint Layout
- Retrofit
- Glide
Here the loading is happening, the data is initialised, and when user gets from here to the Main Screen, the data is already loaded.
Here is the main list with the restaurants, paginated (loaded in smaller chuncks). The user is able to do text search or filtering by: • City list, • Price options. Each item has to have: Title, Address, Image, Price, Favourite icon (with this you can favourites it in/out).
On the detail page the user can view all the information returned by the API and edit it according to the possibilities. These possibilities are: Favourites, Add/Delete Images. Other things: open Google Maps with the coordinates of the restaurant, call the place. Regarding displaying the images, if you have added your own ones, then they are prioritised and those should be displayed instead of the ones from the API. In the case when you have not added images by your own, then display BE image or if not exists then a placeholder.
Here you can manage your own profile, what has to contain:
- Name
- Profile pic
- Address
- Phone number
- List of Favouritesed restaurants.
Unfortunetly, during the development, the Original API chrased for unknown reasons and became unusable. For this reason another api was created with the same functionality (you can find out more at the API's GitHub page). This API was hosted here.
The navigation was made using the JetPack's Navigation Component.
The data betwean fragments was exchanged using JetPack's Safe Args Library
The REST API's data was accessed using RETROFIT http client. The data in the response was cached using ROOM DATABASE.
The classes marked with @Entity represent a database schema. As you can se the data returned from the API is stored separatly from the user generated data. But when displayed to the user is joined (and agregated) to represent a complet (Restaurant) data.
During development the REST API was hosted at https://ratpark-api.imok.space/. The server, subdomain and HTTPS certificate was provided by IMOK.
During the cours I lerned few of the fundamental ideas of android development. The project is far from perfect there are some bugs here and there, but it works.







