How to build a WAEC CBT app
Building a WAEC CBT app means creating a system where students can practise WASSCE questions in a computer-based environment with features such as timers, question navigation, automatic scoring and answer explanations.
You do not need to start by manually typing thousands of WAEC questions. A practical approach is to build the CBT software separately and connect it to a structured examination-data source such as SdashAPI.
The basic structure is:
Student
↓
CBT App
↓
Your Backend
↓
Exam Question API
↓
WASSCE Questions
1. Decide what your CBT app should include
Start with the essential features:
- Subject selection
- Question loading
- Answer selection
- Previous and Next navigation
- Examination timer
- Question number palette
- Automatic submission
- Automatic scoring
- Results
- Answer explanations
Features such as leaderboards, subscriptions, AI tutoring and detailed analytics can come later.
The first goal should be a reliable examination experience.
2. Choose how you will build it
For a mobile WAEC CBT app, common choices include:
React Native
Flutter
Kotlin
Swift
For a web-based CBT platform:
React
Next.js
Vue
Angular
Your backend can use Node.js, PHP, Python, Java or another suitable technology.
The question-data source does not have to determine which framework you use.
3. Get structured WASSCE questions
This is one of the most important parts of the project.
A CBT application needs structured data such as:
{
"id": 52891,
"question": "Which of the following statements is correct?",
"option": {
"a": "Option A",
"b": "Option B",
"c": "Option C",
"d": "Option D"
},
"answer": "c",
"solution": "Explanation of the answer.",
"examtype": "WASSCE",
"examyear": "2024"
}
You could create and maintain this database yourself, license a dataset, or use an API.
SdashAPI provides structured examination data that can be used as the question-data layer of a CBT application.
For a deeper explanation of the data itself, see WAEC question bank for CBT app.
4. Create the subject selection screen
Your students should be able to choose what they want to practise.
For example:
Choose WASSCE Subject
Mathematics
English Language
Biology
Chemistry
Physics
Economics
Government
Commerce
You can also provide year selection:
Biology
2024
2023
2022
2021
All Years
Your backend then requests questions matching the student's selection.
5. Build the examination screen
Keep the actual CBT interface simple.
For example:
Question 8 of 40 24:18
Which of the following is...?
A. Option A
B. Option B
C. Option C
D. Option D
[ Previous ] [ Next ]
Students should be able to immediately understand what to do.
You can also provide a question palette:
1 2 3 4 5
6 7 8 9 10
...
This lets students jump between questions and return to unanswered ones.
6. Store answers as the student progresses
When a student chooses an option, save it against the question ID.
For example:
{
"question_id": 52891,
"selected_answer": "b"
}
Moving to another question should not remove the previous selection.
You can also periodically save the session so that a temporary app problem does not automatically destroy the student's progress.
7. Add a timer
For mock examinations, use a countdown timer.
When the time reaches zero:
00:00
↓
Submit automatically
One important detail: load the examination before starting the timer.
Don't make students lose examination time because their internet connection is still downloading questions.
8. Add automatic scoring
After submission, compare the student's selected answers with the correct answers.
Your result screen might show:
WASSCE Biology Mock
Questions: 40
Correct: 30
Incorrect: 10
Score: 75%
For mock-exam mode, avoid showing correct answers before submission.
For stronger control, your backend can handle grading instead of sending everything needed to determine the correct answers to the frontend before the examination ends.
9. Add explanations
A useful CBT app should help students learn from mistakes.
Instead of only showing:
Incorrect
Correct Answer: C
show:
Your Answer: A
Correct Answer: C
Explanation:
[Explanation of the concept]
Students can then understand why they got the question wrong.
This makes the application useful for both testing and revision.
10. Handle diagrams and passages
Real WASSCE questions may contain:
- Diagrams
- Graphs
- Tables
- Maps
- Mathematical expressions
- Comprehension passages
Your interface should support them from the beginning.
For an image question:
[ QUESTION DIAGRAM ]
Study the diagram above...
A. ...
B. ...
C. ...
D. ...
Consider allowing students to tap an image to enlarge it.
For passage questions, keep the passage easily accessible while the student moves between related questions.
11. Add Practice Mode and Exam Mode
The same question data can support different experiences.
Practice Mode
Students can answer questions without strict examination conditions.
You might allow:
Instant answer checking
Explanations after each question
No compulsory timer
Topic selection
Exam Mode
Make it closer to a real CBT:
Timer
No answers revealed
Question navigation
Automatic submission
Results after completion
This gives students a reason to use the app both for learning and examination preparation.
12. Consider different WASSCE countries
If your platform may expand beyond Nigeria, design for that from the beginning.
WASSCE is relevant across several West African countries, and country-specific data should be kept distinguishable where applicable.
Your architecture could support:
WASSCE
↓
Country
↓
Subject
↓
Year
For example:
WASSCE
Ghana
Mathematics
2024
This makes future regional expansion easier than building your database around Nigeria-only assumptions.
You can review available examination data through SdashAPI Coverage.
13. Make the app usable with unstable internet
Don't request another question every time a student presses Next.
Where your data arrangement permits it, prepare the required examination session first.
Request questions
↓
Questions loaded
↓
Start examination
↓
Navigate locally
↓
Submit result
This makes the CBT experience more reliable when network quality changes during an examination.
If full offline functionality is important to your product, plan your caching or licensed local-data architecture separately.
14. Test with 2,000 free API credits
SdashAPI provides 2,000 free credits for development and testing.
You can use them while building your app to test:
- WASSCE question requests
- Subject filtering
- Year filtering
- Question rendering
- Images
- Passages
- Answers
- Explanations
- Scoring
- Error handling
This lets you work with realistic examination data before committing to production usage.
You can start through SdashAPI and use the SdashAPI Documentation for integration guidance.
15. Move to production when the app is ready
Keep development and production separate.
Development API Key
↓
Build + Test
↓
Application Ready
↓
Production API Key
↓
Launch
When your application is ready for users, you can choose an appropriate API plan or Pay As You Go option from SdashAPI Pricing.
Also keep your production credentials on your backend rather than unnecessarily exposing them in the frontend.
Useful features to add later
Once the basic CBT works properly, you can add:
- Bookmarked questions
- Questions I Got Wrong
- Topic-based practice
- Weak-topic detection
- Performance history
- Daily practice
- Difficulty-based questions
- Student rankings
- School dashboards
- Subscription plans
Don't let these delay the first working version.
A reliable question screen, navigation, timer, scoring and good examination data are more important initially.
A simple development roadmap
Your project can follow this order:
Design CBT interface
↓
Connect WASSCE question data
↓
Add subject/year selection
↓
Add question navigation
↓
Add timer
↓
Add scoring
↓
Add explanations
↓
Test images and passages
↓
Test on different devices
↓
Create production API key
↓
Launch
You can start with SdashAPI, check available data through SdashAPI Coverage, and review production options through SdashAPI Pricing.
SdashAPI is an independent examination-data platform and is not an official WAEC service.
When building a WAEC CBT app, focus first on making the examination experience fast, clear and reliable. Let structured question data handle the content side while you spend your development time building the features that make your CBT platform useful to students.