Challenge Overview

Let's App is a mobile social network app to help users connect with friends and plan on site activities.

Challenge Overview

The purpose of this challenge is provide a complete architecture for the app and make sure it covers all requirements.

App Screens and Flow

At this point we have the design screens of the app and a high level overview process/flow diagrams that you will use to understand the app and build the architecture.

The app screens, and flow/navigation is demonstrated in an invisionapp (provided in challenge forums)

We also have a document that show the process/flow in the app (provided in challenge forums)

If you are confused about any flow please ask in forums and we will clarify it.

AWS Mobile Hub

We will use Amazon Mobile Hub as a serverless solution, it is a console that simplifies the usage of multiple AWS services by mobile apps.

We expect you to provide a detailed architecture with implementation notes of all the code that needed to support the app features.

The architecture should include everything needed in the AWS side in addition to sequence diagrams for the interaction between the iOS app/web views and AWS .

Here is a high level breakdown of the amazon web service we think we need to use (we are open to your suggestions) :

  1. AWS Lambda : Host all the nodejs code, it exposed via mobile hub SDK for the mobile app and  API Gateway for the web views, it communicates with DynamoDB, S3, Twilio.com, SES, and SNS .. etc.

  2. AWS API Gateway : Expose the Lambda functions to be used by web views.

  3. AWS SES : Used to send emails for signup verification or invites.

  4. Twilio.com : Used to send SMS for signup verification or for invites.

  5. AWS DynamoDB : This is the NoSQL data database.

  6. AWS SNS : This is used by the mobile hub for push notifications and also we can use it for real time comments.

  7. AWS S3 : Hosting photos, images, Webview html page. Also used to host any static user data.

  8. AWS Mobile Analytics : Tracking app events

  9. AWS Cognito : For User identity management, and used to sync data between user devices.

  10. AWS Farm Device : Used to perform Fuzz testing.

  11. AWS Mobile Hub : This will wrap the amazon services and expose it as SDK to the ios app.

Note the following :

  • - Suggest a solution to perform deploying (i.e. gulp), and testing the code locally and on AWS. We understand that aws mobile hub provide SDK but we need suggestion for how to verify the implementation during the coding challenge before we start integrating with the iOS app.

  • - Please document the manual setup required for AWS (required if it is complicated process).

App Features

In addition to provided documents here is a list of the app features, we hope it helps you to understand all the features needed, ask in forums if you see contradicts between what is listed here and the app screen :

- Login

  • - Supports login via email, username and phone number.

- Signup

  • - Supports custom signup, facebook signup, and google signup.

  • - We use social networks accounts to pull basic info, friends/contacts and to connect calendars (in case of google calendar).

  • - Reconcile new invites with the new user - using phone, email or fb.

- Reset Password

  • - User should be able to reset password via email or SMS code.

- SMS + Verification

  • - Used to send signup verification code.

  • - Used to send activity invites to friends.

  • - Used to reset password.

  • - We support US and India phone number only.

  • - We will use Twilio.com for US, and we need to identify a Twilio-like service for India SMS.

- Contacts

  • - App can pull phone contacts

  • - App can pull facebook friends who are an app users.

  • - App can pull google contacts.

  • - These contacts to be used to suggest friends in the app to follow.

  • - App will allow sending activity invites to non app contacts via SMS/Email/FB Messenger.

- Calendars

  • - App will allow connecting with apple calendar and google calendar

  • - App will add/remove created activities in user calendars.

- User Pic

  • - App will allow uploading user photos from FB or device/camera.

- Activities

  • - Users can manage activities and invite users to it.

  • - Activities can be Re-shared.

  • - Activities can be private(invitees only), shared(followers only) or public.

  • - Refer to “Let's Processes” diagram for more information about the Activity Sharing.

  • - Users can comment/like on activities.

  • - User can post pictures to activities and share these pictures on their feeds.

  • - User can view people who RSVPed but not people who are invited. Only activity creator/owner can view invitees.

- RSVP

  • - App users will get push notifications for invites and can view them in their feed.

  • - Non app users can receive invites via SMS/Email/FB Messenger. They can reply to invite via a web view page.

- Push Notifications - All push notifications will increment unread messages badge on App icon. The following push notifications need to be implemented.

  • - Push notifications outlined in notification preferences/settings screen. Only the following two kinds of notifications will be accompanied by a sound

    • - “When a comment is posted to my activity”

    • - “When a picture is posted to my activity”

  • - Additional mandatory push notification with sound: When someone invites user to join an activity on Let’s

  • - “my activity” refers to

    • - any activity to which the user has been invited explicitly

    • - any activity the user has created

    • - any activity to which the user has RSVPed

- Feeds - There are three feeds

  • - Public Feed - show public activities from all app users.

  • - User Feed - show activities created by the user or the users I am following. Also the feed will show pictures posted under activities to which you have RSVPed.

  • - Upcoming Activities Feed - show all upcoming user’s activities grouped by date.

- Mobile Analytics

  • - We will use AWS mobile analytics to track app usage.

- Web Views - we will have two web pages that can be hosted in S3

  • - Page for RSVP

  • - Page for resetting password

- Realtime comments/activity

  • - Comment updates in activity/pic details page should be real-time

  • - Activity creation and invitations should be real-time. Meaning when push notification is received the iOS app should pull information and add it to feed and notifications screen.

- Friends/Followings/Followers

  • - User can be (un)followed or (un)follow other app users.

  • - App provides option to review and approve followers.

  • - Users can be blocked from seeing your activity on Let’s.

  • - User can view all followers/followings and non-app friends in Contacts screen.

  • - Contacts can be grouped into a group. We will have one group level only.

- User Profile - the screen has the following options :

  • - Display basic user info.

  • - Access to update settings.

  • Activities feed of the activities/pic posted/shared by the user.

Documents

The invisionapp link and processes document will be provided in challenge forums.



Final Submission Guidelines

SUBMISSION DELIVERABLES

  • - Application Design Specification

  • - Entity Relationship Diagram

  • - Sequence Diagrams

  • - Interface Diagrams

  • - Challenge specification

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30052993