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
.searchable
view modifier to enable a simple substring search of the school names, and aMenu
for sorting options - I added a working row of
Link
views 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
.annotation
modifiers and customAxisMarks
- I used formatters such as
.number.notation(.compactName)
to efficiently and elegantly display school statistics - I used
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
so that I could keep the names of my model struct properties Swifty, which is less work than assigning a rawString
value to everyCodingKey
case - 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/await
methods ofURLSession
over the older closure-based methods in my networking service - I created a generic Statistic view and a custom
LabeledContent
style to easily display school statistics in an aesthetic format