AI Quiz Generator application built with React and Vite. with Google Gemini AI APi The app allows users to test their knowledge with interactive quizzes
- ✅ Dynamic Quizzes: Load quizzes dynamically from user choice (quiz topic , quiz level and number of questions) using Gemini Ai
- 📱 Responsive Design: on desktops, tablets, and mobile devices.
- 📊 Score Tracking: Displays scores and progress at the end of quiz.
- ⚡ Fast & Optimized: Built with Vite for faster builds and performance.
- 📄 PDF Content Extraction: Upload a PDF to generate quiz questions from its content. (New)
- 🌍 Language Preference : Choose your preferred quiz language. (New)
Check out the live demo here.
- Frontend: React, Vite
- Styling: Tailwind CSS
- State Management: React hooks useState
- AI Generator : Gemini Api
To run this project locally:
-
Clone the repository:
git clone https://github.com/ourouimed/react-quiz.git cd react-quiz
-
Install dependencies:
npm install
-
Create .env file for Ai models API KEYS :
VITE_GEMINI_API_KEY=YOUR_GEMINI_API_KEY
-
Start the development server:
npm run dev
-
Open your browser and visit:
http://localhost:5173
react-quiz/
├── public/ # Static assets
└── assets / # Project screenShots
├── src/ # Quiz data
│ ├── components / # Quiz components
│ │ ├── CircularProgressBar.jsx
│ │ ├── HomeSec.jsx
│ │ ├── QuizSec.js
│ │ └── ScoreSec.js
│ ├── context / # React context
│ │ └── AppContext.js # Main App context
│ ├── App.jsx # Main app component
│ ├── main.jsx # React entry point
│ ├── models.js # AI integration logic
│ └── index.css # Tailwindcss styles
├── .gitignore # Git ignore rules
├── index.html # Main HTML file
├── package.json # NPM configuration
├── README.md # Project documentation
├── vite.config.js # Vite configuration
└── eslint.config.js # Eslint configuration
- On the homepage, enter a quiz topic in the input field or upload a PDF file to extract content.
- Select the difficulty level: Easy, Medium, or Hard.
- Choose your preferred language for the quiz.
- Select the number of questions (between 5 and 30).
- Click "Generate Quiz" and start testing your knowledge!