{"id":19140468,"url":"https://github.com/mchirino89/restoya","last_synced_at":"2026-06-04T16:31:10.235Z","repository":{"id":92092061,"uuid":"188603191","full_name":"mchirino89/RestoYa","owner":"mchirino89","description":"PedidosYa old interview test","archived":false,"fork":false,"pushed_at":"2019-08-25T10:30:22.000Z","size":334,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-03T14:50:46.279Z","etag":null,"topics":["interview","interview-testing-project","ios","pedidosya","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mchirino89.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-25T19:08:32.000Z","updated_at":"2021-04-20T01:45:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"6647deee-a0bc-4274-bcab-4dd5e0d62314","html_url":"https://github.com/mchirino89/RestoYa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchirino89%2FRestoYa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchirino89%2FRestoYa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchirino89%2FRestoYa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchirino89%2FRestoYa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mchirino89","download_url":"https://codeload.github.com/mchirino89/RestoYa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240222505,"owners_count":19767458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interview","interview-testing-project","ios","pedidosya","swift"],"created_at":"2024-11-09T07:17:41.310Z","updated_at":"2026-06-04T16:31:10.222Z","avatar_url":"https://github.com/mchirino89.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PedidosYa interview test\nPedidosYa code challenge for recruiting at iOS positions.\nYou can find the requirements of this exercise in the [pdf](https://github.com/mchirino89/RestoYa/blob/master/Enunciado.pdf) placed at the root of the repo.\n\n# Technologies\n\nSome frameworks were included in this project in order to speed up the process: \n\n* [Cocoapods 1.7.0](https://cocoapods.org/)\n* [Alamofire](https://github.com/Alamofire/Alamofire)\n* [ChiriUtils](https://github.com/mchirino89/ChiriUtils)\n* [XCode 10.2.1](https://download.developer.apple.com/Developer_Tools/Xcode_10.2.1/Xcode_10.2.1.xip)\n\nInstalation process is straight forward: first install _Cocoapods_ using the terminal by executing:\n```\n$ sudo gem install cocoapods\n```\n\nAfter the project has been cloned, proceed to open a terminal on the root folder and run \n```\n$ pod update\n$ pod install\n```\nAnd that's it. Everything should run smoothly.\n\n# Reasoning\n\n- MVVM and SOLID were at the heart of this development, always favoring composition over inherence (that's why you can see so many files for such a \"small\" project). It was _lego oriented_ design 😁\n- Use of StackViews wherever possible to laverage its flexibility and layout power.\n- Break down every delegate/data source across the project in order to avoid fat classes. `MainListViewController` is the _commander_ (sort of speak) of it all.\n\n# Considerations \n\nThere were tradeoffs in every major design decision behind the development. While it is true that SOLID principles are at the core of every choice made here, no peace of software is ever complete so there might be minor duplicated here and there for speeding sake. Some notes can be found across the project explaining the shortcomings of those implementations. Even though Unit test wasn't added on this project, all pods used here have great coverage (even the one of my own creation) so time was the key factor preventing me from polishing this even more.\n\n# Things to improve\nYou might find odd for me to include this section since it looks like I'm sabotaging myself. The intention here is to acknowledge the things that, most likely due to lack of time, remain pending. Just to mention a few:\n- Implement promises/GCD for serial API requests depending on each others.\n- Add unit testing\n- Abstract more behavior into protocols \n# Final notes\n\nEven though none of the _plus_ assignments were tackled at first glace, you'll find some extra bits of love and thoughtful consideration elsewhere (especially if comments starting with **//-** are searched for in the workspace) like the dynamic map feature that reacts to user interaction. I thought I could show more of me by doing something of my own creation instead of simply adding a [**pod**](https://hackernoon.com/implement-infinite-scroll-or-pagination-in-ios-uitableview-using-swift-5-67ea1c4d236) to handle infinite scrolling\n\nHope I made myself clear in all of my intents. Looking forward to any feedback! \n\nRegards.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchirino89%2Frestoya","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmchirino89%2Frestoya","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchirino89%2Frestoya/lists"}