A modern, browser-based quiz management system for creating, organizing, and taking quizzes. Built with React, TypeScript, and IndexedDB for a fully offline-capable experience.
β¨ Comprehensive Question Types
- Multiple choice (single and multi-select)
- Fill-in-the-blank with regex support
- Free-text essay questions
π Quiz Paper Management
- Organize questions into quiz papers
- Customizable question weights
- Time limits and duration tracking
- Random question generation
π Powerful Search
- Full-text search with BM25 algorithm
- Tag-based search with prefix matching
- Category organization
- Bookmark system for content management
π Analytics & Statistics
- Detailed performance tracking
- Statistics by question, tag, and category
- Progress monitoring
- Learning insights
πΎ Data Management
- All data stored locally in browser (IndexedDB)
- Import/Export functionality
- Version control for synchronization
- Conflict resolution for data merging
π Modern Tech Stack
- React 19 with TypeScript
- Chakra UI for beautiful interfaces
- Vite for fast development
- pnpm workspace monorepo structure
- Node.js 18+
- pnpm 8+
# Clone the repository
git clone https://github.com/billstark001/quizzy.git
cd quizzy
# Install dependencies
pnpm install
# Build the common library
pnpm build:common
# Start development server
pnpm devThe application will be available at http://localhost:5173 (or another port if 5173 is in use).
# Build all packages
pnpm build
# Preview production build
pnpm previewquizzy/
βββ quizzy-common/ # Core library
β βββ src/
β β βββ types/ # TypeScript type definitions
β β βββ db/ # Database operations (IndexedDB)
β β βββ search/ # Search algorithms (BM25, Trie)
β β βββ utils/ # Utility functions
β β βββ version/ # Version control system
β βββ package.json
β
βββ quizzy-frontend/ # React web application
β βββ src/
β β βββ pages/ # Page components
β β βββ components/ # Reusable UI components
β β βββ dialogs/ # Modal dialogs
β β βββ layout/ # Layout components
β β βββ utils/ # Frontend utilities
β βββ package.json
β
βββ docs/ # Documentation
β βββ ARCHITECTURE.md # System architecture
β βββ AUTHORING_GUIDE.md # Guide for content creators
β βββ BUGS_AND_TODO.md # Known issues and roadmap
β
βββ package.json # Root package configuration
βββ pnpm-workspace.yaml # pnpm workspace configuration
Comprehensive documentation is available in the docs/ directory:
- README.md - Documentation overview and navigation guide
- AUTHORING_GUIDE.md - Complete guide for creating questions and quiz papers
- ARCHITECTURE.md - Detailed system architecture and technical implementation
- BUGS_AND_TODO.md - Known issues, limitations, and general roadmap
- MOBILE_PWA_ROADMAP.md - Mobile web, PWA, and offline access roadmap
- CLOUD_SYNC_DESIGN.md - Cloud synchronization architecture and design
- TAG_SYSTEM_FEATURES.md - Tag management and features
- TAG_MIGRATION_GUIDE.md - Tag system migration documentation
- EXPORT_IMPORT_GUIDE.md - Data export and import guide
- Navigate to the Edit section
- Select "Questions" β "New Question"
- Choose question type (Multiple Choice, Fill-in-Blank, or Free-Text)
- Fill in the question content using Markdown
- Add tags and categories for organization
- Save your question
- Go to Edit β Papers β New Paper
- Fill in paper details (name, description, duration)
- Add questions by searching or selecting from your question bank
- Arrange questions in desired order
- Set question weights if needed
- Save the paper
- Go to Start Quiz page
- Select a paper or configure random question selection
- Start the quiz
- Answer questions
- Submit and view results
- Search: Use the search box to find questions or papers by content or tags
- Bookmarks: Mark questions for review or organization
- Tags: Organize questions by knowledge points and categories
- Statistics: View performance analytics after completing quizzes
All data is stored locally in your browser using IndexedDB:
- Questions: Your question bank
- Papers: Quiz paper definitions
- Records: Active quiz sessions
- Results: Completed quiz results
- Statistics: Performance analytics
- Tags: Tag definitions (partially implemented)
- Bookmarks: Your bookmarked content
Important: Since all data is stored locally, regular backups are recommended:
- Go to Settings
- Click "Export Data"
- Save the JSON file in a safe location
- To restore, use "Import Data" with your backup file
- React 19 - UI framework
- TypeScript - Type-safe development
- Chakra UI - Component library
- Vite - Build tool
- React Router - Routing
- Jotai - State management
- React Markdown - Markdown rendering
- IndexedDB - Browser database via
idbwrapper - BM25 - Full-text search algorithm
- Trie - Prefix-based tag search
- Version Control - Custom conflict resolution system
- pnpm - Package manager
- ESLint - Code linting
- TypeScript Compiler - Type checking
Quizzy works in all modern browsers that support:
- IndexedDB
- ES2020+
- CSS Grid and Flexbox
Tested on:
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
Contributions are welcome! Please:
- Read the ARCHITECTURE.md to understand the system
- Check BUGS_AND_TODO.md for planned work
- Create an issue to discuss major changes
- Follow the existing code style
- Write tests for new features
- Update documentation as needed
See our comprehensive roadmap documents for detailed implementation plans:
- MOBILE_PWA_ROADMAP.md - Mobile web, PWA, and offline access implementation plan
- CLOUD_SYNC_DESIGN.md - Cloud synchronization architecture and design
- BUGS_AND_TODO.md - Known issues and general roadmap
- β Tag system migration (string-based β ID-based for better data integrity)
- β Enhanced import/export system with conflict resolution
- β Search index optimization with incremental updates
- π Mobile web optimization and responsive design
- π Progressive Web App (PWA) with offline capabilities
- π Cloud synchronization for multi-device support
- π Real-time collaboration features
- π Advanced analytics dashboard
- π AI-assisted content generation
- Local Storage Only: No built-in cloud sync (manual import/export only) - Cloud sync in design phase
- Mobile Optimization: Basic responsive design; mobile-first redesign planned
- No PWA: Cannot be installed as app yet - PWA implementation planned
- No Attachments: Only text and markdown; images via external URLs only
- Browser Storage Limits: Subject to browser IndexedDB quotas
See BUGS_AND_TODO.md for complete list and MOBILE_PWA_ROADMAP.md and CLOUD_SYNC_DESIGN.md for planned improvements.
This project is licensed under the ISC License. See the LICENSE file for details.
- Issues: Report bugs or request features via GitHub Issues
- Documentation: Check the
docs/directory for detailed guides - Discussions: Use GitHub Discussions for questions and community support
Built with modern web technologies:
- React team for React 19
- Chakra UI team for the excellent component library
- IndexedDB community for the
idbwrapper - All open-source contributors whose libraries make this project possible
Note: This project is under active development. The tag system is currently being migrated from a string-based to an ID-based architecture for improved data integrity and features. See BUGS_AND_TODO.md for details.