Goal of this app is to display a bunch of information about the characters of the Rick and Morty universe. Don't know Rick and Morty? Well it's a shame, because it's the best TV show!
There is a public API you should use. The API offers access through GraphQL or traditionally via REST. It's up to you.
We have our own unique design for this task which you can find in the Figma here. There is separate design for iOS and Android, so choose the correct one. There is also support for Dark mode and Design system definition. You might need to login to your Figma account to be able to inspect UI and export assets.
For easier usage you can use native components for UINavigationBar
and UITabBar
instead of those in the design.
Display a list of characters. Since there are 600+ characters on the API you cannot fetch all of them at once - you should use some sort of paging. The API is ready for that.
Since there are so many characters and you may have an urge to find the specific one there is an option to search characters by name. Again, this filtered list should be paged.
Display detail of a single character. You can add or remove the character to the Favorites.
Favoriting characters is not part of the API, it has to be implemented in the app.
Display a list of favorite characters. You can open a detail of a character from the list.
Implement as much requirements as possible
- The app has to be written in Swift
- Define UI of the app however you like (we've heard that SwiftUI is some new thing now 😎)
- Use any asynchronous framework you fancy like Combine, ReactiveSwift or native async/await
- Follow MVVM architecture or Composable architecture
- The app should follow system Dark mode settings
- Application should be able to run on every device and every orientation (however we don't have separate design for tablets)
- Use 3rd party libraries, technologies and frameworks as you wish. But have a good reason to use any of them, though.
- If you want to add anything extra, just go for it! (Psst, we ❤️ testing)
- Send us as a link to your git repository with the source code.