A browser-based Computer-Based Test (CBT) practice portal for JEE and AEEE aspirants.
🌐 Live Website: terminal-joint.github.io/cbt-practice
📦 Source Code: Terminal-Joint/CBT-Practice
TerminalJoint CBT Practice is an open-source project designed to help students practise examinations in a Computer-Based Test environment.
Instead of practising questions only on paper, students can experience a digital examination interface with question navigation, answer selection, review marking, a countdown timer, and an exam summary.
The project currently includes question papers for JEE Main and AEEE, making it useful for students preparing for engineering entrance examinations.
- Multiple question papers: Select from the available JEE and AEEE practice papers.
- Section-based examinations: Organise questions into subjects such as Physics, Chemistry, and Mathematics.
- Question palette: Navigate between questions and identify their current status.
- Answer management: Select answers, clear responses, and save answers while moving to the next question.
- Mark for review: Flag questions to revisit before submitting the examination.
- Countdown timer: Practise within a time-limited examination environment.
- Configurable marking scheme: Define marks for correct and incorrect answers in each paper.
- Mathematical expressions: Render mathematical notation using MathJax.
- Visual questions: Support question content containing HTML and SVG diagrams.
- Examination summary: Review examination status before final submission.
- Fullscreen and tab-switch checks: Detect certain actions that interrupt the examination and display a security warning.
- Responsive interface: Designed to adapt to different screen sizes.
- Open the TerminalJoint CBT Practice portal.
- Select an available examination paper.
- Read the examination instructions and marking scheme.
- Confirm that you understand the rules.
- Click START TEST.
- Answer questions, navigate through the question palette, and mark questions for review when necessary.
- Review your responses and submit the examination.
Requirements: A modern web browser and Git.
Clone the repository:
git clone https://github.com/Terminal-Joint/CBT-Practice.git
cd CBT-PracticeStart a local HTTP server using Python:
python3 -m http.server 8000Open the following address in your browser:
http://localhost:8000
Use an HTTP server instead of opening index.html directly, because the application loads question papers using fetch().
CBT-Practice/
├── index.html # Main CBT interface and exam logic
├── score.html # Examination result page
├── paper-1.json # Sample practice paper
├── AEEE FE-1.json # AEEE paper
├── AEEE FE-2.json # AEEE paper
├── AEEE SE-1.json # AEEE paper
├── JEE FE-1.json # JEE paper
└── JEE FE-2.json # JEE paper
The available papers are configured in index.html. To add another paper, create its JSON file and register its filename in the paper list.
Question papers are stored as JSON files. Each paper defines its duration, marking scheme, subject sections, questions, options, correct answers, and solutions.
Example:
{
"duration": 150,
"marking": {
"correct": 3,
"wrong": -1
},
"sections": {
"Physics": [
{
"q": "What is the SI unit of acceleration?",
"options": [
"m",
"m/s",
"m/s^2",
"kg"
],
"correct": 2,
"solution": "Acceleration is measured in m/s^2."
}
],
"Chemistry": [],
"Maths": []
}
}| Field | Description |
|---|---|
duration |
Examination duration in minutes |
marking.correct |
Marks awarded for a correct answer |
marking.wrong |
Marks awarded for an incorrect answer |
sections |
Collection of subject-wise questions |
q |
Question text, including supported mathematical notation |
options |
Array of answer choices |
correct |
Zero-based index of the correct option |
solution |
Explanation or solution for the question |
Important: Option indexing starts at 0. For example, correct: 2 identifies the third option.
For mathematical notation, use MathJax-compatible LaTeX expressions such as $v = u + at$. HTML and SVG can also be embedded in question text for diagrams.
When creating a new paper, keep the JSON syntax valid and follow the same structure as the existing papers.
- HTML5 for the application structure.
- CSS3 for styling and responsive layout.
- JavaScript for examination logic, question navigation, timers, and interactions.
- JSON for storing examination papers.
- MathJax 3 for rendering mathematical expressions.
- Browser Fullscreen API for fullscreen examination mode.
- Browser Storage APIs for storing examination-related state and results.
The project uses a lightweight, browser-based architecture without requiring a dedicated backend server for its current static deployment.
The portal includes basic browser-based checks for fullscreen exit and tab switching.
These checks are intended to support a focused practice environment. They are not a substitute for a secure, server-enforced proctoring system and cannot guarantee that all forms of cheating or browser manipulation are prevented.
Contributions are welcome!
You can help improve TerminalJoint CBT Practice by:
- Adding or improving JEE and AEEE practice papers.
- Correcting question errors and improving explanations.
- Improving the user interface and mobile experience.
- Fixing bugs and improving accessibility.
- Enhancing examination navigation and result handling.
- Improving documentation.
- Fork the repository.
- Create a branch for your changes.
- Make your changes and test them locally.
- Submit a pull request describing your improvements.
Please ensure that question-paper JSON files are valid and that any contributed questions, diagrams, and solutions are appropriately licensed or shared with permission.
This project is intended for educational and practice purposes. It is not an official JEE Main or AEEE examination platform and is not affiliated with the organisations conducting those examinations.
Students should refer to the respective official examination authorities for the latest syllabus, examination pattern, eligibility requirements, and marking schemes.
Built as part of Terminal Joint, an independent software and technology initiative.
- Website: TerminalJoint CBT Practice
- GitHub: Terminal-Joint
If you find this project useful, consider ⭐ starring the repository and contributing to its development.
Practise digitally. Learn continuously. Build openly.