A modern, interactive quiz application built with React that allows users to study through customizable quizzes, track their progress, and review incorrect answers.
- Interactive Quiz System: Take quizzes organized by subjects and chapters
- Customizable Quiz Sessions: Select specific chapters and shuffle questions for varied practice
- Review Mode: Focus on previously incorrect answers to improve weak areas
- Progress Tracking: Monitor your performance and identify topics that need more attention
- Admin Dashboard: Manage subjects and upload quiz content via CSV files
- Search Functionality: Look up terms and definitions through integrated Wikipedia search
- Responsive Design: Clean, modern interface built with Tailwind CSS
- Node.js 14.0 or higher
- npm or yarn package manager
- Backend API server (see quiz-maker-backend repository)
- Clone the repository:
git clone https://github.com/yourusername/quiz-maker-frontend.git
cd quiz-maker-frontend- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- Configure your
.env.localfile:
# Admin credentials
REACT_APP_ADMIN_USERNAME=your_admin_username
REACT_APP_ADMIN_PASSWORD=your_secure_password
# Backend API URL
REACT_APP_API_URL=http://localhost:5005Run the development server:
npm startThe application will open at http://localhost:3000
Create an optimized production build:
npm run buildThe build files will be in the build folder, ready for deployment.
- Home Page: Browse and select available subjects
- Quiz Interface:
- Answer multiple-choice questions
- Get immediate feedback with explanations
- Track correct/incorrect answers
- Review Dashboard: Analyze your performance statistics
- Admin Panel (
/admin):- Upload quiz data via CSV files
- Manage subjects and questions
- Edit subject names
The application accepts CSV files with the following structure:
Required Columns:
subject: The subject namechapter: Chapter or topic nametype: Question type (MCQ supported)question: The question textanswers: Comma-separated numbers of correct options (e.g., "1,3")explanation: Explanation for the answeroption_1tooption_6: Answer choices (minimum 2 required)
Example CSV:
subject,chapter,type,question,option_1,option_2,option_3,answers,explanation
Math,Algebra,MCQ,What is 2+2?,3,4,5,2,Basic additionA sample CSV template is available for download in the Admin panel.
- React 18: Core framework
- React Router: Navigation and routing
- Axios: HTTP client for API calls
- Tailwind CSS: Utility-first CSS framework
- React Icons: Icon library
src/
├── components/
│ ├── Admin/ # Admin panel components
│ ├── Chapters/ # Chapter selection components
│ ├── Review/ # Review statistics components
│ ├── Question.jsx # Quiz question display
│ ├── Quiz.jsx # Main quiz logic
│ └── SubjectChapters.jsx
├── pages/
│ ├── Home.jsx # Subject selection
│ ├── Review.jsx # Performance review
│ └── Search.jsx # Term search
├── App.js # Main application component
└── index.js # Application entry point
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
npm start: Run development servernpm test: Launch test runnernpm run build: Create production buildnpm run lint: Run ESLint checks
This project uses ESLint for code quality. Run linting before committing:
npm run lintThe application can be deployed to any static hosting service:
- Build the application:
npm run build - Deploy the
buildfolder to your hosting service - Configure environment variables on your hosting platform
- Ensure the backend API is accessible from your deployed frontend
Popular hosting options:
- Vercel
- Netlify
- GitHub Pages
- AWS S3 + CloudFront
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or suggestions, please open an issue on GitHub or contact the maintainers.
- Built with Create React App
- Icons provided by React Icons
- Styling powered by Tailwind CSS