Product Requirements Document (PRD)
Product Requirements Document (PRD)
1. Overview
QuizGenie is a full-stack quiz web app that allows users to take topic-based MCQ quizzes generated
from a given syllabus using AI (Groq’s Mixtral model). It provides auto-generated quizzes, result-based
personalized study material in Hindi or English, and tracks user improvement over time.
2. Goals
3. Target Users
Feature Description
Feature Description
Quiz Generation 30 questions: max 2 per heading, randomly from 1000+ MCQs
Feature Description
Feature Description
Feature Description
MCQ Generation AI generates 5–7 subtopics per heading, 1000+ MCQs per subject
Feature Description
Feature Description
5. Tech Stack
Layer Technology
Email Nodemailer
client/
├── public/
│ └── index.html
│
├── src/
│ ├── assets/ # Images, logos, SVGs
│ │ └── icons/
│ │ └── illustrations/
│
│ ├── components/ # Reusable components
│ │ ├── Button.jsx
│ │ ├── Input.jsx
│ │ └── Loader.jsx
│
│ ├── features/ # Feature-wise pages + logic
│ │ ├── auth/ # Login, register
│ │ │ └── Login.jsx
│ │ │ └── Register.jsx
│ │ ├── quiz/ # Quiz Start, Attempt, Result
│ │ ├── dashboard/ # User dashboard
│ │ ├── admin/ # Admin panel
│ │ └── common/ # Shared views
│
│ ├── context/ # Global Contexts (React Context API)
│ │ ├── AuthContext.jsx
│ │ └── ThemeContext.jsx
│
│ ├── hooks/ # Custom Hooks
│ │ ├── useAuth.js
│ │ ├── useQuiz.js
│ │ └── useDebounce.js
│
│ ├── layouts/ # Page layouts
│ │ ├── MainLayout.jsx
│ │ ├── AdminLayout.jsx
│ │ └── AuthLayout.jsx
│
│ ├── routes/ # React Router DOM config
│ │ └── AppRoutes.jsx
│
│ ├── services/ # API services via Axios
│ │ ├── api.js # Axios instance
│ │ ├── auth.js
│ │ ├── quiz.js
│ │ └── admin.js
│
│ ├── utils/ # Helper functions
│ │ ├── formatter.js
│ │ ├── constants.js
│ │ ├── validators.js
│ │ └── chartConfig.js
│
│ ├── pages/ # Final routed page components
│ │ └── Home.jsx
│ │ └── About.jsx
│ │ └── NotFound.jsx
│
│ ├── styles/ # Tailwind and custom CSS
│ │ ├── index.css
│ │ └── theme.css
│
│ ├── App.jsx
│ ├── main.jsx
│ └── .prettierrc
│
├── tailwind.config.js
├── postcss.config.js
├── vite.config.js
├── package.json
└── .env
server/
├── config/
│ ├── db.js # MongoDB connection
│ └── groqClient.js # Groq API setup
├── controllers/ # Route logic
│ ├── auth.controller.js
│ ├── quiz.controller.js
│ ├── admin.controller.js
│ └── ai.controller.js
├── middlewares/
│ ├── auth.middleware.js # JWT check
│ ├── asyncHandler.js # Catch async errors
│ ├── error.middleware.js # Global error handler
│ └── validate.middleware.js # Request body validator
├── models/
│ ├── User.model.js
│ ├── Quiz.model.js
│ ├── Category.model.js
│ ├── MCQ.model.js
│ ├── StudyMaterial.model.js
│ ├── Syllabus.model.js
│ └── Report.model.js
├── routes/
│ ├── auth.routes.js
│ ├── quiz.routes.js
│ ├── admin.routes.js
│ ├── ai.routes.js
│ └── index.js # Combine all routes
├── utils/
│ ├── apiResponse.js # Success/failure standard format
│ ├── apiError.js # Custom APIError class
│ ├── constants.js # Role, status, enums
│ ├── mailer.js # NodeMailer for emails
│ ├── groq.helper.js # Interact with Groq AI
│ └── logger.js # Optional: Winston logger setup
├── validators/
│ ├── auth.validator.js
│ ├── quiz.validator.js
│ └── admin.validator.js
├── .env
├── .prettierrc
├── app.js
├── server.js
├── package.json
└── README.md
7. API Integrations
API Use
8. Non-Functional Requirements
9. Testing Strategy
Layer Tools
Phase Task