1.0 - Challenge Summary
Welcome to the Topcoder Macoun iOS Photo App Challenge!
The purpose of this challenge will be to create a simple iOS photo display application that follows the best practices of modular design to fully support 4 different device platforms within one application - the Apple Watch, iPad, iPhone and Apple TV.
1.1 - Competition Task Overview
The simple iOS photo display app you will build in this challenge is not intended to be an incredibly complex application - more an opportunity to display your understanding of modular design with a simple and compelling user interface that works within the constraints of the iOS Human Interface Guidelines (iOS HIG).
The code you write must follow the best practices of modular design. This is a key requirement of this challenge so please focus on this when writing your code.
The application should be written using Swift and targeted to iOS 9 (iOS 9.x, Swift 2.x, Xcode 7.x).
You should pay special attention to the separation of modules into components and elements in your code. The application should be aware of the platform it’s running on to the extent that modules are displayed appropriately for the format (this is for you to decide how it best works) but it should know as little as possible - preferably just what is needed. We advise that you pay particular attention to size classes and stack views in your implementation.
The functionality required in this application is as follows:
1) A user must be able to view a gallery of images
2) A user must be able to display a single image with a caption below it. Except on the watch, which should just display the image (to encourage the usage of stack view).
3) A user must be able to navigate between the images in an intuitive manner
1.2 - Background / Definitions:
One of the key requirements for this challenge is to follow the best practices of modular design. To help you understand what we’re looking for, here is some additional detail about modular design.
In modular design, a module is made up of smaller components, which are made up of even smaller pieces called elements: Elements -> Components -> Modules.
- Elements: Individual items such as buttons, text, switches, and other controls.
- Components: Made up of a number of elements. For example, a “Profile” component might include a profile image, a text field for name, and text field for location.
- Modules: Made up of a number of components. For example, a module might include the “profile” component above plus a component for social sharing (which could include elements like buttons to share on different sites).
Modules can be developed so they behave differently based on device. This allows the flexibility to customize a module to work well across a variety of devices.
1.3 - Technology Overview and Requirements:
- iOS 9.x
- Swift 2.x
- Xcode 7.x
- The application should follow the best practices of modular design to fully support 4 different device platforms within one application - the Apple Watch, iPad, iPhone and Apple TV.
- The user interface needs to work within the constraints of the iOS Human Interface Guidelines (iOS HIG).
1.4 - Testing
No unit tests are required for this challenge.
Final Submission Guidelines
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Below is an overview of the deliverables:
- Working iOS app (including source code) that covers all requirements
- A complete and detailed deployment document explaining how to deploy the application.
- Please include comments in your code or a note explaining the modular design you followed.