Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Welcome to the Sky Zone - Android App - Account Creation and Login Challenge! The primary goal of this challenge is to implement a login and account creation screen through third-party authentication providers or Sky Zone directly.

Project Overview

Sky Zone is developing an improved mobile experience for new and existing customers.  Overall we need to ensure that Sky Zone continues to be on the cutting edge of its user experience and stays connected to their customers when they are not at a park.  At a high level, the mobile app will be used by Sky Zone customers to further enhance their visit and relationship with Sky Zone.

The two primary goals of the app are:

  1. Making it easy for customers to purchase jump time (tickets for a Sky Zone visit), and
  2. Creating a social environment around Sky Zone that keeps customers coming back repeatedly through gamification and social conventions.

We have already helped build Sky Zone’s iOS app and now we’d like to port this over to Android.

Challenge Overview

Our main goal for this challenge is to build out the account creation and login via third-party providers (e.g. Facebook, Twitter, Instagram) or through Sky Zone within the Android app.

Screen Shot 2015-08-18 at 8.24.31 AM.png    Screen Shot 2015-08-18 at 8.24.43 AM.png

We have added placeholder pages for both Create Your Account and Sign In.  Your goal is to build out the actionable items on the pages to make the pages complete:

  1. Create Account via Facebook, Twitter, or Instagram
  2. Create Account directly through Sky Zone
  3. Sign in via Facebook, Twitter, or Instagram
  4. Sign in directly through Sky Zone
  5. Unit tests

You may use the existing iOS application for reference or alternatively the prototype (the iOS application taking precedence). Note that the prototype application has a simpler create account screen, please use the above screenshots instead.

Create Your Account

  1. Add ability to create account via Facebook

  2. Add ability to create account via Twitter

  3. Add ability to create account via Instagram

  4. Add ability to create account directly through Sky Zone

    1. User selected either create account through email or one of the social networks.

    2. The user is then directed to the next page to enter information:

      1. All fields are required.

      2. If the user selected a social account, the user should be directed to authenticate with the social network using a standard login flow. Once authenticated the user should redirect back to the user info screen with fields populated based on the social account (if available). Password fields should be hidden.

      3. Birthday and gender fields should allow the user to pick the value of the field.

  5. All account creation modes transition to Creating your account while the account is creating in the background (for at least 3 seconds), and then ends on a My Profile page.  For this challenge you may use a placeholder page for My Profile (that page will be fully built in a follow-up challenge).

  6. Use “skyzone://” for any redirect URIs

  7. If an error occurs during account creation, display a message indicating that there was an error creating the user’s account, and display the Create Account page again.

Sign In

  1. Add ability to sign in via Facebook

  2. Add ability to sign in via Twitter

  3. Add ability to sign in via Instagram

  4. Add ability to sign in directly through Sky Zone

    1. Use email address and password fields when user taps “Sign In” to sign in via Sky Zone.

  5. All sign in modes transition to My Profile page.  For this challenge you may use a placeholder page for My Profile (that page will be fully built in a follow-up challenge).

  6. If “verified” is true in sign in response, store the “token” string in user defaults for use on subsequent requests.

  7. If “verified” is false, display a message indicating that there was an error signing in with the user’s credentials, and display the Sign In page again.

My Profile

  1. Create a placeholder My Profile page to navigate to after Create Your Account or Sign In pages.

  2. Load user’s name and image (if available).

  3. Add empty link placeholders for icon buttons (Buy Tickets, Leaderboard, etc).

  4. Don’t worry about adding link to menu or pop-up bottom menu.

Modify Pre-Login

  1. If the object holding the authentication token already exists, automatically navigate to the My Profile page as the user is already logged in.  Do not show the Intro screens.

Additional Links

  1. Add the following links as stubbed out actions, with an alert that this action is stubbed out (just like iOS app).

    1. Login Help?

    2. Terms of Use

    3. Privacy Policy

Rest Client

  1. All outbound REST requests should go through a centralized REST class(es).  See RestAPI.swift for example, and CreateAccountApi.swift for example extension.

  2. Create Customer (email)

    1. Method: POST

    2. URL: /customers

    3. Body

      1. username (handle)

      2. password

      3. email

      4. firstName

      5. lastName

      6. birthday

      7. gender

  3. Create Customer (social)

    1. Method: POST

    2. URL: /customers

    3. Body

      1. externalSystemType (String: facebook/twitter/instagram)

      2. externalToken

      3. externalSystemId

Unit Tests

  1. Please provide unit tests where appropriate.

Technology Overview

  • Android SDK

  • REST APIs

  • Supported Android versions: API 19 - 14.

Materials Provided and Additional Resources



Final Submission Guidelines

A complete list of deliverables can be viewed in the Topcoder Assembly Competition Tutorials.

Additionally,

  1. All code should be well-commented.
  2. Code must work for Android 4.4.x, 4.1.x-4.3.x), and 4.0.3-4.0.4) (API 19 - 14).
  3. Target devices are Samsung Galaxy S4 and S5.  Tablet support is out of scope.
  4. Only portrait orientation needs to be supported.
  5. Provide a video overview of your additions to the app.

Final Submission

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com.

The winner will be responsible for assisting with merging the code into our Git repo.

Environment Setup

  1. Request access to the GitLab Sky Zone Group in the project forums.
  2. Once added to the team, fork the skyapp-android repository and work off of the 30051200-account-creation branch.
  3. Add jasonfavors and harrywynn as members of your forked repository.
  4. View Social Media Keys for necessary social media access keys.
  5. Most design assets, including Proxima Nova font, can be found in the SkyZone-Resources repository.  A full collection of assets can be found in the existing iOS application under SkyZone-R1/Images.xcassets.
  6. Follow the Instagram Authentication API for sign-in/account creation for Instagram.
  7. If you have access to Xcode, reference the existing iOS application for latest functionality and navigation flow.
  8. The InVision prototype may be used in lieu of the above, however the iOS app takes precedence (any discrepancies may be changed during final fixes).
  9. Please use latest Android Studio (1.3) when using an IDE for development.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30051200