A modern, secure quiz application built with React and TypeScript, featuring advanced security measures and real-time monitoring capabilities.
- Tab Switching Detection: Automatic disqualification on tab switching
- Keyboard Shortcuts Disabled: F12, Ctrl+Shift+I, Ctrl+U, Ctrl+P, Ctrl+C, Ctrl+V, Ctrl+X
- Right-click Protection: Context menu disabled
- Text Selection Disabled: Prevents copying of questions
- Secure Authentication: Email validation with college domain verification
- Session Management: Secure student session handling
- Secure Login System: College email validation (upluniversity.ac.in domain)
- Interactive Quiz Interface: Clean, modern UI with smooth transitions
- Real-time Timer: 60-minute countdown with visual warnings
- Progress Tracking: Visual progress bar and question indicators
- Navigation Controls: Previous/Next question navigation
- Instant Results: Immediate score calculation and display
- Responsive Design: Works on all devices and screen sizes
- Secure Authentication: Password-protected teacher panel
- Question Management: Add, edit, and manage quiz questions
- Student Monitoring: View registered students (max 70 per session)
- Results Analytics: Comprehensive quiz results with statistics
- CSV Export: Download results in CSV format
- Real-time Dashboard: Live statistics and performance metrics
Visit the live application: SecureQuiz Pro
- Frontend: React 18.3.1 with TypeScript
- Styling: Tailwind CSS 3.4.1
- Icons: Lucide React
- Build Tool: Vite 5.4.2
- Deployment: Netlify
-
Clone the repository
git clone https://github.com/yourusername/securequiz-pro.git cd securequiz-pro -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Build for production
npm run build
- Access the Application: Navigate to the application URL
- Student Login: Click "Student Panel" and enter your details:
- Full Name
- Enrollment Number
- College Email (format:
230102103005.name@upluniversity.ac.in)
- Take the Quiz:
- Answer questions within the 60-minute time limit
- Use Previous/Next buttons to navigate
- Submit when complete or time expires
- Access Teacher Panel: Click "Teacher Panel"
- Authentication: Enter password:
UPLHOD123 - Manage Questions: Add new questions with multiple choice options
- Monitor Students: View registered students and their status
- View Results: Access comprehensive analytics and download CSV reports
The default teacher password is UPLHOD123. To change it:
- Open
src/components/TeacherPanel.tsx - Find the authentication function
- Update the password in the condition:
if (password === 'YOUR_NEW_PASSWORD') {
To change the accepted email domain:
- Open
src/components/StudentLogin.tsx - Update the email pattern:
const emailPattern = /^[0-9]{12}\.[a-z]+@yourdomain\.ac\.in$/;
To modify the quiz duration:
- Open
src/components/QuizPanel.tsx - Change the initial timer value:
const [timeLeft, setTimeLeft] = useState(3600); // 3600 seconds = 60 minutes
To change the maximum number of students:
- Open
src/components/StudentLogin.tsx - Update the limit check:
if (students.length >= 70) { // Change 70 to your desired limit
src/
โโโ components/
โ โโโ MainMenu.tsx # Landing page with panel selection
โ โโโ StudentLogin.tsx # Student authentication form
โ โโโ QuizPanel.tsx # Main quiz interface
โ โโโ TeacherPanel.tsx # Teacher dashboard and management
โโโ App.tsx # Main application component
โโโ main.tsx # Application entry point
โโโ index.css # Global styles and Tailwind imports
- Disabled right-click context menu
- Blocked common keyboard shortcuts (F12, Ctrl+Shift+I, etc.)
- Text selection prevention
- Tab switching detection with automatic disqualification
- Email format validation with domain checking
- Enrollment number uniqueness verification
- Input sanitization and trimming
- Session limit enforcement (70 students max)
- Local storage for data persistence
- Secure student session handling
- Teacher authentication with password protection
- Automatic quiz submission on security violations
The application uses browser localStorage for data persistence:
students: Array of registered student informationquizData: Array of quiz questions and answersquizResults: Array of completed quiz submissionscurrentStudent: Current logged-in student session
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Local storage data persists across browser sessions (by design)
- Security measures can be bypassed by disabling JavaScript (inherent web limitation)
- Timer continues running in background tabs (by design for security)
- Backend integration with database storage
- Advanced analytics and reporting
- Question categories and difficulty levels
- Bulk question import from CSV/Excel
- Real-time proctoring features
- Mobile app version
- Multi-language support
For support, email manthankadhare@gmail.com or create an issue in this repository.
- Built with React
- Styled with Tailwind CSS
- Icons by Lucide
- Deployed on Netlify