# TCHALAM ## Table of Contents 1. [Overview](#Overview) 1. [Product Spec](#Product-Spec) 1. [Wireframes](#Wireframes) 1. [Schema](#Schema) ## Overview ### Description TCHALAM is a preparation application for graduating students to better address university admission exams (Public, Private). ### App Evaluation - **Category:** Educatif - **Mobile:** This application is mainly developed for mobiles in order to properly address the exams for university admission - **Story:** TCHALAM is an online prefact application where all graduating students can prepare quizzes for the university admission exam. - **Market:** All graduating students who intend to integrate public and private universities can use the application - **Habit:** This application can be used as often or rarely as the user wishes depending on subject to be prepared. - **Scope:** The Tchalam application has an educational scope since it is a tool for graduating students to integrate universities. ## Product Spec ### 1. User Stories (Required and Optional) **Required Must-have Stories** - [x] User can Register a new Account - [x] User can Login - [x] The user can choose a subject to prepare. - [ ] The user can take quizzes for a subject - [ ] Profile **Optional Nice-to-have Stories** - [ ] Advanced Quiz - [ ] Score Sharing ### 2. Screen Archetypes * Login * User can login * Register * User can register a new account * Stream * user can see the list of exam subjects * Choose Subject * User can choose a exam subject * Quiz * User can answer quizzes for an exam subject * Profile * User can see their progress on an exam topic ### 3. Navigation **Tab Navigation** (Tab to Screen) * Stream * Profile * Quiz **Flow Navigation** (Screen to Screen) * Login * Stream * Register * Stream * Stream * Detail * Choose Subject * Stream * Quiz * Quiz * Profile * Detail ## Wireframes <img src="https://i.imgur.com/cIVfGcF.jpg" width=600> ### [BONUS] Digital Wireframes & Mockups ### [BONUS] Interactive Prototype ## Schema ### Models Model: User | Property | Type | Description | | --------- | -------- | ---------------------------------------------- | | ObjectId | String | Unique id for User account | | createdAt | Datetime | date when post is created (default field) | | updatedAt | Datetime | date when post is last updated (default field) | | lastname | String | name of the user | | firstname | String | first name of the user | | email | String | email of the user | | password | String | Password of the user | Model: Subject | Property | Type | Description | | -------- | -------- | ---------------------------------------------- | | ObjectId | String | Unique id for subject | | createdAt | Datetime | date when post is created (default field) | | updatedAt | Datetime | date when post is last updated (default field) | | Name | String | Name of the subject | | subject | String | Subject | Model: Quiz | Property | Type | Description | | --------- | -------- | ---------------------------------------------- | | ObjectId | String | Unique id for Quiz | | createdAt | Datetime | date when post is created (default field) | | updatedAt | Datetime | date when post is last updated (default field) | | question | String | question about a subject | | A | String | option answer 1 | | B | String | option answer 2 | | C | String | option answer 3 | | D | String | option answer 4 | | answer | Int | number of the Correct Answer | | subject | Pointer | Pointer to Subject | Model: Answer | Property | Type | Description | | -------- | -------- | ----------------------------------------------- | | ObjectId | String | Unique id for Answer | | createdAt | Datetime | date when post is created (default field) | | updatedAt | Datetime | date when post is last updated (default field) | | quiz | Pointer | Pointer to Quiz | | user | Pointer | Pointer to User | | score | Int | Score for a quiz | ### Networking - Login Screen - (Read/GET) Query logged in user object - Profile Screen - Read/GET) Query that displays the profile of the user on the application. - Sign in Screen - (Create/POST) Create a new user object - (Read/GET) Query that checks if entered email already exists in database. - Home Screen - (Read/GET) Query get list Subject - Quiz Screen - (Read/GET) Query get list quiz for a Subject - (Create/POST) Answer for a quiz ## Video Walkthrough Here's a walkthrough of implemented user stories: <img src='walkthrough.gif' title='Video Walkthrough' width='' alt='Video Walkthrough' />