๐Ÿ“ฆ nexapytech / django-cbt-platform

A Django-based platform for creating, managing, and delivering computer-based tests with exam access, automated grading, feedback system and secure test delivery.

โ˜… 1 stars โ‘‚ 0 forks ๐Ÿ‘ 1 watching โš–๏ธ Other
๐Ÿ“ฅ Clone https://github.com/nexapytech/django-cbt-platform.git
HTTPS git clone https://github.com/nexapytech/django-cbt-platform.git
SSH git clone git@github.com:nexapytech/django-cbt-platform.git
CLI gh repo clone nexapytech/django-cbt-platform
Nexapy Technologies Nexapy Technologies Update requirements.txt 795f1fd 1 days ago ๐Ÿ“ History
๐Ÿ“‚ main View all commits โ†’
๐Ÿ“ .github
๐Ÿ“ AI_spacy_models
๐Ÿ“ assets
๐Ÿ“ core
๐Ÿ“ PyLearnCBT
๐Ÿ“ screenshots
๐Ÿ“ static
๐Ÿ“ templates
๐Ÿ“„ .dockerignore
๐Ÿ“„ .env.example
๐Ÿ“„ .gitattributes
๐Ÿ“„ .gitignore
๐Ÿ“„ docker-compose.yml
๐Ÿ“„ Dockerfile
๐Ÿ“„ LICENSE
๐Ÿ“„ Makefile
๐Ÿ“„ manage.py
๐Ÿ“„ README.md
๐Ÿ“„ requirements.txt
๐Ÿ“„ README.md
CI

NexapyCBT Python Django Computer-Based Testing Platform

๐ŸŒ Live Demo

Watch the live demo video: YouTube Demo

๐Ÿ›  Tech Stack

  • Language: Python 3
  • Backend Framework: Django
  • Database: MySQL, sqlite3
  • Containerization: Docker
  • NLP & AI: spaCy (text similarity)
  • OS Tested On: Linux (Ubuntu recommended)

๐Ÿ”ฅ Overview

NexapyCBT is a cutting-edge platform designed to revolutionize the way exams are taken. With the flexibility to create, manage, and participate in Computer-Based Tests (CBTs), NexapyCBT provides a seamless, efficient, and secure testing experience for both educators and learners.

๐Ÿš€ Features

  • Create unlimited exams
  • Unlimited questions per exam
  • Delete exams
  • Upload questions via Excel
  • Publish unlimited exams
  • Enable feedback for exams
  • Role-based access: admin, instructor, student
  • Automated grading and result tracking
  • Secure exam delivery
  • NLP-powered features using spaCy

๐Ÿง  NLP & spaCy Integration

NexapyCBT integrates spaCy to enhance evaluation of non-multiple-choice (theory/subjective) questions. How it works:
  • Theory answers are processed using text similarity techniques.
  • Student responses are compared with expected answers.
  • spaCyโ€™s pretrained language model enables semantic similarity matching.
This allows fair grading even when students use different wording. Instructors can still review or override results when necessary. This approach improves automated assessment while keeping human oversight where required.

Screenshots

Login Screen Login Create Exam Create Exam Dashboard Dashboard Results Page Results
Example Grading with spaCy: ``python import spacy nlp = spacy.load("en_core_web_md") correct_answer = nlp("The capital of France is Paris.") student_answer = nlp("Paris is the capital of France.") similarity_score = student_answer.similarity(correct_answer) print(f"Similarity Score: {similarity_score:.2f}") if similarity_score > 0.85: grade = "Correct" else: grade = "Needs review" print("Grade:", grade) ` ### โš™๏ธ Make Commands To make your repo **easy to run and test**, we provide a Makefile: ### Run the API locally `bash make run ### Run all tests make test ### make up make up ### Stop docker Container make down ### apply Django Migrations make migrate ### make admin user make createsuperuser ### Run code linting & formatting checks make lint ` --- ### Optional MySQL Uncomment the following variables in your .env file if you want to use MySQL: `env DB_NAME='cbt_db' DB_USER='cbt_user' DB_PASSWORD='cbt_pass' DB_HOST='localhost' DB_PORT=3306 ` ### Start containers ` bash docker-compose up ### Apply migrations (if not using auto-run) docker-compose run web python manage.py migrate ### Create a superuser docker-compose run web python manage.py createsuperuser ### Stop containers docker-compose down ` ### Static Files (Production) Static files are generated using: python manage.py collectstatic --- ### โš™๏ธ Local Setup (Linux / Windows) ### 1. Clone the repo ` bash git clone https://github.com/nexapytech/django-cbt-platform.git. cd django-cbt-platform ` ### Docker Setup (Recommended) `bash docker build -t nexapycbt . docker run -p 8000:8000 nexapycbt ``