Skip to content
/ CSTV Public

iOS project created as a challenge for a interview process, but left public as a example of my work.

Notifications You must be signed in to change notification settings

Robuske/CSTV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSTV

This iOS project was created as a challenge for Fuze.cc interview process, but I decided to leave it public as an example of my work. I also intend to update it every so often to test or play around with some things, including Github features.

Important

Due to equipment's limitations this project was developed using Xcode 14.2, which means I was unable to use some modern features like Swift Macros.

Project Requirements

The candidate must build an app that will display a list of Counter-Strike matches happening across several worldwide tournaments.

  • There are 3 screens:
    • Splash Screen - This screen will show the app logo, and should be displayed every time the app is launched for a given amount of time before the main screen is shown.
    • Main Screen (Matches List) - This screen will display a list of matches, beginning from the current date. The list should be sorted so that currently playing matches will appear on top. Each match will show basic data like the League, Teams, date and time, as well as its status. The status can be: Ended, In Progress, and Scheduled.
    • Match Detail Screen - This screen will appear when the user selects a match from the main screen. Aside from the data shown in the matches list, this will also display the players from each team, with their respective names, nicknames, and pictures.
  • UI must follow the Figma spec. Attention to detail is a must.
  • The PandaScore API will be used for listing the matches as well as fetching match details.
  • Dates shown should follow the device local time.
  • The app must have pull-to-refresh in the main screen to reload the matches list.
  • Usually expected to be finished within one week.
  • Optionals:
    • Unit tests
    • MVVM architecture
    • Pagination support
    • Reactive programming (RxSwift / Combine)
    • Responsiveness

Figma

Content of the Figma file added here for easy of access.

Figma CSTV

Implementation

I implemented the project using SwiftUI with MVVM. It fulfils all requirements except for pagination support because I lacked the time to properly implement it.

Some other details:

  • The app is localized in English and Portuguese and should show the correct date format for any region.
  • As stated above, I had to use Xcode 14.2 due to my equipments limitations, it's possible that there will be some differences when running on a newer version.
  • I would usually use a tool like SwiftLint for keeping the code style consistent, but I decided to not use any dependencies in this project. For the same reason I ended up not using SwiftGen for generating code related to the resources, instead I wrote my own code to access them and included Unit Tests to avoid problems.
  • Unfortunately the image available on Figma for the splash screen was not a vector and pretty small, so it ends up looking a little weird.
  • I usually prefer to use merge commits when merging branches, but due to my mistake while using Xcode's Git tools, the branches were effectively rebased on top of main.
  • To run the app properly you'll need to set your PandaScore API token on PandaEndpoint.accessToken.
  • Since the Figma specs didn't include details on how to display errors, I left the error treatment very basic.
  • Sometimes the API does not have a valid URL for an image, so the grey placeholder is kept.

You can check the code as it was at the time of delivery with the tag v1.0.0.

Demo

Below is a video demo of the app running, the language was set to English and region to United States through the scheme.

CSTV.Demo.mp4

About

iOS project created as a challenge for a interview process, but left public as a example of my work.

Topics

Resources

Stars

Watchers

Forks

Languages