-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Quiz Application Wiki! This comprehensive guide contains everything you need to know about installing, running, and using the Quiz Application.
| Section | Description |
|---|---|
| Home | Overview and quick start guide |
| Installation | Step-by-step installation instructions |
| Getting Started | How to run the application |
| Faculty Guide | Complete guide for faculty members |
| Student Guide | Complete guide for students |
| Architecture | System design and architecture |
| Project Structure | Project Structure |
| API Reference | REST API documentation |
| Configuration | Configuration options |
| Troubleshooting | Common issues and solutions |
| Contributing | How to contribute to the project |
| FAQ | Frequently asked questions |
- ๐ GitHub Repository
- ๐ Report Issues
- ๐ก Request Features
- ๐ฅ Contributors
The Quiz Application is a modern, hybrid quiz platform designed for seamless interaction between Faculty and Students. This system combines a robust JavaFX Desktop Application for faculty management with a flexible Web Client for student participation, all powered by a Spring Boot backend.
- ๐ค AI-Powered Question Generation from syllabus documents (Text/PDF)
- ๐ Real-Time Scoreboard for live monitoring of student progress
- ๐ป Multi-Platform Support (Desktop & Web interfaces)
- ๐ Secure Session Management with OTP verification
- ๐ฑ Responsive Design works on mobile, tablet, and desktop
- โก Fast & Lightweight with H2 embedded database
- Daku3011
- Moonshine
https://github.com/Daku3011/Quiz.git
| Feature | Description |
|---|---|
| ๐ Syllabus Upload | Upload text or PDF files to automatically generate quiz questions using AI |
| โ๏ธ Question Management | Review, edit, and customize generated questions before starting the session |
| ๐ฎ Session Management | Start a new quiz session with a unique Session ID and OTP |
| ๐ Live Scoreboard | Monitor student progress in real-time with a dynamic scoreboard |
| ๐ Secure Access | Built-in authentication and OTP verification for session security |
Students can join the quiz using either the Desktop App or the Web Interface:
| Platform | Description |
|---|---|
| ๐ฅ๏ธ Desktop Client | Native JavaFX application for a focused, distraction-free experience |
| ๐ Web Client | Responsive web interface accessible from any device (Mobile, Tablet, Laptop) |
| โ Seamless Flow | Register โ Join Session (ID + OTP) โ Take Quiz โ Submit & View Score |
Note: Both platforms provide the same functionality, allowing students to choose their preferred method of participation.
๐๏ธ Architecture
The application follows a three-tier architecture with clear separation of concerns:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PRESENTATION LAYER โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Faculty Station โ Student Devices โ
โ โโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Faculty Dashboard โ โ โ Desktop App (JavaFX) โ โ
โ โ (JavaFX) โ โ โ Web Client (Browser) โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ REST API โ HTTP/REST
โ โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ APPLICATION LAYER โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Spring Boot REST API โ โ
โ โ โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ โ โ
โ โ โControllers โ Services โ Security โ โ โ
โ โ โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA LAYER โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ H2 Database โ โ AI Service โ โ Static Resourcesโ โ
โ โ (Embedded) โ โ (Mock) โ โ (Web Files) โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Faculty uploads syllabus via JavaFX Desktop โ Backend generates questions
- Faculty starts session โ Backend creates Session ID & OTP
- Students register and join via Desktop/Web โ Backend validates credentials
- Students submit answers โ Backend calculates scores
- Faculty views scoreboard โ Backend provides real-time updates
๐ก Tip: All communication happens through REST APIs, making the system highly scalable and maintainable.
| Technology | Version | Purpose |
|---|---|---|
| โ Java | 17+ | Core programming language |
| ๐ Spring Boot | 3.x | Application framework |
| ๐ Spring Security | - | Authentication & authorization |
| ๐พ Spring Data JPA | - | Database access layer |
| ๐๏ธ H2 Database | - | In-memory/embedded database |
| ๐ฆ Maven | 3.6+ | Build & dependency management |
| ๐ PDFBox | - | PDF parsing for syllabus upload |
| Technology | Version | Purpose |
|---|---|---|
| ๐ผ๏ธ JavaFX | 19 | Desktop UI framework |
| ๐จ CSS3 | - | Modern UI styling |
| Technology | Version | Purpose |
|---|---|---|
| ๐ HTML5 | - | Structure |
| ๐จ CSS3 | - | Styling & responsive design |
| โก Vanilla JavaScript | ES6+ | SPA functionality (no frameworks) |
| Component | Description |
|---|---|
| ๐ค Mock AI Service | Built-in question generator |
| ๐ Extensible API | Ready for OpenAI/Gemini integration |
๐ Design Philosophy: The application uses battle-tested technologies with minimal dependencies for maximum stability and ease of deployment.
| Component | Minimum | Recommended |
|---|---|---|
| Processor | Dual-core 2.0 GHz | Quad-core 2.5 GHz+ |
| RAM | 4 GB | 8 GB+ |
| Storage | 500 MB free | 1 GB+ free |
| Network | Basic internet | Broadband connection |
| Software | Version | Notes |
|---|---|---|
| Java JDK | 17 or higher | Oracle JDK or OpenJDK |
| Apache Maven | 3.6+ | For building the project |
| Operating System | Windows 10+, macOS 10.14+, Linux (Ubuntu 20.04+) | 64-bit required |
| Web Browser | Latest version | Chrome, Firefox, Safari, or Edge |
| Requirement | Details |
|---|---|
| Port Availability | Port 8080 must be available |
| Local Network | For mobile device access, all devices must be on same network |
| Firewall | Allow Java through firewall for network access |
โ ๏ธ Important: Ensure Java 17+ is installed before proceeding with installation.
-
Download Java 17 JDK from:
-
Run the installer and follow the wizard
-
Set environment variables:
setx JAVA_HOME "C:\Program Files\Java\jdk-17" setx PATH "%PATH%;%JAVA_HOME%\bin"
-
Verify installation:
java -version
Using Homebrew:
# Install Homebrew if not installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Java 17
brew install openjdk@17
# Link Java
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdkVerify:
java -version# Update package list
sudo apt update
# Install Java 17
sudo apt install openjdk-17-jdk -y
# Verify installation
java -version- Download Maven from Apache Maven
- Extract to
C:\Program Files\Apache\maven - Set environment variables:
setx MAVEN_HOME "C:\Program Files\Apache\maven" setx PATH "%PATH%;%MAVEN_HOME%\bin"
- Verify:
mvn -version
brew install maven
mvn -versionsudo apt install maven -y
mvn -version# Clone the repository
git clone https://github.com/Daku3011/Quiz.git
# Navigate to project directory
cd Quiz๐ก Tip: If you don't have Git installed, download the ZIP file from GitHub and extract it.
cd backend
mvn clean installExpected output:
[INFO] BUILD SUCCESS
[INFO] Total time: XX.XXX s
cd ../client
mvn clean installExpected output:
[INFO] BUILD SUCCESS
[INFO] Total time: XX.XXX s
โ ๏ธ Troubleshooting: If build fails, see the Troubleshooting page.
Your Quiz Application is now ready to run. Proceed to the Getting Started guide to launch the application.
Follow these steps to run the Quiz Application:
The backend hosts the REST API and serves the Student Web Client.
# Navigate to backend directory
cd backend
# Start the server
mvn spring-boot:runExpected Output:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.x.x)
...
Started QuizApplication in 5.234 seconds (JVM running for 5.678)
Server running at http://localhost:8080
โ
Server is ready when you see: Started QuizApplication
โ ๏ธ Note: Keep this terminal window open. The server must run continuously.
Open a new terminal window:
# Navigate to client directory
cd client
# Launch JavaFX application
mvn javafx:runLogin Screen:
- Select "I am a Faculty" to access the Faculty Dashboard
๐ธ Click to see Faculty Dashboard preview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Quiz Application - Login โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โช I am a Faculty โ
โ โช I am a Student โ
โ โ
โ [ Login ] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Students can choose between Desktop App or Web Browser.
Open a new terminal window:
cd client
mvn javafx:run- Select "I am a Student" at login
For Local Access:
http://localhost:8080
For Network Access (Other Devices):
-
Find your IP address:
# Windows ipconfig # macOS/Linux ifconfig # or ip addr show
-
Open browser on any device (mobile, tablet, laptop) and navigate to:
http://<YOUR_IP_ADDRESS>:8080Example:
http://192.168.1.5:8080
๐ก Tip: Students on mobile devices should use the Web Client for the best experience!
- โ Start Backend Server
- โ Launch Faculty Dashboard
- ๐ Upload Syllabus
- ๐ฒ Generate Questions
- โ๏ธ Review & Edit Questions
- ๐ฎ Start Session (Get Session ID & OTP)
- ๐ข Share Session ID & OTP with Students
- ๐ View Live Scoreboard
- โ Backend Server must be running
- ๐ Open Web Client OR ๐ฅ๏ธ Launch Desktop App
- ๐ Register (Name + Enrollment Number)
- ๐ Join Session (Enter Session ID + OTP)
- โ๏ธ Take Quiz
- ๐ค Submit Answers
- ๐ View Score
Verify all components are running:
| Component | URL/Command | Status Check |
|---|---|---|
| Backend API | http://localhost:8080/api |
Should return API info |
| Web Client | http://localhost:8080 |
Should show student login |
| Faculty Dashboard | Terminal output | JavaFX window opens |
| Student Desktop | Terminal output | JavaFX window opens |
๐ Success! All components are running. You're ready to create your first quiz!
Next Steps:
- ๐ Read the Faculty Guide to learn how to create quizzes
- ๐ Read the Student Guide to learn how to take quizzes
- โ๏ธ Check Configuration for customization options
Complete guide for faculty members to create and manage quizzes.
cd client
mvn javafx:runSelect "I am a Faculty" at the login screen.
You have three options:
Option 1: Upload Text File
- Click
๐ Upload Filebutton - Select a
.txtfile containing syllabus content - File will be automatically processed
Option 2: Upload PDF File
- Click
๐ Upload Filebutton - Select a
.pdffile - System will extract text automatically using PDFBox
Option 3: Paste Content
- Click on the text area
- Paste your syllabus content directly
- Supports multi-line content
๐ก Best Practice: Ensure syllabus content is well-structured with clear topics and concepts for better question generation.
-
Select Question Count:
- Use the dropdown or input field
- Options: 5, 10, 15, 20, 25, 30 questions
- Default: 5 questions
-
Click "Generate Questions":
- AI processes the syllabus
- Questions are generated automatically
- Wait for confirmation message
Generation Time:
- 10 questions: ~5-10 seconds
- 30 questions: ~15-30 seconds
๐ค How AI Generates Questions
The AI service:
- Analyzes syllabus content
- Identifies key topics and concepts
- Creates multiple-choice questions
- Generates 4 options per question
- Marks the correct answer
- Returns formatted questions
After generation, you can:
โ๏ธ Edit Questions:
- Click on any question text to edit
- Modify question wording
- Update options
- Change correct answer
- Save changes
โ Add Custom Questions:
- Click
+ Add Questionbutton - Enter question text
- Add 4 options (A, B, C, D)
- Mark correct answer
- Save
โ Delete Questions:
- Click trash icon next to any question
- Confirm deletion
- Question is removed from quiz
๐ Question Preview:
Q1. What is Java?
A) A programming language โ
B) A coffee brand
C) An operating system
D) A web browser
[Edit] [Delete]
โ ๏ธ Important: Review all questions carefully before starting the session!
-
Click
๐ฎ Start Sessionbutton -
Session Created:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Session Created! โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฃ โ Session ID: ABC123 โ โ OTP: 456789 โ โ Valid Until: 10:30 PM โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -
Share with Students:
- Write on whiteboard
- Send via chat/email
- Project on screen
- Announce verbally
๐ Security: Session ID and OTP are required for students to join. Keep OTP confidential.
-
Click
๐ View Scoreboardbutton -
Scoreboard Display:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Live Quiz Scoreboard โ โโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโค โ Rank โ Student Name โ Enroll No โ Score โ โโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโค โ 1 โ John Doe โ 2021001 โ 9/10 โ โ โ 2 โ Jane Smith โ 2021002 โ 8/10 โ โ โ 3 โ Bob Johnson โ 2021003 โ 7/10 โณ โ โโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโ โ Submitted โณ In Progress โ Not Started
Features:
- โก Real-time Updates: Scoreboard refreshes automatically
- ๐ Rankings: Students ranked by score
- โ Status Indicators: See who submitted, in progress, or not started
- ๐ Statistics: Average score, completion rate
- ๐ Auto-refresh: Every 5 seconds
View all active sessions:
- Session ID
- Number of participants
- Start time
- Questions count
- Status (Active/Completed)
- Click
โน๏ธ End Sessionbutton - Confirm action
- Students can no longer submit
- Final scores are frozen
- Click
๐ฅ Export Results - Choose format:
- CSV (for Excel)
- PDF (for printing)
- JSON (for processing)
- Save file to desired location
| Tip | Description |
|---|---|
| ๐ฏ Clear Questions | Ensure questions are unambiguous and grammatically correct |
| โฑ๏ธ Time Management | Set appropriate quiz duration based on question count |
| ๐ Test First | Test the quiz yourself before sharing with students |
| ๐ข Clear Instructions | Explain quiz format and rules before starting |
| ๐ Monitor Live | Keep scoreboard open to track student progress |
| ๐พ Save Sessions | Export results immediately after quiz completion |
Can I reuse questions from previous quizzes?
Currently, questions are not saved between sessions. Plan to implement a question bank feature in future updates.
How many students can join simultaneously?
The system supports up to 100 concurrent students per session with current configuration.
Can I pause a quiz?
Currently, quizzes cannot be paused once started. Students must complete in one sitting.
What if a student loses connection?
Students can rejoin using the same Session ID and OTP. Their progress is saved.
Next: Read the Student Guide | Check API Reference | View Troubleshooting
Complete guide for students to join and take quizzes.
Students can participate using either:
| Platform | Best For | Pros |
|---|---|---|
| ๐ฅ๏ธ Desktop App | Focused environment | No distractions, native performance |
| ๐ Web Client | Mobile/Tablet | No installation, works anywhere |
cd client
mvn javafx:runSelect "I am a Student" at the login screen.
Fill in the registration form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Student Registration โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Name: [John Doe ] โ
โ โ
โ Enrollment No: [2021001 ] โ
โ โ
โ [ Register ] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Fields:
- Name: Your full name
- Enrollment Number: Your student ID
Click Register button.
Enter session details provided by faculty:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Join Quiz Session โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Session ID: [ABC123 ] โ
โ โ
โ OTP: [456789 ] โ
โ โ
โ [ Join Quiz ] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Important: Get Session ID and OTP from your faculty before joining.
Quiz Interface:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Question 1 of 10 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ What is the capital of France? โ
โ โ
โ โช A) London โ
โ โช B) Berlin โ
โ ๐ C) Paris โ
โ โช D) Madrid โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [โ Previous] [Next โถ] [Submit] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Navigation:
- Click on an option to select your answer
- Use
Nextbutton to move to next question - Use
Previousbutton to go back - Selected answers are highlighted
Features:
- ๐ Progress: Current question number
- โ Selection: Visual feedback for selected answers
- ๐ Review: Can change answers before submitting
- Review all your answers
- Click
Submit Quizbutton - Confirm submission
Confirmation Dialog:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Submit Quiz? โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Are you sure you want to โ
โ submit? You cannot change โ
โ answers after submission. โ
โ โ
โ [Cancel] [Submit] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๏ธ Warning: Once submitted, answers cannot be changed!
Results Screen:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Quiz Results โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ Congratulations, John Doe! โ
โ โ
โ Your Score: 8 / 10 โ
โ Percentage: 80% โ
โ Grade: B โ
โ โ
โ โ
Correct Answers: 8 โ
โ โ Wrong Answers: 2 โ
โ โ
โ Time Taken: 12:34 โ
โ โ
โ [View Answers] โ
โ [Exit] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Navigate to one of these URLs:
If on the same computer as server:
http://localhost:8080
If on a different device (mobile/tablet):
http://<FACULTY_IP_ADDRESS>:8080
Example: http://192.168.1.5:8080
๐ก Tip: Ask your faculty for the correct IP address.
Web Registration Form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฑ Quiz App - Register โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ค Name โ
โ [John Doe ] โ
โ โ
โ ๐ Enrollment Number โ
โ [2021001 ] โ
โ โ
โ [ Register ] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
Fill in your details and click Register.
Join Session Form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฑ Quiz App - Join โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ Session ID โ
โ [ABC123 ] โ
โ โ
โ ๐ OTP โ
โ [456789 ] โ
โ โ
โ [ Join Quiz ] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
Enter Session ID and OTP, then click Join Quiz.
Mobile-Optimized Interface:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โฐ โฑ๏ธ 14:32 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Question 1/10 โ
โ โ
โ What is Java? โ
โ โ
โ [ ] A programming language โ
โ [x] A coffee brand โ
โ [ ] An operating system โ
โ [ ] A database โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Next Question โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
Features:
- ๐ฑ Responsive: Adapts to screen size
- ๐ Touch-friendly: Large tap targets
- ๐จ Modern UI: Clean, intuitive design
- ๐พ Auto-save: Progress saved automatically
Tap Submit Quiz โ Confirm โ View instant results!
Mobile Results:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Results โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Score: 8/10 (80%) โ
โ โ
โ โ
Correct: 8 โ
โ โ Wrong: 2 โ
โ โ
โ Rank: #3 โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ View Detailed Report โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| Tip | Description |
|---|---|
| ๐ Battery | Ensure device is charged before starting |
| ๐ถ Connection | Stable WiFi connection required |
| ๐ Notifications | Enable Do Not Disturb mode |
| ๐ Browser | Use Chrome or Safari for best experience |
| ๐ Orientation | Portrait mode recommended |
| ๐พ Background Apps | Close unnecessary apps |
Can I join from my phone?
Yes! Use the web client for the best mobile experience. Just open your browser and enter the provided URL.
What if I lose internet connection during the quiz?
Your progress is saved. Rejoin using the same Session ID and OTP to continue where you left off.
Can I change my answers?
Yes, you can change answers before submitting. Use the Previous/Next buttons to navigate.
How much time do I have?
Time limit (if any) is set by your faculty and displayed at the top of the quiz.
Can I see the correct answers after submission?
This depends on settings configured by your faculty. Some quizzes show answers, others don't.
What browsers are supported?
Chrome, Firefox, Safari, and Edge (latest versions). Chrome recommended for mobile devices.
- โ Read questions carefully before answering
- โฐ Manage your time wisely
- ๐ค If unsure, mark your best guess and move on
- ๐ Review all answers before submitting
- ๐ฑ Keep device charged and connected
- ๐ฏ Stay focused and calm
Quiz/
โ
โโโ ๐ backend/ # Spring Boot Backend
โ โโโ ๐ src/
โ โ โโโ ๐ main/
โ โ โ โโโ ๐ java/
โ โ โ โ โโโ ๐ com/quiz/
โ โ โ โ โโโ ๐ controller/ # REST API Controllers
โ โ โ โ โ โโโ AuthController.java
โ โ โ โ โ โโโ SessionController.java
โ โ โ โ โ โโโ QuestionController.java
โ โ โ โ โ โโโ SubmissionController.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ model/ # Entity Models (JPA)
โ โ โ โ โ โโโ User.java
โ โ โ โ โ โโโ Session.java
โ โ โ โ โ โโโ Question.java
โ โ โ โ โ โโโ Answer.java
โ โ โ โ โ โโโ Submission.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ repository/ # JPA Repositories
โ โ โ โ โ โโโ UserRepository.java
โ โ โ โ โ โโโ SessionRepository.java
โ โ โ โ โ โโโ QuestionRepository.java
โ โ โ โ โ โโโ SubmissionRepository.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ service/ # Business Logic
โ โ โ โ โ โโโ AuthService.java
โ โ โ โ โ โโโ SessionService.java
โ โ โ โ โ โโโ QuestionGenerationService.java
โ โ โ โ โ โโโ AIService.java
โ โ โ โ โ โโโ ScoringService.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ security/ # Security Configuration
โ โ โ โ โ โโโ SecurityConfig.java
โ โ โ โ โ โโโ JwtTokenProvider.java
โ โ โ โ โ โโโ JwtAuthenticationFilter.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ dto/ # Data Transfer Objects
โ โ โ โ โ โโโ LoginRequest.java
โ โ โ โ โ โโโ SessionRequest.java
โ โ โ โ โ โโโ SubmissionRequest.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ util/ # Utility Classes
โ โ โ โ โ โโโ PDFParser.java
โ โ โ โ โ โโโ OTPGenerator.java
โ โ โ โ โ
โ โ โ โ โโโ QuizApplication.java # Main Application
โ โ โ โ
โ โ โ โโโ ๐ resources/
โ โ โ โโโ ๐ static/ # Web Client Files
โ โ โ โ โโโ index.html # Student Web App
โ โ โ โ โโโ ๐ css/
โ โ โ โ โ โโโ styles.css
โ โ โ โ โ โโโ mobile.css
โ โ โ โ โโโ ๐ js/
โ โ โ โ โ โโโ app.js
โ โ โ โ โ โโโ quiz.js
โ โ โ โ โ โโโ api.js
โ โ โ โ โโโ ๐ assets/
โ โ โ โ โโโ images/
โ โ โ โ
โ โ โ โโโ application.properties # Configuration
โ โ โ โโโ application.yml
โ โ โ โโโ data.sql # Sample Data (optional)
โ โ โ
โ โ โโโ ๐ test/ # Unit Tests
โ โ โโโ ๐ java/
โ โ โโโ ๐ com/quiz/
โ โ โโโ ControllerTests.java
โ โ โโโ ServiceTests.java
โ โ โโโ RepositoryTests.java
โ โ
โ โโโ pom.xml # Maven Dependencies
โ โโโ README.md
โ
โโโ ๐ client/ # JavaFX Desktop Client
โ โโโ ๐ src/
โ โ โโโ ๐ main/
โ โ โ โโโ ๐ java/
โ โ โ โ โโโ ๐ com/quiz/client/
โ โ โ โ โโโ Main.java # Entry Point
โ โ โ โ โโโ LoginScreen.java # Login UI
โ โ โ โ โโโ FacultyDashboard.java # Faculty UI
โ โ โ โ โโโ StudentApp.java # Student UI
โ โ โ โ โโโ ScoreboardView.java # Live Scoreboard
โ โ โ โ โ
โ โ โ โ โโโ ๐ controller/ # UI Controllers
โ โ โ โ โ โโโ LoginController.java
โ โ โ โ โ โโโ FacultyController.java
โ โ โ โ โ โโโ StudentController.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ model/ # Client Models
โ โ โ โ โ โโโ Question.java
โ โ โ โ โ โโโ Session.java
โ โ โ โ โ โโโ Score.java
โ โ โ โ โ
โ โ โ โ โโโ ๐ util/ # Utilities
โ โ โ โ โโโ APIClient.java # REST API Client
โ โ โ โ โโโ SessionManager.java
โ โ โ โ โโโ FileHandler.java
โ โ โ โ
โ โ โ โโโ ๐ resources/
โ โ โ โโโ ๐ css/ # JavaFX Styles
โ โ โ โ โโโ faculty-dashboard.css
โ โ โ โ โโโ student-app.css
โ โ โ โ โโโ common.css
โ โ โ โ
โ โ โ โโโ ๐ fxml/ # JavaFX Layouts
โ โ โ โ โโโ login.fxml
โ โ โ โ โโโ faculty-dashboard.fxml
โ โ โ โ โโโ student-app.fxml
โ โ โ โ โโโ scoreboard.fxml
โ โ โ โ
โ โ โ โโโ ๐ images/ # Icons & Assets
โ โ โ โโโ logo.png
โ โ โ โโโ icons/
โ โ โ
โ โ โโโ ๐ test/ # Client Tests
โ โ โโโ ๐ java/
โ โ
โ โโโ pom.xml # Maven Dependencies
โ โโโ README.md
โ
โโโ ๐ docs/ # Documentation
โ โโโ API.md # API Documentation
โ โโโ SETUP.md # Setup Guide
โ โโโ CONTRIBUTING.md # Contribution Guide
โ
โโโ ๐ scripts/ # Utility Scripts
โ โโโ start-backend.sh # Start Backend
โ โโโ start-faculty.sh # Start Faculty App
โ โโโ start-student.sh # Start Student App
โ
โโโ .gitignore # Git Ignore File
โโโ LICENSE # License Information
โโโ README.md # Project README
| Component | Purpose | Technology |
|---|---|---|
| Controllers | Handle HTTP requests and responses | Spring MVC |
| Services | Business logic and AI integration | Spring Service |
| Repositories | Database operations | Spring Data JPA |
| Models | Entity definitions | JPA Entities |
| Security | Authentication & authorization | Spring Security + JWT |
| Static Resources | Student web client | HTML/CSS/JS |
| Component | Purpose | Technology |
|---|---|---|
| Main | Application entry point | JavaFX |
| Views | User interface screens | JavaFX + FXML |
| Controllers | UI event handling | JavaFX Controllers |
| API Client | Backend communication | HTTP Client |
| Styles | Visual appearance | CSS3 |
| File | Location | Purpose |
|---|---|---|
application.properties |
backend/src/main/resources/ |
Backend configuration |
pom.xml |
backend/ & client/
|
Maven dependencies |
*.css |
client/src/main/resources/css/ |
JavaFX styling |
*.fxml |
client/src/main/resources/fxml/ |
JavaFX layouts |
The H2 database includes these tables:
users
โโโ id (PK)
โโโ username
โโโ password (hashed)
โโโ role (FACULTY/STUDENT)
โโโ created_at
sessions
โโโ id (PK)
โโโ session_id (unique)
โโโ otp
โโโ faculty_id (FK)
โโโ status
โโโ created_at
โโโ expires_at
questions
โโโ id (PK)
โโโ session_id (FK)
โโโ question_text
โโโ option_a
โโโ option_b
โโโ option_c
โโโ option_d
โโโ correct_answer
โโโ created_at
submissions
โโโ id (PK)
โโโ session_id (FK)
โโโ student_name
โโโ enrollment_number
โโโ score
โโโ answers (JSON)
โโโ submitted_atRelated Pages: [Architecture][def] | API Reference | Configuration
Complete REST API documentation for the Quiz Application.
http://localhost:8080/api
Most endpoints require JWT authentication. Include the token in the Authorization header:
Authorization: Bearer <jwt_token>POST /api/auth/faculty/login
Authenticate faculty member and receive JWT token.
Request:
{
"username": "faculty@example.com",
"password": "securePassword123"
}Response:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "faculty@example.com",
"role": "FACULTY"
},
"expiresIn": 3600
}Status Codes:
-
200 OK- Authentication successful -
401 Unauthorized- Invalid credentials -
400 Bad Request- Missing fields
POST /api/auth/student/register
Register a new student (no authentication required).
Request:
{
"name": "John Doe",
"enrollmentNumber": "2021001"
}Response:
{
"success": true,
"studentId": "abc123def456",
"message": "Registration successful"
}Status Codes:
-
201 Created- Registration successful -
409 Conflict- Enrollment number already exists -
400 Bad Request- Invalid input
POST /api/questions/generate
Generate quiz questions from syllabus content.
Authentication: Required (Faculty only)
Request:
{
"syllabusContent": "Java is a high-level programming language...",
"questionCount": 10,
"difficulty": "MEDIUM"
}Or with PDF (Base64):
{
"syllabusFile": "data:application/pdf;base64,JVBERi0xLjQK...",
"questionCount": 15,
"difficulty": "HARD"
}Response:
{
"success": true,
"questions": [
{
"id": 1,
"questionText": "What is Java?",
"optionA": "A programming language",
"optionB": "A coffee brand",
"optionC": "An operating system",
"optionD": "A database",
"correctAnswer": "A",
"difficulty": "EASY"
}
],
"totalGenerated": 10
}Status Codes:
-
200 OK- Questions generated successfully -
401 Unauthorized- Not authenticated -
403 Forbidden- Not a faculty member -
400 Bad Request- Invalid syllabus or count
POST /api/session/start
Start a new quiz session with generated questions.
Authentication: Required (Faculty only)
Request:
{
"questions": [
{
"questionText": "What is Java?",
"optionA": "A programming language",
"optionB": "A coffee brand",
"optionC": "An operating system",
"optionD": "A database",
"correctAnswer": "A"
}
],
"duration": 30,
"allowReview": true,
"shuffleQuestions": false
}Response:
{
"success": true,
"sessionId": "ABC123",
"otp": "456789",
"questionCount": 10,
"duration": 30,
"createdAt": "2025-11-23T10:00:00Z",
"expiresAt": "2025-11-23T11:00:00Z"
}Status Codes:
-
201 Created- Session created successfully -
401 Unauthorized- Not authenticated -
403 Forbidden- Not a faculty member -
400 Bad Request- Invalid questions
POST /api/session/join
Student joins an active quiz session.
Request:
{
"sessionId": "ABC123",
"otp": "456789",
"studentName": "John Doe",
"enrollmentNumber": "2021001"
}Response:
{
"success": true,
"sessionToken": "student_session_token_here",
"questions": [
{
"id": 1,
"questionText": "What is Java?",
"optionA": "A programming language",
"optionB": "A coffee brand",
"optionC": "An operating system",
"optionD": "A database"
}
],
"duration": 30,
"startTime": "2025-11-23T10:05:00Z"
}Note:
correctAnsweris not included in the response.
Status Codes:
-
200 OK- Successfully joined -
404 Not Found- Invalid Session ID -
401 Unauthorized- Invalid OTP -
410 Gone- Session expired
GET /api/session/{sessionId}
Get details of a specific session.
Authentication: Required
Response:
{
"sessionId": "ABC123",
"status": "ACTIVE",
"facultyName": "Prof. Smith",
"questionCount": 10,
"participantCount": 25,
"startTime": "2025-11-23T10:00:00Z",
"expiresAt": "2025-11-23T11:00:00Z"
}Status Codes:
-
200 OK- Session found -
404 Not Found- Session doesn't exist -
401 Unauthorized- Not authenticated
POST /api/submission/submit
Student submits quiz answers.
Authentication: Required (Session token)
Request:
{
"sessionId": "ABC123",
"answers": {
"1": "A",
"2": "B",
"3": "C",
"4": "A",
"5": "D"
},
"timeSpent": 1234
}Response:
{
"success": true,
"submissionId": "sub_12345",
"score": 8,
"totalQuestions": 10,
"percentage": 80,
"correctAnswers": 8,
"wrongAnswers": 2,
"rank": 3,
"submittedAt": "2025-11-23T10:25:30Z",
"feedback": "Great job!"
}Status Codes:
-
200 OK- Submission successful -
400 Bad Request- Invalid answers format -
409 Conflict- Already submitted -
410 Gone- Session expired
GET /api/submission/{submissionId}
Retrieve details of a specific submission.
Authentication: Required
Response:
{
"submissionId": "sub_12345",
"studentName": "John Doe",
"enrollmentNumber": "2021001",
"score": 8,
"totalQuestions": 10,
"percentage": 80,
"timeSpent": 1234,
"submittedAt": "2025-11-23T10:25:30Z",
"answers": [
{
"questionId": 1,
"questionText": "What is Java?",
"selectedAnswer": "A",
"correctAnswer": "A",
"isCorrect": true
}
]
}GET /api/scoreboard/{sessionId}
Get real-time scoreboard for a session.
Authentication: Required (Faculty only)
Response:
{
"sessionId": "ABC123",
"participants": [
{
"rank": 1,
"studentName": "John Doe",
"enrollmentNumber": "2021001",
"score": 9,
"percentage": 90,
"status": "SUBMITTED",
"submittedAt": "2025-11-23T10:20:15Z"
},
{
"rank": 2,
"studentName": "Jane Smith",
"enrollmentNumber": "2021002",
"score": 8,
"percentage": 80,
"status": "SUBMITTED",
"submittedAt": "2025-11-23T10:22:30Z"
},
{
"rank": null,
"studentName": "Bob Johnson",
"enrollmentNumber": "2021003",
"score": null,
"percentage": null,
"status": "IN_PROGRESS",
"submittedAt": null
}
],
"statistics": {
"totalParticipants": 30,
"submitted": 25,
"inProgress": 5,
"averageScore": 7.5,
"highestScore": 10,
"lowestScore": 4
},
"lastUpdated": "2025-11-23T10:25:00Z"
}Status Codes:
-
200 OK- Scoreboard retrieved -
404 Not Found- Session not found -
403 Forbidden- Not authorized
GET /api/scoreboard/{sessionId}/export?format=csv
Export session results in various formats.
Authentication: Required (Faculty only)
Query Parameters:
-
format- Export format:csv,json, orpdf
Response (CSV):
Rank,Name,Enrollment,Score,Percentage,Submitted At
1,John Doe,2021001,9,90%,2025-11-23 10:20:15
2,Jane Smith,2021002,8,80%,2025-11-23 10:22:30Status Codes:
-
200 OK- Export successful -
404 Not Found- Session not found -
403 Forbidden- Not authorized
GET /api/health
Check if the API is running.
Response:
{
"status": "UP",
"timestamp": "2025-11-23T10:00:00Z",
"version": "1.0.0"
}GET /api/questions/{questionId}/stats
Get statistics for a specific question.
Authentication: Required (Faculty only)
Response:
{
"questionId": 1,
"questionText": "What is Java?",
"totalAttempts": 30,
"correctAnswers": 25,
"wrongAnswers": 5,
"accuracy": 83.33,
"optionDistribution": {
"A": 25,
"B": 3,
"C": 1,
"D": 1
}
}All error responses follow this format:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": "Additional error details (optional)"
},
"timestamp": "2025-11-23T10:00:00Z"
}Common Error Codes:
| Code | HTTP Status | Description |
|---|---|---|
AUTH_REQUIRED |
401 | Authentication required |
INVALID_TOKEN |
401 | JWT token invalid or expired |
FORBIDDEN |
403 | Insufficient permissions |
NOT_FOUND |
404 | Resource not found |
ALREADY_EXISTS |
409 | Resource already exists |
VALIDATION_ERROR |
400 | Input validation failed |
SESSION_EXPIRED |
410 | Quiz session expired |
SERVER_ERROR |
500 | Internal server error |
| Endpoint Type | Rate Limit |
|---|---|
| Authentication | 5 requests/minute |
| Question Generation | 10 requests/hour |
| Submissions | 1 request/minute per student |
| Scoreboard | 100 requests/minute |
| Other endpoints | 60 requests/minute |
# Faculty Login
curl -X POST http://localhost:8080/api/auth/faculty/login \
-H "Content-Type: application/json" \
-d '{"username":"faculty@example.com","password":"password"}'
# Generate Questions (with token)
curl -X POST http://localhost:8080/api/questions/generate \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"syllabusContent":"Java programming basics...","questionCount":10}'// Student joins session
const response = await fetch('http://localhost:8080/api/session/join', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
sessionId: 'ABC123',
otp: '456789',
studentName: 'John Doe',
enrollmentNumber: '2021001'
})
});
const data = await response.json();
console.log(data);Related Pages: [Architecture][def] | Project Structure |Troubleshooting
Common issues and their solutions.
โ Java version mismatch error
Error:
Unsupported class file major version XX
Solution:
- Check Java version:
java -version
- Ensure Java 17 or higher is installed
- Update
JAVA_HOMEenvironment variable - Restart terminal/IDE
โ Maven not found
Error:
'mvn' is not recognized as an internal or external command
Solution:
- Verify Maven installation:
mvn -version
- Add Maven to PATH:
- Windows:
%MAVEN_HOME%\bin - Linux/Mac:
/usr/local/maven/bin
- Windows:
- Restart terminal
โ Build fails with dependency errors
Error:
Could not resolve dependencies for project
Solution:
# Clear Maven cache
mvn clean
# Update dependencies
mvn clean install -U
# Force update
mvn clean install -U -DskipTestsโ Port 8080 already in use
Error:
Port 8080 was already in use
Solution 1: Kill process using port 8080
Windows:
netstat -ano | findstr :8080
taskkill /PID <PID> /FmacOS/Linux:
lsof -i :8080
kill -9 <PID>Solution 2: Change port in application.properties
server.port=8081โ Database connection error
Error:
Unable to open JDBC Connection
Solution:
- Check H2 database configuration
- Verify database file permissions
- Delete
data/folder and restart:rm -rf data/ mvn spring-boot:run
โ Application fails to start
Error:
APPLICATION FAILED TO START
Solution:
- Check logs in console
- Verify all dependencies are installed
- Ensure Java 17+ is being used
- Clean and rebuild:
mvn clean install mvn spring-boot:run
โ JavaFX runtime components missing
Error:
Error: JavaFX runtime components are missing
Solution:
- Use Maven command instead of direct java:
mvn javafx:run
- Don't use
mvn exec:java - Verify
pom.xmlhas JavaFX dependencies
โ Cannot connect to backend
Error:
Connection refused: connect
Solution:
- Ensure backend server is running
- Check backend URL in client config
- Verify port number (default: 8080)
- Check firewall settings
โ UI not displaying correctly
Symptoms: Blank window, missing elements
Solution:
- Check CSS files are loaded
- Verify FXML files exist
- Clear JavaFX cache:
rm -rf ~/.m2/repository/org/openjfx mvn clean install
โ Cannot access from mobile device
Problem: http://localhost:8080 not working on phone
Solution:
- Ensure both devices are on same WiFi network
- Find computer's IP address:
# Windows ipconfig # Mac/Linux ifconfig
- Use IP address instead:
http://192.168.1.5:8080 - Check firewall allows port 8080
โ 404 Not Found on web client
Error: Page not found
Solution:
- Verify backend is running
- Check static files in
backend/src/main/resources/static/ - Clear browser cache (Ctrl+Shift+Del)
- Try different browser
โ JavaScript errors in console
Symptoms: Features not working, console errors
Solution:
- Open browser DevTools (F12)
- Check Console tab for errors
- Verify API calls are successful
- Check Network tab for failed requests
- Clear browser cache
โ Invalid Session ID or OTP
Error: Cannot join session
Solution:
- Verify Session ID is correct (case-sensitive)
- Check OTP hasn't expired
- Ensure faculty started session
- Try creating new session
โ Questions not generating
Problem: AI fails to generate questions
Solution:
- Check syllabus content is clear and structured
- Verify PDF is not corrupted
- Try plain text instead of PDF
- Check backend logs for errors:
tail -f logs/quiz-app.log
- Ensure AI service is configured
โ Scoreboard not updating
Problem: Scores not showing in real-time
Solution:
- Refresh scoreboard manually
- Check auto-refresh is enabled
- Verify students submitted answers
- Check backend logs
- Restart faculty dashboard
โ Invalid credentials
Error: Login failed
Solution:
- Check username and password
- Verify faculty account exists
- Reset password in database
- Check JWT configuration
โ Token expired
Error: Unauthorized access
Solution:
- Log in again to get new token
- Increase token expiration in config:
jwt.expiration=7200000 - Clear session and login again
โ ๏ธ Slow application performance
Solution:
- Increase JVM memory:
export MAVEN_OPTS="-Xmx2g" mvn spring-boot:run
- Optimize database queries
- Enable caching
- Reduce question count
- Close unused applications
โ ๏ธ High memory usage
Solution:
- Monitor with Task Manager/Activity Monitor
- Restart application periodically
- Limit concurrent sessions
- Increase system RAM
- Use production profile with optimizations
# application.properties
logging.level.com.quiz=DEBUG
logging.level.org.springframework.web=DEBUGhttp://localhost:8080/h2-console
JDBC URL: jdbc:h2:file:./data/quizdb
curl http://localhost:8080/api/health# Real-time logs
tail -f logs/quiz-app.log
# Search for errors
grep ERROR logs/quiz-app.logIf you still face issues:
- ๐ Check Documentation: Review relevant wiki pages
- ๐ Search Issues: Check GitHub Issues
-
๐ Report Bug: Create detailed issue with:
- Steps to reproduce
- Error messages
- System information
- Screenshots
- ๐ฌ Ask Community: Use GitHub Discussions
When reporting issues, include:
OS: [Windows 10 / macOS 12 / Ubuntu 22.04]
Java Version: [java -version output]
Maven Version: [mvn -version output]
Browser: [Chrome 120 / Firefox 121]
Error Message: [Full error text]
Steps to Reproduce: [Numbered steps]
Expected Behavior: [What should happen]
Actual Behavior: [What actually happens]
Related Pages: [Installation][#-installation-guide] | Configuration | FAQ
Customize the Quiz Application to meet your requirements.
Configuration file: backend/src/main/resources/application.properties
# Server Port
server.port=8080
# Server Address (0.0.0.0 for all interfaces)
server.address=0.0.0.0
# Context Path (optional)
# server.servlet.context-path=/quiz
# Session Timeout (in seconds)
server.servlet.session.timeout=1800# H2 Database Settings
spring.datasource.url=jdbc:h2:file:./data/quizdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=admin
spring.datasource.password=admin123
# JPA Settings
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
# H2 Console (for debugging)
spring.h2.console.enabled=true
spring.h2.console.path=/h2-consoleH2 Console Access:
http://localhost:8080/h2-console
JDBC URL: jdbc:h2:file:./data/quizdb
Username: admin
Password: admin123
# Maximum file size
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
# File upload directory
file.upload.dir=./uploads
# Allowed file types
file.allowed.extensions=txt,pdf# JWT Settings
jwt.secret=yourSecretKeyHere123456789012345678901234567890
jwt.expiration=3600000
# CORS Settings
cors.allowed.origins=http://localhost:3000,http://localhost:8080
cors.allowed.methods=GET,POST,PUT,DELETE,OPTIONS
cors.allowed.headers=*
โ ๏ธ Security Note: Changejwt.secretto a strong, unique value in production!
# AI Service Type (mock, openai, gemini)
ai.service.type=mock
# OpenAI Settings (if using OpenAI)
ai.openai.api-key=your_openai_api_key_here
ai.openai.model=gpt-3.5-turbo
ai.openai.max-tokens=1000
# Gemini Settings (if using Gemini)
ai.gemini.api-key=your_gemini_api_key_here
ai.gemini.model=gemini-pro# Log Level
logging.level.root=INFO
logging.level.com.quiz=DEBUG
logging.level.org.springframework.web=DEBUG
# Log File
logging.file.name=./logs/quiz-app.log
logging.file.max-size=10MB
logging.file.max-history=7File: client/src/main/resources/config.properties
# Backend API URL
api.base.url=http://localhost:8080/api
# Connection Timeout (milliseconds)
api.connection.timeout=5000
# Read Timeout (milliseconds)
api.read.timeout=10000
# UI Theme (light, dark)
ui.theme=light
# Window Size
ui.window.width=1200
ui.window.height=800
# Auto-refresh Scoreboard (seconds)
scoreboard.refresh.interval=5File: backend/src/main/resources/static/js/config.js
const CONFIG = {
// API Base URL
API_BASE_URL: '/api',
// Timeouts
REQUEST_TIMEOUT: 10000,
REFRESH_INTERVAL: 5000,
// UI Settings
QUESTIONS_PER_PAGE: 1,
ENABLE_ANIMATIONS: true,
// Quiz Settings
SHOW_TIMER: true,
ALLOW_REVIEW: true,
AUTO_SUBMIT: false
};# Session ID Length
session.id.length=6
# OTP Length
session.otp.length=6
# Session Expiration (minutes)
session.expiration=60
# Maximum Participants per Session
session.max.participants=100
# Allow Multiple Attempts
session.allow.multiple.attempts=false# Default Question Count
quiz.default.question.count=10
# Maximum Question Count
quiz.max.question.count=50
# Question Types
quiz.question.types=MULTIPLE_CHOICE,TRUE_FALSE
# Shuffle Questions
quiz.shuffle.questions=false
# Shuffle Options
quiz.shuffle.options=false# Enable Email Notifications
notification.email.enabled=false
# SMTP Settings
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-app-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=trueFile: backend/src/main/java/com/quiz/security/SecurityConfig.java
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) {
http
.csrf().disable()
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/auth/**").permitAll()
.requestMatchers("/api/session/join").permitAll()
.requestMatchers("/api/faculty/**").hasRole("FACULTY")
.anyRequest().authenticated()
)
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
return http.build();
}
}File: client/src/main/resources/css/theme.css
/* Color Scheme */
:root {
-fx-primary-color: #2196F3;
-fx-secondary-color: #FFC107;
-fx-success-color: #4CAF50;
-fx-danger-color: #F44336;
-fx-text-color: #212121;
-fx-background-color: #FFFFFF;
}
/* Custom Styles */
.quiz-button {
-fx-background-color: -fx-primary-color;
-fx-text-fill: white;
-fx-padding: 10 20;
-fx-font-size: 14px;
}File: backend/src/main/resources/static/css/mobile.css
/* Mobile Devices */
@media (max-width: 767px) {
.quiz-container {
padding: 10px;
font-size: 14px;
}
}
/* Tablets */
@media (min-width: 768px) and (max-width: 1023px) {
.quiz-container {
padding: 20px;
font-size: 16px;
}
}
/* Desktop */
@media (min-width: 1024px) {
.quiz-container {
padding: 30px;
font-size: 18px;
}
}File: application-dev.properties
spring.profiles.active=dev
spring.jpa.show-sql=true
logging.level.com.quiz=DEBUG
ai.service.type=mockFile: application-prod.properties
spring.profiles.active=prod
spring.jpa.show-sql=false
logging.level.com.quiz=INFO
ai.service.type=openai
server.port=80Run with specific profile:
# Development
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# Production
mvn spring-boot:run -Dspring-boot.run.profiles=prod# Automatic Backup
backup.enabled=true
backup.directory=./backups
backup.schedule.cron=0 0 2 * * ?
backup.retention.days=7# Thread Pool
server.tomcat.threads.max=200
server.tomcat.threads.min-spare=10
# Connection Pool
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=20000
# Cache Settings
spring.cache.type=caffeine
spring.cache.caffeine.spec=maximumSize=1000,expireAfterWrite=10mserver.port=9090Restart server, access at: http://localhost:9090
spring.h2.console.enabled=trueAccess at: http://localhost:8080/h2-console
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MBRelated Pages: [Installation][#-installation-guide] | Getting Started | Troubleshooting
We welcome contributions from the community! Here's how you can help make the Quiz Application better.
| Type | Description | Skill Level |
|---|---|---|
| ๐ Bug Reports | Report issues you encounter | Beginner |
| ๐ก Feature Requests | Suggest new features | Beginner |
| ๐ Documentation | Improve docs and wiki | Beginner |
| ๐จ UI/UX | Enhance user interface | Intermediate |
| ๐ง Bug Fixes | Fix reported issues | Intermediate |
| โจ New Features | Implement new functionality | Advanced |
| ๐งช Testing | Write unit/integration tests | Intermediate |
Click the "Fork" button on GitHub
git clone https://github.com/YOUR_USERNAME/Quiz.git
cd Quizgit remote add upstream https://github.com/Daku3011/Quiz.git# For features
git checkout -b feature/your-feature-name
# For bug fixes
git checkout -b fix/bug-description
# For documentation
git checkout -b docs/doc-descriptionBranch Naming Convention:
-
feature/- New features -
fix/- Bug fixes -
docs/- Documentation updates -
refactor/- Code refactoring -
test/- Adding tests -
style/- UI/styling changes
# Edit files
nano backend/src/main/java/com/quiz/...
# Test your changes
mvn testJava Code Style:
- Use 4 spaces for indentation
- Follow Google Java Style Guide
- Add JavaDoc for public methods
- Keep methods under 50 lines
Example:
/**
* Generates quiz questions from syllabus content.
*
* @param syllabusContent The input syllabus text
* @param questionCount Number of questions to generate
* @return List of generated questions
* @throws InvalidInputException if syllabus is empty
*/
public List<Question> generateQuestions(
String syllabusContent,
int questionCount
) throws InvalidInputException {
// Implementation
}JavaScript Code Style:
- Use 2 spaces for indentation
- Use
constandlet, avoidvar - Use arrow functions
- Add JSDoc comments
Backend Tests (JUnit):
@Test
public void testQuestionGeneration() {
String syllabus = "Java is a programming language";
List<Question> questions = service.generateQuestions(syllabus, 5);
assertNotNull(questions);
assertEquals(5, questions.size());
}Run Tests:
# Backend tests
cd backend
mvn test
# Client tests
cd client
mvn testCommit Message Format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
-
feat: New feature -
fix: Bug fix -
docs: Documentation -
style: Formatting, missing semicolons -
refactor: Code restructuring -
test: Adding tests -
chore: Maintenance
Examples:
git commit -m "feat(backend): add support for multiple choice questions"
git commit -m "fix(client): resolve scoreboard refresh issue"
git commit -m "docs(wiki): update installation instructions"git push origin feature/your-feature-name- Go to your fork on GitHub
- Click "Pull Request" button
- Select base:
mainโ compare:your-branch - Fill in the PR template
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Code refactoring
## Testing
- [ ] All tests pass locally
- [ ] Added new tests for changes
- [ ] Tested manually
## Checklist
- [ ] Code follows project style guidelines
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] No breaking changes
## Screenshots (if applicable)
[Add screenshots here]
## Related Issues
Closes #123- Automated Checks: CI/CD runs tests
- Review: Maintainers review your code
- Changes: Address review comments if needed
- Approval: Once approved, PR will be merged
- Merge: Your contribution is now part of the project! ๐
- Search Existing Issues: Check if already reported
- Update to Latest: Ensure you're on latest version
- Reproduce: Verify the issue is reproducible
Bug Report:
**Description:**
Clear description of the bug
**Steps to Reproduce:**
1. Go to '...'
2. Click on '...'
3. See error
**Expected Behavior:**
What should happen
**Actual Behavior:**
What actually happens
**Environment:**
- OS: [e.g., Windows 10]
- Java Version: [e.g., 17.0.1]
- Browser: [e.g., Chrome 120]
**Screenshots:**
[If applicable]
**Additional Context:**
Any other relevant informationFeature Request:
**Feature Description:**
Clear description of the feature
**Use Case:**
Why this feature would be useful
**Proposed Solution:**
How you think it should work
**Alternatives Considered:**
Other approaches you've thought about
**Additional Context:**
Mockups, examples, etc.Help improve our wiki:
- Fix Typos: Correct spelling/grammar errors
- Add Examples: Provide code examples
- Clarify Instructions: Make steps clearer
- Add Screenshots: Visual aids help understanding
- Translate: Help with internationalization
// โ Bad comment
int x = 5; // set x to 5
// โ
Good comment
// Calculate maximum allowed questions based on syllabus length
// to prevent excessive AI processing time
int maxQuestions = calculateMaxQuestions(syllabusLength);- Consistency: Follow existing design patterns
- Accessibility: Ensure WCAG 2.1 compliance
- Responsive: Test on multiple screen sizes
- Performance: Optimize images and animations
- Create mockups/prototypes
- Share in GitHub Discussions
- Get feedback from community
- Implement approved designs
Help improve code quality:
Unit Tests:
@Test
public void testSessionCreation() {
Session session = sessionService.createSession(questions);
assertNotNull(session.getSessionId());
assertEquals(6, session.getSessionId().length());
}Integration Tests:
@SpringBootTest
@AutoConfigureMockMvc
public class SessionControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testStartSession() throws Exception {
mockMvc.perform(post("/api/session/start")
.contentType(MediaType.APPLICATION_JSON)
.content(sessionJson))
.andExpect(status().isCreated());
}
}Before submitting PR:
- Code compiles without errors
- All tests pass (
mvn test) - No new warnings introduced
- Code follows style guidelines
- Documentation updated
- Commit messages follow convention
- Branch is up-to-date with main
- Changes are focused and atomic
- No commented-out code
- No debug statements (console.log, System.out)
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Given credit in documentation
- Recognized in commit history
- ๐ฌ Discussions: GitHub Discussions
- ๐ Issues: GitHub Issues
- ๐ง Email: Contact maintainers through GitHub
We follow the Contributor Covenant Code of Conduct. Please be respectful and inclusive.
Key Points:
- Be welcoming and friendly
- Respect differing viewpoints
- Accept constructive criticism
- Focus on what's best for the community
Every contribution, no matter how small, makes this project better. We appreciate your time and effort!
Happy Contributing! ๐
Related Pages: Project Structure | API Reference | Troubleshooting
What is the Quiz Application?
The Quiz Application is a hybrid platform that combines a JavaFX desktop application for faculty management with a web-based interface for student participation. It features AI-powered question generation, real-time scoring, and multi-platform support.
Is this application free to use?
Yes! The Quiz Application is open-source and completely free to use, modify, and distribute.
What platforms are supported?
- Faculty: Windows, macOS, Linux (JavaFX Desktop App)
-
Students:
- Desktop: Windows, macOS, Linux (JavaFX App)
- Mobile/Web: Any device with a modern browser (Chrome, Firefox, Safari, Edge)
Do I need internet to use this application?
No, the application works on a local network. Internet is only needed if you want to use AI features with external APIs (OpenAI/Gemini) in future versions.
What are the system requirements?
Minimum:
- Java 17 or higher
- Maven 3.6+
- 4 GB RAM
- 500 MB free storage
Recommended:
- Java 17+
- Maven 3.8+
- 8 GB RAM
- 1 GB free storage
How long does installation take?
Typically 10-15 minutes:
- Java installation: ~5 minutes
- Maven installation: ~3 minutes
- Project download & build: ~5-7 minutes
Can I install on a Raspberry Pi?
Yes, but performance may vary. Recommended for small groups (โค20 students). Ensure you have:
- Raspberry Pi 4 (4GB+ RAM)
- 64-bit OS
- Java 17 ARM version
How many students can join a single session?
Default limit is 100 concurrent students. This can be increased in configuration for more powerful servers.
Can I create quizzes without AI generation?
Yes! You can:
- Manually create questions
- Import from existing files
- Mix AI-generated and manual questions
How does AI generate questions?
Currently uses a mock AI service. Future versions will support:
- OpenAI GPT models
- Google Gemini
- Custom AI endpoints
The AI analyzes syllabus content and creates multiple-choice questions based on key concepts.
Can I reuse questions?
Currently, questions are session-specific. A question bank feature is planned for future releases where you can save and reuse questions.
Can I see who hasn't submitted yet?
Yes! The live scoreboard shows:
- โ Submitted students (with scores)
- โณ In-progress students
- โ Not started students
Can I export quiz results?
Yes! Export options include:
- CSV (for Excel/Google Sheets)
- PDF (for printing)
- JSON (for data processing)
How long does a session stay active?
Default: 60 minutes from creation. This can be configured in application.properties:
session.expiration=90 # 90 minutesCan I take the quiz on my phone?
Yes! Use the web client by opening your browser and navigating to the URL provided by your faculty (e.g., http://192.168.1.5:8080).
What if I lose internet connection during the quiz?
Your progress is automatically saved. Rejoin using the same Session ID and OTP to continue where you left off.
Can I change my answers before submitting?
Yes! You can navigate between questions and change answers until you click "Submit Quiz".
Will I see the correct answers after submitting?
This depends on your faculty's settings. Some quizzes show correct answers immediately, others don't.
Can I take the quiz multiple times?
No, currently only one attempt per session is allowed. Each student can submit only once.
Is my data secure?
Yes! All communication uses secure protocols, and sessions are protected with OTP verification. Data is stored locally on the server.
How is student data protected?
- OTP-based session access
- JWT token authentication
- Local database (no cloud storage)
- Encrypted communication
- No personal data collected beyond name and enrollment number
Can students see each other's answers?
No. Students only see their own questions and scores. Faculty can view all submissions.
Where is data stored?
All data is stored locally in an H2 database file (./data/quizdb) on the server machine. No data is sent to external servers (except AI API if configured).
Which database does it use?
H2 embedded database by default. Can be configured to use:
- PostgreSQL
- MySQL
- MariaDB
- Any JDBC-compatible database
Can I use this in production?
Yes, but consider:
- Using a production database (PostgreSQL/MySQL)
- Implementing proper security measures
- Setting up backups
- Using production profiles
- Deploying on a reliable server
Is it scalable?
Yes! The architecture supports:
- Horizontal scaling (multiple servers)
- Load balancing
- Database replication
- Caching layers
For very large deployments (500+ concurrent users), consider cloud deployment with proper infrastructure.
Can I integrate with existing systems?
Yes! The REST API allows integration with:
- Learning Management Systems (LMS)
- Student Information Systems (SIS)
- Authentication systems (LDAP, OAuth)
- Analytics platforms
What ports does it use?
- Backend API & Web Client: 8080 (configurable)
- H2 Console: 8080/h2-console (optional)
Ensure these ports are open in your firewall.
Can I customize the UI?
Yes! Customize by editing:
- JavaFX CSS files:
client/src/main/resources/css/ - Web CSS files:
backend/src/main/resources/static/css/ - Color schemes, fonts, layouts are all customizable
Can I change the application name/logo?
Yes! Update:
- Logo images in
resources/images/ - Application title in configuration
- Window titles in JavaFX code
Can I add more question types?
Currently supports multiple choice. Planned additions:
- True/False
- Fill in the blanks
- Short answer
- Essay questions
- Matching questions
Contributions welcome!
Can I deploy on cloud?
Yes! Compatible with:
- AWS (EC2, Elastic Beanstalk)
- Google Cloud Platform
- Microsoft Azure
- Heroku
- DigitalOcean
- Any VPS provider
Is Docker support available?
Docker support is planned for future releases. Meanwhile, you can create your own Dockerfile:
FROM openjdk:17-jdk-slim
COPY backend/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]How do I enable HTTPS?
Configure SSL in application.properties:
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=your_password
server.ssl.key-store-type=PKCS12How do I update to the latest version?
# Backup your data first!
cp -r data/ data-backup/
# Update from repository
git pull origin main
# Rebuild
mvn clean install
# Restart applicationHow often is the project updated?
Check the GitHub repository for:
- Latest releases
- Changelog
- Upcoming features
- Security updates
How do I backup my data?
Simply copy the database folder:
# Backup
cp -r data/ backups/data-$(date +%Y%m%d)/
# Restore
cp -r backups/data-YYYYMMDD/ data/For automated backups, enable in configuration:
backup.enabled=true
backup.schedule.cron=0 0 2 * * ?Why can't I generate questions?
Check:
- Backend server is running
- Syllabus content is clear and structured
- AI service is configured
- Check backend logs for errors
- Try with sample text first
Students can't connect from mobile - why?
Ensure:
- Backend server is running
- Devices are on same WiFi network
- Firewall allows port 8080
- Using correct IP address (not localhost)
- URL format:
http://192.168.x.x:8080
Where can I learn more?
Official Documentation:
- Installation - Setup guide
- Getting Started - Quick start
- Faculty Guide - For teachers
- Student Guide - For learners
- API Reference - For developers
External Resources:
Can I request a new feature?
Yes! We welcome feature requests:
- Check existing issues first
- Create a new issue with "Feature Request" label
- Describe the feature and use case
- Community will discuss and prioritize
What features are planned?
Upcoming Features:
- Real OpenAI/Gemini integration
- Question bank system
- Timed quizzes
- Multiple question types
- Email notifications
- Advanced analytics
- Mobile native apps
- Multi-language support
See Contributing#Future-Enhancements for full list.
Still have questions?
- ๐ Wiki: Read detailed guides
- ๐ Search: Check existing issues
- ๐ฌ Discuss: Use GitHub Discussions
- ๐ Report: Create an issue
- ๐ง Contact: Reach out to maintainers
- OpenAI GPT-3.5/GPT-4 integration
- Google Gemini integration
- Custom AI endpoint support
- Question quality scoring
- Automatic difficulty assessment
- True/False questions
- Fill in the blanks
- Short answer questions
- Essay questions
- Matching questions
- Ordering questions
- Save questions to bank
- Categorize by subject/topic
- Search and filter questions
- Import/Export question sets
- Share question banks between faculty
- Timed quizzes with countdown
- Question randomization
- Option shuffling
- Partial credit scoring
- Negative marking support
- Review mode for students
- Student performance reports
- Question difficulty analysis
- Topic-wise score breakdown
- Historical trends
- Comparative analytics
- Export to Power BI/Tableau
- Email notifications
- SMS alerts (optional)
- In-app notifications
- Announcement system
- Discussion forums
- OAuth 2.0 integration
- LDAP/Active Directory
- Two-factor authentication
- Role-based access control
- Audit logs
- Multi-language support
- RTL (Right-to-Left) layouts
- Localized date/time formats
- Currency support for paid features
- Native Android app
- Native iOS app
- Offline mode support
- Push notifications
- Mobile-optimized UI
- Cloud deployment templates
- Multi-tenancy support
- Horizontal scaling
- Load balancing
- CDN integration
- Enterprise SSO
- Badges and achievements
- Leaderboards
- Points system
- Streak tracking
- Challenges and tournaments
- LMS integration (Moodle, Canvas, Blackboard)
- Google Classroom sync
- Microsoft Teams integration
- Zoom/Webex integration
- Calendar sync
- Webhook support
- Dark mode
- Customizable themes
- Accessibility improvements (WCAG 2.1 AAA)
- Keyboard shortcuts
- Gesture support for mobile
- Animated transitions
- Progressive Web App (PWA)
- Comprehensive test coverage (>80%)
- Performance benchmarking
- Security audits
- Automated CI/CD pipeline
- Docker and Kubernetes support
- Monitoring and alerting
- Video tutorials
- Interactive demos
- API playground
- Admin handbook
- Student handbook
- Deployment guides
Want to contribute to these features? Check out our Contributing guide!
This project is open source and available under the MIT License.
MIT License
Copyright (c) 2025 Daku3011
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
โ Use commercially
โ Modify
โ Distribute
โ Private use
โ Patent use
โ Hold liable
โ Use without attribution (must include copyright notice)
![]() Daku3011 Lead Developer |
Moonshine Co-Developer |
Technologies & Frameworks:
- โ Spring Boot Team - Excellent backend framework
- ๐ผ๏ธ OpenJFX Community - JavaFX platform
- ๐๏ธ H2 Database - Embedded database
- ๐ฆ Apache Maven - Build automation
- ๐ Apache PDFBox - PDF processing
Libraries & Dependencies:
- Spring Security - Authentication & Authorization
- Spring Data JPA - Data access
- JWT (JSON Web Tokens) - Secure communication
- Lombok - Reducing boilerplate code
Community:
- All contributors
- Issue reporters and testers
- Documentation contributors
- Everyone who provided feedback
| Platform | Purpose | Link |
|---|---|---|
| ๐ GitHub Issues | Bug reports, feature requests | Create Issue |
| ๐ก GitHub Discussions | Q&A, ideas, general discussion | Join Discussion |
| ๐ Wiki | Documentation and guides | View Wiki |
| โญ GitHub Stars | Show your support! | Star Repository |
For Security Issues:
- ๐ Report via GitHub Security Advisories
- ๐ง Email maintainers (available on GitHub profiles)
For Business Inquiries:
- ๐ผ Contact through GitHub profiles
- ๐ฌ Reach out via LinkedIn (if available)
- โ JavaFX Desktop Application for Faculty
- โ JavaFX Desktop Application for Students
- โ Responsive Web Client for Students
- โ Spring Boot REST API backend
- โ H2 Database integration
- โ AI-powered question generation (Mock service)
- โ Real-time scoreboard
- โ Session management with OTP
- โ PDF syllabus parsing
- โ Multiple-choice questions
- โ CSV/PDF/JSON export
- Java 17 support
- Maven build system
- Spring Security with JWT
- Modern JavaFX UI
- Responsive web design
- Comprehensive wiki
- Installation guide
- User guides (Faculty & Student)
- API documentation
- Troubleshooting guide
- Contributing guidelines
This project is perfect for:
- ๐ซ Schools & Colleges - Conduct quizzes and assessments
- ๐จโ๐ซ Teachers - Create interactive quizzes quickly
- ๐ฏ Training Centers - Test learner knowledge
- ๐ผ Corporate Training - Employee assessments
- ๐ Study Groups - Practice and revision
- ๐ Competitions - Quiz competitions and contests
Free for educational use! No licensing fees, no limitations.
"Easy to set up and use. The AI question generation saved me hours of work!"
โ Faculty Member
"Love the mobile web interface. I can take quizzes from anywhere!"
โ Student
"Perfect for our remote learning setup. Highly recommended!"
โ Institute Coordinator
Want to share your experience? Add a testimonial
Thank you for choosing the Quiz Application! We hope it makes your teaching and learning experience better.
If you find this project helpful:
- โญ Star the repository
- ๐ด Fork and contribute
- ๐ข Share with others
- ๐ฌ Provide feedback
- ๐ Report issues
- ๐ Improve documentation
Wiki Version: 1.0.1
Last Updated: November 23, 2025
Project Status: โ
Active Development
| Section | Description |
|---|---|
| Home | Overview and quick start guide |
| Installation | Step-by-step installation instructions |
| Getting Started | How to run the application |
| Faculty Guide | Complete guide for faculty members |
| Student Guide | Complete guide for students |
| Architecture | System design and architecture |
| Project Structure | Project Structure |
| API Reference | REST API documentation |
| Configuration | Configuration options |
| Troubleshooting | Common issues and solutions |
| Contributing | How to contribute to the project |
| FAQ | Frequently asked questions |
