You are on page 1of 22

1.

NAME

ReFizon

Refizon is a web application which allows students or potential candidates for an


exam have access to past questions. It also allows candidates to take mock exams
so that they can review their level of progress after studying past questions.

2. TEAM MEMBERS

Alale Tamara-kuro Simon (Fullstack Engineer and Team Lead) - responsible for
engineering the whole application. This include designing, choosing technology to
use, development and testing of codes. This will allow me to fully put all what I
have learnt in web engineering into practice.

Cohorts Members – Cohort members who are interested will play advisory role in
the course of the project. This include making technology recommendations,
constructive criticism and even testing the application at different stages of
development. This will allow me leverage on the community knowledge to meet the
objectives of the project.

Technical Mentors and staffs – These persons will guide, give expert advice and
validate the project as it progresses. I see these persons as part of the team and
their role will give quality, value and direction to the project.

3. TECHNOLOGIES

DEVELOPMENT TECHNOLOGIES.

Hardware: A laptop, Internet device.

Software: Microsoft word, Visual Studio Code, VIM, Git and GitHub, Postman,
Trello.

Frontend: HTML5, CSS3, JavaScript (ES6 Syntax) and JQuery.

Backend: Python3, Flask for API, MySQL and SQL for the Database management.
OPERATIONS

Bash Scripts – To automate configuration and deployment.

DEPLOYMENT

An Ubuntu based cloud hosting service.

OTHER OPTIONS

Other option that could be used in place of the aforementioned frontend technology
are ReactJS and Tailwind CSS. The lightweight of HTML, CSS and JavaScript is the
major reason for choosing them when compared to web frameworks like ReactJS
and Tailwind CSS which are heavy and complicated to use. Also, I want to build my
first application with these simple technologies because after now, I may not have
this kind of opportunity again since I may only be working more with frameworks.

For the Backend, alternative options include NodeJS, PostgreSQL for database
management. My choice of Flask and PostgreSQL is due to my familiarity with them
and the timing which does not offer the luxury of a new technology for the project.

4. CHALLENGE STATEMENT

 ReFizon aims to help examination candidate conquer difficult examinations by


compiling and delivering past questions for them to practice and test
themselves in a computer based test fashion while creating a platform for
gathering data for sales and marketing purposes.
 It is not a platform for taking tutorials or lesson.
 Its major user will be students and candidates who are preparing for Multiple
Choice Question (MCQ) examination/interviews.
 ReFizon is very relevant and not dependent on a specific locale. Most
opportunities like scholarships, job or even entrance examination into
prestigious institutions usually offers tough tests. Preparation for this test can
be challenging since past questions for the test are difficult to access
especially when students/candidates resides very far from the intended
institutions. Even when accessed most past question are in pdf or hard copy
format which does not offer the flexibility of the candidate trying out test in
an examination condition. Our application intends to allow this candidates to
easily have access and practice in an examination condition as many times as
they would want to. Our application will compile past questions, prepare a
timed test with questions randomly selected from the collection of question
and score them after they have taken the test. The only cost is registration
which delivers their contact information for relevant industry to market to
them. This project is not dependent on a specific locale because exams are
written by student all over the world and these students/candidate usually
need past questions and even more to conquer these tough examinations.

5. RISKS

Technical Risks
Risks Potential Impacts Safeguard
Security breach User could lose trust in Ensure that security is
application which could taken into the
have could affect the consideration in the
reliability of the overall design of
application. application.
User trust for application Securing user interaction
could be affect with the application
using SSL certificates.
Data Privacy Breach Dire legal and social Ensure user data
implication. security by ensuring that
the OWASP security
procedure is followed.
Poor User interface Reduce the marketability Employ the service of a
design of the application. UI/UX designer.
Running of A/B testing
to understand users
preferences/wants.
Performance Issues Reduce the marketability Ensure that performance
of the application. is taken into
consideration at every
stage of application
development.
Constant testing to
determine performance
overhead and apply
necessary measure to
reduce them.
Non-technical Risks
Risks Potential Impacts Safeguard
Cost of Failure Failure of this project to Ensure we achieve a
succeed could cost us Minimum working
more time, energy and project from which we
resources and even the can build on.
ALX program in general.
Copyright Breach Breaching of copyright Ensure proper
rules or the use of collaboration with
patented materials product owners to
without permission could prevent copyright
lead to severe legal breaches.
implication which could
affect the success of the Ensure to get the
project. permission of product
owners before use of
patented materials.
(Product here refers to
past questions)
6. INFRASTRUCTURE

Branching and Merging Strategy:

A new branch is created for every new feature to be added to the application. After
a successful pull request, the branch is merged back to the main branch.

Populating reFizon with data:

A simple console app will be used to populate data into reFizon when needed. Two
types of data that will have need for such include admin users and past questions
and answers. The remain data used by the apps will be user generated.

Tools, automation or process for testing: Postman will be used for testing refizon
API. Automation will be done majorly with Bash scripts.

Manual testing will be performed on the user interface to ensure ease of use and
perfect working state for all features and components of the application.

Code reviews will be used to ensure high quality codes. High quality code here
means one that is free of bugs, well documented and follow best practices. Linters
such as pycodestyle for python and ESLint will be used to ensure best coding
practices.

7. EXISTING SOLUTIONS

Jamb CBT practice app: A series of mobile applications students use to practice
from jamb examination is based on similar concept. These applications are specific
to jamb and WAEC only.

Practiceaptitudetests: The link for this website is


https://ww.practiceaptitudetests.com/. It is an online platform used to practice
aptitude test is the greatest competition.
8. ARCHITECTURE

Figure 1 below shows the architecture of the reFizon application. It shows how
each part of the application infrastructure interact with data flow generated by
the user of the application. Each part of the application is appropriately labeled.
Each arrow of the diagram is also numbered to show the order of data flow
through the application after interacting with the user.
Fig 1. reFizon web application Architecture (Created with diagram.net).

Important to note is that the server will be multiple but similarly configured
servers. The diagram only use one server because the diagram only intend to
illustrate interaction between the infrastructure components and all of them have
similar interaction depending on which is selected by the load balancer algorithm.
9. API and Methods

Endpoint: /api/v1/sign_up

POST: Creates a user account

Endpoint: /api/v1/login

POST: Authenticates a user into the application with the details provided.

Endpoint: /api/v1/dashboard

GET: Gets the user dashboard data

Endpoint: /api/v1/practice/:<exam_id>

POST: Create an exam to an exam table by application admin.

PUT: Update an exam by application admin.

DELETE: DELETE an exam by application admin.

Endpoint: /api/v1/practice/:<exam_id>/subject/

GET: Gets all the subject under an exam.

Endpoint: /api/v1/practice/:<exam_id>/subject/<:id>

POST: Create an subject of a particular exam by an application admin

PUT: Update a question of a particular subject of an exam by an application admin.

DELETE: Delete a question of a particular subject of an exam by an application


admin.

Endpoint:
/api/v1/exam/:<exam_id>/subject/:<subject_id>/questions/:<question_id>

POST: Create a question for a particular subject of an exam by an admin.

PUT: Update a question of a particular subject of an exam.

DELETE: Delete a question of a particular subject by an admin

Endpoint: /api/v1/practice/:<exam_id>/subject/:<subject_id>/:<year>/questions
GET: Gets all the years of subjects of a particular exam.

Endpoint: /api/v1/exam/

GET: Gets all the exams

Endpoint: /api/v1/exam/:<exam_id>/<:instruction>

GET: Get all the instructions for a particular exam

Endpoint: /api/v1/exam/:<exam_id>/subject/:<subject_id>/questions

GET: Get all questions of a particular subject of an exam.

Endpoint: /api/v1/exam/:<exam_id>/session/<session_id>/report

GET: Get all the scores of all sessions of a particular exam.

Endpoint:
/api/v1/exam/:<exam_id>/session/<session_id>/subject/:<subject_id>/report

GET: Get the recent scores of a particular subject of an exam.

POST: Create scores of a particular subject of an exam.

10. Data Model

Figure 2 below is a data model diagram illustrating how data will be stored an
manipulated by the application.
Figure 2: Data Modelling Diagram of reFizon (Created with sqldbm).
11. User Stories

As a user, I want to be able to create an account with reFizon, so that I can


have a tailored experience using the application.

As a user, I want to be able to login to reFizon, so that I can study past


questions and take mock examinations.

As a user, I want past questions of a particular subject of an examination


rendered to me, so that I can read them.

As a user, I want a timed exam rendered to me in a user friendly manner, so


that I can take an imitation of the real exam.

As a user, I want a exam taken by me to be scored and saved, so that I can


review my progress in the future.

As a user, I want to be able to select and deselect exam, so that my dashboard


will not be cluttered.

Additional

As an admin, I want to be able to create exam, subjects, questions and options


so that the app database can be populated.

As an admin, I want to update exam, subjects, questions and options so that the
database can always be up to date.

As an admin, I want to delete exam, subjects, questions and options so that the
database will not be cluttered with redundant data.
12. Mockups

Landing page
Login Page
Sign up page
Dashboard
Practice or exam page
Past question
Exam
Session report page
Full report page

You might also like