QuizMaster is a modern, interactive quiz platform designed to help students revise and master their subjects through customizable question banks, instant feedback, and a user-friendly interface. Built with Next.js, it leverages local storage for offline-first editing and supports rich question formatting.
- Question Banks: Organize questions into named banks for different subjects or topics.
- Rich Question Editor: Create and edit questions with formatted text, multiple choices, tags, categories, difficulty levels, and notes.
- Drag-and-Drop Sorting: Easily reorder questions within a bank.
- Import/Export: Import questions or entire banks from JSON files, and export your data for backup or sharing.
- Tag Management: Assign and manage tags for easy filtering and organization.
- Responsive UI: Works seamlessly on desktop and mobile devices.
- Offline Support: All data is stored locally in your browser using IndexedDB (Dexie.js), so you can work without an internet connection.
- Instant Feedback: Get immediate feedback on your actions with toast notifications.
-
Clone the repository:
git clone https://github.com/manhbi18112005/QuizMaster.git cd QuizMaster -
Install dependencies:
npm install
Start the local development server:
npm run devOpen http://localhost:3000 in your browser to use QuizMaster.
To build and start the app in production mode:
npm run build
npm start- Create a Question Bank: Click "Create New Bank" on the home page, provide a name and description.
- Add Questions: Inside a bank, use the toolbar to add, import, export, or clear questions.
- Edit Questions: Select a question to edit its details, choices, answers, tags, and notes.
- Reorder Questions: Drag and drop questions to change their order.
- Import/Export: Use the toolbar to import questions from a JSON file or export your current bank.
- Next.js (App Router)
- React
- Dexie.js (IndexedDB wrapper)
- Tiptap (Rich text editor)
- Tailwind CSS (Styling)
- Radix UI (Accessible UI primitives)
- Sonner (Toast notifications)
/app- Next.js app directory (pages, layouts, routing)/components- UI and feature components/helpers- Utility and handler functions/lib- Database and core logic/types- TypeScript types and interfaces
All data is stored locally in your browser using IndexedDB. No data is sent to any server. You can export/import your data as JSON files for backup or sharing.
Contributions are welcome! Please open issues or pull requests for bug fixes, improvements, or new features.
GNU GENERAL PUBLIC LICENSE
QuizMaster is an open-source project aimed at making student revision more effective and enjoyable.