Swiftpack.co - Package - ChrisAllinson/Transformers

Transformers

Transformers Technical Assignment

Introduction

Hi.

Great exercise.

I tried to go as deep into application architecture as possible.

Lots of work still to do, including tonnes of refactoring especially the stuff built last, better DI, updating the Fight View's business logic's unit tests, refactor the Fight View, making the UX nicer, localization, handling tonnes of edge cases, more enums please ...

How to run

The app doesn't use cocoapods, carthage or Swift Package Manager so running the application is as simple as checking out the repo, opening the .xcodeproj file, and pressing play.

Archicture

The app consists of 3 main pages:

  • List

  • Profile

  • Fight

There are a few managers:

  • DBManager

  • APIManager

  • ImageManager

And some other files such as:

  • Constants

  • Storyboards

  • ImageCache

  • Transformer model

  • Router

  • The beginning of a color pallete

The app mainly uses Core Data as it's data persistence layer.

There are some computed properties leveraging UserDefaults to help speed up development as well.

The app is fairly well unit tested. Last minute key business logic updates (to display survivors) is "next up" for unit testing.

Assumptions

  • the user will Never mash buttons

  • the server will Always be online and is apparently required for every action

  • the initially requested Auth token will Never expire

  • I should not add extra functionality

  • I should not use the most basic way of doing things

  • I should add a little bit of sad path Ux ("Please enter a name")

  • I should brand the app

  • I should go back in time and implement the List page's cell's Ux like the website (the tableview with the horizontal yellow to red gradient), as well as the Profile page (to help with consistency and recognition)

  • the GET call is for syncing data with the server, and not for using the server as the database. Had an initial fully functioning "offline only" solution, but your POST endpoint didn't accept an id. Was going to make 2 ids but that can be done later.

  • I may hack stuff together after I've spent too much time on this assignment lol

  • the assignment will open up discussion

Known issues

  • The sliders on the Profile are less than ideal on larger screen sizes

Github

link
Stars: 0
Help us keep the lights on

Dependencies

Used By

Total: 0