A web-based quiz management platform with an AI-powered assistant, built as a thesis project. NovaLC lets students and educators create, share, and take quizzes β all in a clean, modern interface with dark mode support.
- User Authentication β Register and log in with secure bcrypt-hashed passwords
- Dashboard β View personal stats: quiz sets created, quizzes taken, average score, and best score
- Quiz Builder β Create multi-question quiz sets with multiple-choice answers, subject tags, and public/private visibility
- Quiz Discovery β Browse and take publicly shared quizzes from other users
- Nova Assistant β Floating AI chatbot powered by a local Python backend for in-app help
- Dark Mode β System-aware theme toggle across all pages
- Admin Role β Role-based access control (
is_adminflag) for privileged users
| Layer | Technology |
|---|---|
| Frontend | HTML, Tailwind CSS, Vanilla JS |
| Backend | PHP (REST API) |
| Database | MySQL via XAMPP / phpMyAdmin |
| AI Chatbot | Python Flask server (/ask endpoint) |
| Fonts | Plus Jakarta Sans, Inter (Google Fonts) |
NovaLC/
βββ index.html # Landing page
βββ api/
β βββ config.php # Database connection
β βββ auth/
β β βββ login.php # POST /api/auth/login
β β βββ register,php # POST /api/auth/register
β β βββ logout.php # Session logout
β β βββ session.php # Session check
β βββ dashboard/
β β βββ stats.php # GET user stats
β βββ quiz/
β βββ create.php # POST create quiz set
β βββ get_mine.php # GET user's quiz sets
βββ assets/
β βββ css/
β β βββ style.css # Custom styles
β β βββ tailwind.min.css # Tailwind (local fallback)
β βββ js/
β βββ auth.js # Login/register logic
β βββ chatbot.js # Nova Assistant chatbot UI
β βββ main.js # General utilities
β βββ theme.js # Dark mode toggle
βββ pages/
βββ login.html # Login & registration page
βββ dashboard.html # User dashboard
βββ quiz-create.html # Quiz creation form
- XAMPP (Apache + MySQL)
- PHP 7.4+
- A Python environment for the Nova Assistant chatbot (optional)
-
Clone the repository
git clone https://github.com/your-username/NovaLC.git
-
Move to your XAMPP
htdocsfolderC:/xampp/htdocs/NovaLC/ -
Create the database
- Open phpMyAdmin (
http://localhost/phpmyadmin) - Create a database named
nova_lc - Import the SQL schema (if provided) or create the following tables manually:
usersβid,username,email,password,is_adminquiz_setsβid,user_id,title,description,subject,is_publicquestionsβid,quiz_set_id,question_text,choices(JSON),correct_indexattemptsβid,user_id,quiz_set_id,score,total
- Open phpMyAdmin (
-
Configure the database in
api/config.php:define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); // Set your MySQL password if any define('DB_NAME', 'nova_lc');
-
Start Apache and MySQL in XAMPP Control Panel.
-
Open the app at
http://localhost/NovaLC/
The chatbot connects to a local Python Flask server. Start your backend and update the API URL in assets/js/chatbot.js:
const NOVA_API_URL = "http://127.0.0.1:5000/ask";
// Or replace with your ngrok URL for demos:
// const NOVA_API_URL = "https://your-id.ngrok-free.app/ask";No default credentials are seeded. Register a new account via the Sign Up page. To make a user an admin, manually set
is_admin = 1in theuserstable via phpMyAdmin.
This project is currently under active development as a thesis. Some features (e.g., Discover page, Progress tracking) are still being implemented.
- [Your Name] β Developer
- Built as a thesis project
For academic use only. All rights reserved.