Challenge Overview
Challenge Objectives
The purpose of this challenge is to build the UI for a native Android app:
We have already built some of the screens in the previous challenge, in this challenge we are going to build the rest of the screens.
Project Background
Workflow
Below is a high level workflow of the app, make sure you read the more detailed screen logic document which contains screenshots to better understand the details:
Users Roles
This Android app only contains one user role.
Screens / Features
The following screens are in scope of this challenge:
Important Notes
Please make sure your submission supports these form factors:
Form Factors
Please make sure your submission supports these form factors:
Development Assets
Technology Stack
The following technology stack will be used as part of this challenge:
Future Integration Points
The following integrations are not in scope -- but are being provided as an FYI of future work to come.
Integration PointDescriptionRequired
APIRest API to interact with the backend (to be developed)Y
Review
Your submission will be reviewed on these requirements:
The purpose of this challenge is to build the UI for a native Android app:
- Android app development (UI only) using Java
- The app is similar to Duolingo but focuses on literacy (English only for this challenge)
We have already built some of the screens in the previous challenge, in this challenge we are going to build the rest of the screens.
Project Background
- This is a mobile Android app that aims to help millions of low-literacy adults acquire basic reading skills needed to lead a fulfilling life.
- Users will learn anytime, anywhere with this mobile app.
- The app is similar to Duolingo in nature, but with a focus on literacy.
Workflow
Below is a high level workflow of the app, make sure you read the more detailed screen logic document which contains screenshots to better understand the details:
- Step 1: The user launches the mobile app and Signs Up / Login
- Step 2: For first time login, show video instruction, and let user complete placement test and show placement result
- Step 3: User sees the home screen (menu). User can click the current Unit to see Unit Intro, and choose to either test out or continue lesson.
- For test out: user may fail or pass. In case of failure the user will see a list of lessons, and the user can choose an available lesson to continue (this is the same as continue lesson) . In case of success user will be taken back to home screen with the next unit unlocked.
- For continue lesson: the user will see a list of lessons, and the user can choose an available lesson to continue.
- Step 4: User enters a lesson and sees a series of different questions, presented one at a time.For example: questions may be image+text, text only, image only, or audio based. Answers may be image, text or audio.
Users Roles
This Android app only contains one user role.
Screens / Features
The following screens are in scope of this challenge:
- Placement Test Screens: all screens that are part of the placement test flow are in scope. This flow should start after the Video Instruction screen and it will present a set of random questions for the user to answer. Please make sure you include a mixed types (including the new question types to be implemented below) of questions in your submission here.
- Menu / Home screen: please note the design is a bit wrong, we need you to replace the “Chat” icon with the “Share” icon and there’s no need to have the question icon.
- Unit Intro: new TEST OUT flow needs to be implemented, the flow is similar to placement test and please simulate both success and failure scenarios.
- Unit Intro: notice that there’s a speaker icon below the title, on pressing that the app should read out the sub-title using text to speech or local mp3.
- Unit Intro: besides the above a few new types of question screens must be implemented. Some general notes for the screens:
- For audio based questions / answers, you’ll need to use both Text To Speech API and pre-recorded audio, this applies to all screen types. The audio for some types of text (e.g. alphabet, word) will be generated using Text To Speech API, whereas for other types of text (e.g. phonics, word part), a specific pre-recorded audio file needs to be played.
- The UI layout for all these variables is generally the same, and UI should decide what to show based on data from JSON.
- Also note there can be one single answer or multiple answers for each question, which should be decided based on the data in JSON.
- Ignore the question icon and remove it from the UI, that’s no longer in scope. Make sure this is done for all similar screens.
- Please carefully check the screen logic document to see how this type of screen works on the go and indicates success / failure cases.
- Build Screen: this type of screen will have a few variations, user may be asked to build word from phonic sounds, build word from alphabet letters, build word from syllables, or build sentence from words.
- Read Screen: this type of screen helps user practice reading fluency, and is used together with other lesson screen types for reading comprehension questions. Note for this one we won’t follow the details in screen logic document, instead we’ll do this: to start reading, the user presses the microphone icon, which causes the app to start a timer. The app calculates the target speed of reading and slowly changes the background color of each row of the reading passage incrementally, to indicate the location (line) where the user should be reading at. When the user finishes reading the passage, she can click the “Continue” button, which stops the timer. The app then calculates the reading speed based on number of words divided by elapsed time. There is no speech recognition technology needed here as indicated in design. If the user satisfies required reading speed, she may pass. Otherwise she is asked to practice reading again.
- Progress screen: please follow the latest design to implement this screen
- Share screen: please follow the latest design to implement this screen. Note that screen 85in the design should simply be replaced by the standard screen to share on social media
- The lesson / unit / level completed screens should be better demonstrated
- Ad screen: on lesson / unit / level completion an Ad screen should show up
Important Notes
Please make sure your submission supports these form factors:
- The app needs to built using Android Studio and Java
- Please follow the Android best practices - reviewers must verify submissions carefully
- Submission should be tested on different versions of Android OS and devices (emulators), reviewers are expected to verify the app works on the mentioned Android OS versions
- Code must be properly documented, including all variables and methods
- The app must be implemented as a native app, native controls must be used wherever possible
- All code must be written in Java and the project must use latest Android Studio.
- Use gradle for dependency management
- Please ask in the forums if you wish to use any open-source third-party libs to ensure there are no license violation.
Form Factors
Please make sure your submission supports these form factors:
- In-scope
- Mobile portrait
- Out of scope
- Tablet portrait and landscape
- Mobile landscape
Development Assets
- Screen Logic Document
- Detailed Design
- Data Structure (FYI)
Technology Stack
The following technology stack will be used as part of this challenge:
- Java
- Android 4.4 and above
- Android Studio
- TextToSpeech
- JSON
Future Integration Points
The following integrations are not in scope -- but are being provided as an FYI of future work to come.
Integration PointDescriptionRequired
APIRest API to interact with the backend (to be developed)Y
Review
Your submission will be reviewed on these requirements:
- Challenge Spec Requirements
- Requirements Coverage
- Coding Standards
- Best Practices
- Code Quality
- Good Code Documentation
- No hardcoded data on UI, data should come from json files for now
- How close the user Interface matches the design
- Screen Flow and Transition Performance (must be smooth and fast)
Final Submission Guidelines
Final Deliverables- All original source code.
- Apk built from your code.
- A readme in markdown format explaining how to build, configure and verify your code.