Code Monkey home page Code Monkey logo

nycschoolschallenge's Introduction

NYCSchoolsChallenge

An iOS app for searching, sorting, and viewing details about NYC high schools. Implemented for a take-home assignment.

NYCSchoolsChallenge

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 a Menu 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 custom AxisMarks
  • 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 raw String value to every CodingKey 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 of URLSession 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.