Professional Documents
Culture Documents
NAME
ReFizon
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.
Software: Microsoft word, Visual Studio Code, VIM, Git and GitHub, Postman,
Trello.
Backend: Python3, Flask for API, MySQL and SQL for the Database management.
OPERATIONS
DEPLOYMENT
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
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
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.
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.
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
Endpoint: /api/v1/login
POST: Authenticates a user into the application with the details provided.
Endpoint: /api/v1/dashboard
Endpoint: /api/v1/practice/:<exam_id>
Endpoint: /api/v1/practice/:<exam_id>/subject/
Endpoint: /api/v1/practice/:<exam_id>/subject/<:id>
Endpoint:
/api/v1/exam/:<exam_id>/subject/:<subject_id>/questions/:<question_id>
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/
Endpoint: /api/v1/exam/:<exam_id>/<:instruction>
Endpoint: /api/v1/exam/:<exam_id>/subject/:<subject_id>/questions
Endpoint: /api/v1/exam/:<exam_id>/session/<session_id>/report
Endpoint:
/api/v1/exam/:<exam_id>/session/<session_id>/subject/:<subject_id>/report
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
Additional
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