Nate's NBA Stats App Journal

Hi, everyone, this is Nate, happy to join you guys/gals ; )
I completed this challenge, here are some highlights of my work.

System Design

  • App Architecture: MVVM
  • UI+Layout: Programmatically created UI + Frame-based layout
  • Language: Swift

Services / Dependencies

  • APIService, also I realized NBA teams are somewhat constant, so I injected a tiny core data container specifically for teams date into my APIService.
  • DependenciesService. This is a fairly small app, so I ended up with just one APIService object inside this DependenciesService container. I guess I over-engineered this service.
  • ThemeController. This dependency is used to control dark/light theme.

UI Highlights

  • Themed Design, UIColor.systemRed as the theme color.
  • Rounded tab bar
  • GamesViewController (the first tab)
    • Moving NBA logo on the upper right
    • CardView
      • Gradient color view for opposing teams
    • TableView cell sliding in animation
  • StandingsViewController (the second tab)
    • Sorting button, which is a context menu button.

Some Screenshots

p.s. i want my very first badge :partying_face:

for demo purpose, I fav-ed bulls.

indeed, fav-ed team has a trailing star to indicate that this team has been fav-ed.

Turn off the dark mode

light mode it is.

preview is here, check this out.