Create, manage, and administer ICT exams with multiple choice & fill-in-the-gap questions. Built for educational purposes.
🔐
Admin Access
Sign in with your admin Firebase account.
⏳ Signing in…
⚙️ Firebase Auth not yet enabled
To activate secure admin login:
1. Go to Firebase Console
2. Build → Authentication → Get started
3. Enable Email/Password provider
4. Add Users → create your admin email + password
5. Come back and log in above.
Admin Dashboard
Delight Professional Digital Exams
No exam deployed yet.
📚 Exam Question Banks
Create a separate question bank for each exam subject (e.g. CCNA, Data Processing, MS Office). When you're ready, click Deploy to push that bank's questions live — students will see only the deployed exam.
➕ Create New Exam Bank
No exam banks yet. Click + New Exam Bank above to create your first one.
|Bank NameLIVE
📝 Exam Configuration
🚀 Deploy This Bank
Pushes this bank's questions + config live so students take this exam.
➕ Add Question
A
B
C
D
📂 Bulk Upload Questions (Plain Text / .txt or .docx)
Upload a .txt file containing multiple questions at once. Both MCQ and Fill-in-the-Gap types are supported. The manual form above still works alongside this — use whichever suits you.
📋 Recommended File Format (Plain Text / .txt or .docx)
MCQ
What does CPU stand for?
A. Central Processing UnitB. Computer Personal UnitC. Central Program UtilityD. Core Processing UnitAnswer: AMCQ
Which software is used for spreadsheets?
A. MS WordB. MS ExcelC. MS PowerPointD. MS AccessAnswer: BFILL
The shortcut key to copy in Windows is ___
Answer: Ctrl+C
⚠ Rules — follow exactly to avoid errors:
• Each question must start with MCQ or FILL on its own line
• The question text goes on the very next line after MCQ / FILL
• MCQ options must be formatted as A. option text (A, B, C required — D optional)
• The correct answer line must be Answer: A (for MCQ) or Answer: Ctrl+C (for FILL)
• Leave a blank line between each question
• Save the file as .txt (plain text) — open Notepad, type questions, Save As .txt
• Questions are added to existing ones — nothing is deleted
📁
Click to choose file or drag & drop here
Accepts .txt files only
Questions (0)
📭
No questions yet. Add your first question above.
⏰ Exam Availability Window
Set a time window during which students can access and start the exam. Once the window closes, no new exams can be started. The individual exam timer (e.g. 60 min) still applies separately per student.
No window set
▶ Open Window Immediately
📅 Schedule Future Opening
⚠️
Close Exam Window?
You pressed Close Window Now.
This will immediately close the exam window across all student devices. Students currently in the lobby will no longer be able to start the exam.
Are you sure you want to continue?
📌 Window History
No windows opened yet.
🗑️
Clear Window History?
This will permanently delete all window history records from both this device and Firebase. This action cannot be undone.
Connecting to live activity feed...
🔐 Registration Gate Codes (0)
Generate a one-time code per paid candidate and share it with them privately. It's their only way to open the registration form —
it's burned the moment their registration is fully saved, and expires on its own if left unused.
No registration codes generated yet.
Registered Students (0)
No students registered yet.
⚠ Caution: Clears all student registrations from this device only.
Results data is stored separately and will NOT be deleted — students can still look up scores with their code.
Only do this after an exam session is fully concluded.
📊 Exam Results — All Participants
Full results with grade judgment (Pass/Fail/Grade). This tab is only visible to the admin.
Students see their score and stats only — grade judgment is withheld from the student page.
No results yet.
🎓 Final Grade Calculator
Configure each assessment component and its maximum score below. Exam scores are pulled automatically from results. Enter Practical, Assignment and CA scores for each student — final percentage and grade are calculated instantly and saved to Firebase.
Assessment Components & Max Scores
No exam results yet — students must complete the exam first.
🔑 Student Code Lookup
Search for a registered student by name, phone number, email, or student ID to retrieve their access code. Use this when a student has lost their code and self-recovery has failed.
🚨 Student Activity Log
All page refresh incidents, code nullifications, and other flagged events are recorded here automatically.
No activity logged yet.
🎥 Webcam Proctoring — Settings
Violation snapshots (captured only at the moment an exam is auto-terminated) are uploaded to Google Drive via a small Apps Script Web App you deploy yourself — see the setup guide provided with this file. The shared token below is sent from every student's browser, so treat it as an abuse-deterrent, not a true secret.
🚩 Violation Log
Every hard block, strike, and auto-termination raised by webcam proctoring. Click a snapshot link to open the Drive image for dispute review.
No proctoring violations logged yet.
🔐 Admin Account (Firebase Authentication)
Your admin account is secured by Firebase Authentication — passwords are managed entirely by Google. To change your password or add another admin:
To change your admin password:
Go to console.firebase.google.com
→ Build → Authentication → Users → find your email → Reset password.
To add a second admin:
Same page → Add user → enter the new admin email and a temporary password.
🔥 Firebase Cloud Sync
Connect to Google Firebase so all student registrations, exam results, and activity logs sync to the cloud in real time — accessible from any device, anywhere.
How to get your config: Go to console.firebase.google.com → Create/Select project → Project Settings → Your apps → Add Web app → Copy the config values below.
Also ensure Realtime Database is enabled in your Firebase project (Build → Realtime Database → Create database).
🚨 IMPORTANT — Update Your Firebase Rules or Exam Window Will Not Work!
If you have not updated your Firebase Security Rules to the version below, the exam window open/schedule feature will silently fail — the window will appear to open then immediately close. You MUST paste the rules below into your Firebase Console → Realtime Database → Rules tab and click Publish.
⚠ Firebase Security Rules: Copy and paste these rules into your Firebase Console → Realtime Database → Rules tab. These rules let the signed-in admin write exam settings, while students remain read-only.
{
"rules": {
"delight_exam": {
"students": {
".read": true,
"$code": { ".write": "!data.exists() || auth != null" }
},
"results": {
".read": true,
"$code": { ".write": "!data.exists() || auth != null" }
},
"examWindow": { ".read": true, ".write": "auth != null" },
"questions": { ".read": true, ".write": "auth != null" },
"examConfig": { ".read": true, ".write": "auth != null" },
"windowHistory": { ".read": true, ".write": "auth != null" },
"activityLog": { ".read": false, ".write": true },
"refreshCounts": { ".read": true, ".write": true },
"nullifiedCodes": { ".read": true, ".write": true },
"presence": { ".read": "auth != null", ".write": true },
"examBanks": { ".read": "auth != null", ".write": "auth != null" },
"deployedBankId": { ".read": "auth != null", ".write": "auth != null" },
"deletedStudents":{ ".read": "auth != null", ".write": "auth != null" },
"deletedResults": { ".read": "auth != null", ".write": "auth != null" },
"gradeData": { ".read": "auth != null", ".write": "auth != null" }
}
}
} What these rules do:
• students / results — anyone can read (needed for lobby), but each code can only be written once (no overwriting another student's record)
• questions / examConfig / examWindow / windowHistory — read-only for all users; only writable by the signed-in admin
• activityLog — write-only for students (they log events), not readable by students
• refreshCounts / nullifiedCodes — read/write (needed for real-time anti-cheat sync across devices)
• presence — students write their live status; admin reads to show the Live Activity panel
• examBanks / deployedBankId — admin-only read/write for exam bank management
• deletedStudents / deletedResults / gradeData — admin-only (tombstones and grade calculator data)
ℹ️ Platform Info
Platform: Delight Professional Digital Exams Version: 3.0 (Presence Fix Edition) Admin Auth:Firebase Authentication — managed by Google Database:Firebase Realtime Database with Security Rules
📋
Student Portal
New student? Register below. Already registered? Enter your code further down.
🔐 Enter your access code to register
This code was issued to you personally and is your only way to open registration.
It is one-time use. Do not share it or let anyone else see it, anyone who has it can take your seat.
Connection dropped mid-registration? Just come back and enter the same code again — it stays valid until your registration is fully complete.
🇳🇬+234▾
Select your country flag, then type your number without leading zero
✅ Registration successful!
Your access code is:
---
Save this code — you'll need it to enter the exam and check your result later.
ALREADY REGISTERED?
🔑 Already Registered?
LIVE
📸 One-Time Face Registration
Before you can start any exam, we need one clear reference photo of your face. This is used only to confirm it's really you on exam day — it's stored securely and reused for every future exam, so you only do this once.
Make sure your face is well-lit, centered, and you're the only person in frame. Remove sunglasses / face coverings.
🛡 Pre-Exam Verification
A few quick automated checks before your exam unlocks. This takes under a minute.
1Face verification — confirming it's you
2Environment scan — pan your camera around your desk
3Ambient sound check — please stay quiet for a moment
🎯
Exam Lobby
Verify your access code below. When you're ready, press Start Exam — the timer will begin immediately.
Verified as:
—
—
⚠ The exam timer starts the moment you click this button.
ICT Exam
⏱00:00
Question 1 of N0 answered
Delight Exam Platform
0
Correct
0
Wrong
0
Skipped
0:00
Time Used
💾 Exam Submitted & Saved
Your result has been saved securely. Use your access code below on the Check My Result page to view your full score anytime.
🔍
Check My Result
Enter your access code below, or use Forgot Code? to recover it with your registered name and phone number.
🔑 Enter the name and phone number you registered with. We'll find your code and show your result.
🔒 To protect your privacy, confirm your registered name below.
Your recovered access code:
—
📋 Your full grade assessment is available from your instructor.
📋
Exam Rules & Notice
Please read carefully before proceeding
1⏱Exam Timer
The exam timer starts the moment you click "Start Exam Now"
and will count down continuously. It will not pause for any reason —
not for network issues, accidental clicks, or anything else. Manage your time wisely.
2🔄Page Refresh — Answers Preserved
If you refresh or reload this page during the exam, your answers and remaining time are automatically saved and restored.
You will resume exactly where you left off.
✅ Network drops or browser hiccups? Simply refresh — your progress is safe.
📋 Refresh incidents are silently logged for the administrator to review.
3⛶Fullscreen Requirement
The exam must be taken in fullscreen mode. The platform will automatically
enter fullscreen when you start. You must remain in fullscreen for the entire duration.
🟡 1st fullscreen exit: A warning is displayed and the incident is logged. You will be prompted to return to fullscreen.
🔴 2nd fullscreen exit: Your exam is automatically submitted immediately, regardless of how many questions you have answered.
4🔑Your Access Code is Personal
Your access code was issued exclusively to you at registration. Do not share it
with anyone. Your result is permanently tied to your code and your registered identity.
Any misuse will be flagged in the administrator's activity log.
5🔍Lost Your Code? — Result Recovery
Your result is saved automatically when you submit. If you lose your access code,
you can still retrieve your result on the "Check My Result"
page using your registered full name and phone number — no code required.
You may also ask your invigilator to look up your code from the admin panel.
⬇ Scroll down to read all rules before continuing
⚠️
Page Refresh Detected!
Refreshing during the exam will lose your current session — your answers and timer will be reset. This is your first refresh. You will be able to re-enter the exam once using the same code, but a second refresh will permanently invalidate your code for this exam session.
🚨 This incident has been logged and reported to the administrator.
🛡️
Developer Tools Detected
Browser Developer Tools is currently open on your device.
This exam platform requires DevTools to be fully closed
before you can continue.
⏱️ Your exam timer is still counting down. Refreshing this page will not help — this block will reappear until DevTools is genuinely closed. Every second here is time lost from your exam.
How to close DevTools:⌨️ Press F12 on your keyboard⌨️ Or press Ctrl + Shift + I(Windows) / ⌘ + ⌥ + I(Mac)🖱️ Or click the ✕ close button inside the DevTools panel
⚠️ DevTools is still open. Please close it completely, then try again.
🚨 This detection has been logged and reported to the administrator.
🚫
DevTools Opened During Exam!
Developer Tools was opened during your exam. Your exam has been automatically submitted.
🚨 This violation has been logged and reported to the administrator.
Submit Exam?
You have answered 0 of 0 questions. Are you sure you want to submit?
⚠️
Reset All Questions?
This will permanently delete all 0 questions. This cannot be undone.
Your admin password and exam settings will not be affected.
⛶
Fullscreen Mode Exited!
🚨 This incident has been logged and reported to the administrator.
🎥
Exam Terminated — Proctoring Violation
🚨 This incident has been logged and reported to the administrator.