This is an app to test the Mercado Libre API. Especially the one related with cars.
![App Demo](https://github.com/david6p2/MeliCarViewer/raw/master/MeLiCarViewerDemo.gif?raw=true)
It uses MVC but treating the ViewControllers also as Views to just show UI Elements and having Controllers to manage/format all the data that the Views/ViewControllers are going to show.
Screenshot |
Description |
![SearchViewController](https://github.com/david6p2/MeliCarViewer/raw/master/SearchViewController.png?raw=true) |
- Custom TextFlied that use a Picker as input view to select the Porsche model to search for - It works in portrait and landscape mode - Use of custom Button - Custom AlertViewController shown if no model is selected. This custom AlertViewController is also used to show errors in all the App - This view was made using Storyboard |
Screenshot |
Description |
![CarResultsViewController](https://github.com/david6p2/MeliCarViewer/raw/master/CarResultsViewController.png?raw=true) |
- CollectionViewController with Diffable Datasource and custom Layout - SearchBar that filters the current results - It works in portrait and landscape mode - Formatted car price - Use of custom labels - Pagination - Use of custom DataLoadingViewController when loading new pages of car results - This view was made programmatically |
Screenshot |
Description |
![CarDetailViewController](https://github.com/david6p2/MeliCarViewer/raw/master/CarDetailViewController.png?raw=true) |
- Scroll view to fit all the views in different Screens - Created using Container View Controllers to solve having a masive View controller - It works in portrait and landscape mode - Use of stack views - Use of custom labels - All the car images are downloaded using a OperationQueue, but just the first is shown. In pending task we have a PagedViewController to show all the images - Use of date formatter and currency formatter - This view was made programmatically |
- Add more test to increase coverage
- Use a coordinator pattern to take the navigation outside of the ViewControllers
- Create a PagedViewController to show all the car images
- Use SwiftUI for the UI and Combine for use reactive programming