ExitExam Academy is Ethiopia's digital learning platform for Health Science students preparing for National Exit, EHPLE Licensing, and COC exams. Features timed mock exams, clinical rationales, local payments (Chapa/Telebirr), and PDF notes.
# ExitExam Academy — Product Requirements Document (PRD)
> **ExitExam Academy** is Ethiopia's premier digital learning and examination preparation platform developed specifically for Health Science students preparing for National Exit Examinations, EHPLE Licensing, and COC Assessments.
---
## 📌 Project Metadata
* **Project Name:** ExitExam Academy
* **Prepared By:** Abdurezak Aliyi Hamid
* **Version:** 1.0
* **Target Audience:** Ethiopian Health Science Students (Midwifery, Nursing, Public Health, Pharmacy, Medical Lab, etc.)
---
## 🚀 Recommended Tech Stack
| Layer | Technology Choice |
| :--- | :--- |
| **Frontend Framework** | Next.js (React), Tailwind CSS, TypeScript |
| **Backend Framework** | NestJS (Node.js) or Django (Python) |
| **Database** | PostgreSQL |
| **Media / File Storage** | AWS S3 / Cloudinary |
| **Payment Gateway** | Chapa API, Telebirr API |
| **Authentication** | JWT, OAuth 2.0 |
| **DevOps & CI/CD** | Docker, Nginx, Ubuntu VPS, GitHub Actions |
---
## ⚙️ Core System Architecture
### 1. Mock Examination Engine
* **Real-Time Timer:** Timed exams with live JavaScript countdown and auto-submit.
* **Randomization:** Shuffled questions and answer choices per attempt.
* **Review Mode:** Instant score breakdowns with detailed clinical rationales and guideline citations.
### 2. Dual Payment System
* **Automated Gateway:** Instant confirmation via Chapa / Telebirr API integrations.
* **Manual Verification:** Receipt upload workflow (`PENDING` $\rightarrow$ Admin Review $\rightarrow$ Direct Course Unlock).
---
## 🗄️ Database Schema Blueprint (PostgreSQL)
```sql
-- Users Table
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
full_name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
phone VARCHAR(50),
university VARCHAR(255),
department VARCHAR(255),
password_hash VARCHAR(255) NOT NULL,
role VARCHAR(50) DEFAULT 'STUDENT',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Courses Table
CREATE TABLE course …