VinSME is a app to allow user to sign up, sign in and browse the registered user list Heroku API.
Time spent: 30 hours spent in total
The following required functionality is completed:
- Create an app with 3 screens: Sign Up, Sign In and Home
- If user is logged in will show Home screen at first otherwise show Sign In screen.
- Use Swift to develop.
- Can use storyboard, xib or code to create UI.
- Can use any libraries.
- You have 2 days to finish this test.
The following optional features are implemented:
- Apply MVVM and Coordinator pattern
- Use RxSwift
The following additional features are implemented:
- User can pull to refresh at Home screen.
- Validate user input as typing.
- Create sign up screen with 6 fields, sign up button and sign in button to navigate to sign in screen
- Press sign up button -> show red text error below each field if it is empty or not matched with the requirements.
- If no validation error, call this API to register
- If fail will return response with status code 500 -> Show alert “There was a problem registering the user.”
- If success will return response with status code 200 -> Go to Home Screen
- Create a login screen with 2 fields, sign in button and sign up button to navigate to sign up screen
- Press sign in button -> show red text error below each field if it is empty.
- If no validation error, call this API to sign in
- If fail will return response with status code 404 or 401 -> Show alert for 404 “No user found.”, 401 “Password is not correct”
- If success will return response with status code 200 -> Go to Home Screen
- Create home screen with a tableView and a logout button on right navigation bar to log out to sign in screen
- Show list of registered users with this API on TableView with dynamic height for each cell
- Format CollectionViewCell {Name} {Gender Image} {Age} {Favourite Genres} (Show name of genre)
- User can sign in using OAuth login flow.
- User can load more page once they reach the bottom of the feed using infinite loading.
Here's a walkthrough of implemented user stories:
Sign Up:
Sign Up - Step 1 Sign Up - Step 1 - Validation Sign Up - Step 1 - Valid Input Sign Up - Step 2 - Age Validation Sign Up - Step 2 - Genre Validation Sign Up - Step 2 - Valid InputSign In:
Sign In Sign In - Validation Sign In - Valid InputHome:
Describe any challenges encountered while building the app.
Copyright [2019] [TRUNG]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.