NYCSchoolsChallenge
An iOS app for searching, sorting, and viewing details about NYC high schools. Implemented for a take-home assignment.
Technologies
- ? async/await
- ? REST APIs
- ?️ MVVM
- ✅ XCTest
- ? Swift Charts
- ? SwiftUI
- ?️ Swift
Highlights
- I used the
.searchableview modifier to enable a simple substring search of the school names, and aMenufor sorting options - I added a working row of
Linkviews with special URL schemes which allow users to quickly view the school’s website, call the school, compose an email to the school’s email address, or view the school’s location in the Maps app - To illustrate school SAT scores, I used Swift Charts to create a custom horizontal bar chart with
.annotationmodifiers and customAxisMarks - I used formatters such as
.number.notation(.compactName)to efficiently and elegantly display school statistics - I used
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCaseso that I could keep the names of my model struct properties Swifty, which is less work than assigning a rawStringvalue to everyCodingKeycase - MVVM was my choice of architecture to separate models, views, and business logic
- Using XCTest, I wrote unit tests targeting the most sensitive part of my code, the JSON decoding, which can easily break with any change to the model structs
- I chose the newer
async/awaitmethods ofURLSessionover the older closure-based methods in my networking service - I created a generic Statistic view and a custom
LabeledContentstyle to easily display school statistics in an aesthetic format
