Challenge Overview

In this challenge, competitors will work to create a responsive UI prototype by React Native (https://facebook.github.io/react-native/).   Storyboards are available.

As part of this challenge you will create flexbox, styling and javascript code, using best practices. We are looking for a clear explanation of the code to allow us the ability to quickly update and integrate with future development. 

This challenge will extend the initial skeleton with new components.  You will build out these components in a way that makes them easy to integrate into a fully converted prototype in a subsequent challenge.


React Native:

For this application, we are going to target:

* React Native
* Tablet form-factor (both portrait and landscape orientation)

Layout:
This challenge will focus on the tablet layout provided, but please k
eep in mind your submission needs able to easily expand to support the mobile / phone layout in the future.  You must support both portrait and landscape orientation.
 
Styling:
For Application styling you must follow React Native Styling method:  
https://facebook.github.io/react-native/docs/style.html.  You can also use Style Components if you want (https://styled-components.com/

- The plan is for each component to have a styling file that is to access and edit instead using a single CSS for the entire application
- Application layout must build using React Native Flexbox

Code encapsulation and quality:

All created native ReactJS components must re-usable and well encapsulated.  The goal is a clear, modular approach to implementing the prototype.

- Use Linter, ES6, Jest and other best practice libraries to maintain your code quality. 
- Put clear comment/documentation for all ReactJS elements. 
- Images, Icons (SVG), etc... should be in a consistent folder
- style.css - use this name for all custom css.
- Please use proper ids and classes in your naming conventions.

Integration

NOTE:  There are a number of parallel challenges running to build these components.  A subsequent challenge will merge them all into a single, converted prototype.  Please make sure your submission is well thought out and encapsulated with future integration in mind.  Also, because of this, we need to keep consistent with the current skeleton.  Please don't make wide-sweeping changes to the current code structure.

ReactNative/Javascript
- It is fine to use MIT and BSD licensed code and libraries.  Please get approval for GPL / LGPL libraries in the forum.
- You are encouraged to use your own scripts, or scripts that are free, publicly available and do not have copyright statements or author recognition requirements anywhere in the code.

Styling
- Provide comments on the CSS code. We need CSS comments to give a clear explanation of the code usage. The goal is to help future developers understand the code.
- Please use clean indentation for all CSS so developers can follow the code.
- All CSS naming should not have any conflicts.
- As possible use CSS style when create all styling.

Assets/Images

Wherever it makes sense, you can use icon fonts instead of images.

Hardware Requirements
- iOS 10
- Android 7

You are free to only focus on either iOS or Android, but note that the reviewers may use a different environment, so it's probably in your best interest to test both, if possible.

Test data:

The data shown in the converted UI should be easily editable via JSON files so we can tweak as we present the solution to the client.  Make sure to c
reate React Services to pull all data from the JSON

Screen Requirements:

These screens are in scope for the challenge.  To see the individual JPGs, go here:

https://marvelapp.com/279je8e 

Click "Menu" / "View All Screens"

https://marvelapp.com/279je8e/screen/27462690
https://marvelapp.com/279je8e/screen/27462691
https://marvelapp.com/279je8e/screen/27462697
https://marvelapp.com/279je8e/screen/27462695
https://marvelapp.com/279je8e/screen/27462692
https://marvelapp.com/279je8e/screen/27462693
https://marvelapp.com/279je8e/screen/27462689
https://marvelapp.com/279je8e/screen/27462696
https://marvelapp.com/279je8e/screen/27462694

Reference: 07_01NoPeople.jpg
- Clicking on “Start Video” will initiate the call 07_05Calling.jpg, probably simulate this calling screen i.e. show this (07_05Calling.jpg) for few seconds and them move to the Video call 07_06ActiveVideoCall.jpg.

- Chat: Clicking on the the chat bubble shown in the right top will show the chat screen as shown in 07_07Chat.jpg (clicking on close icon in the chat window hides the chat window).
- Invite users icon in the right (before the chat icon): User will be able to invite users in the same way as mentioned above.
- Clicking on “Gallery View” shows 08_01GalleryView.jpg

- Clicking on chat in gallery view shows 08_02GalleryView+Chat.jpg

- Clicking on “REC” in gallery view shows 08_06Recording(GalleryView).jpg
- Clicking on Speaker View button shows 08_03SpeakerView.jpg

- Clicking on chat in speaker view shows 08_04SpeakerView+Chat.jpg
- Clicking on “REC” in speaker view shows 08_06Recording(SpeakerView).jpg

Sizing:


Please make sure your submission looks good at 1x, 2x, and 3x resolution scalings.  The graphics in the PSD should be able to be exported as vector graphics for scaling

Submission:

Your submission should include:

* The code that implements the requirements
* Deployment documentation, including docs on how to deploy to either iOS or Android (or both)
* A video showing the UI working properly

Additional points:

If you fix these bugs in the original skeleton, that could be considered additional functionality:

1.  Images aren't properly sized all the way up to @3x
2.  There's no validation shown for the login or signup forms.
 



Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30057889