A 100% open source, offline-first Progressive Web App (PWA) for testing your JavaScript knowledge. Focus on deep concepts like event loop, closures, async/await, this binding, type coercion, prototypes, ES2025 features, and more.
- Offline-First: Works completely offline after first visit
- 310+ Questions: Covering 12 core JavaScript categories including ES2025
- PWA Support: Installable on mobile and desktop
- Statistics Tracking: Track your progress and performance
- Share Results: Share your quiz results with friends
- No Backend: 100% client-side, no server required
- GitHub Pages Ready: Deploy to GitHub Pages with one click
| Category | Description |
|---|---|
| Event Loop | Understanding JavaScript event loop, call stack, and task queues |
| Closures | Lexical scoping, closure patterns, and memory management |
| Async/Await | Promises, async/await, and asynchronous programming |
| This Binding | Context binding, arrow functions, and method invocation |
| Type Coercion | Type conversion, truthy/falsy values, and implicit conversions |
| Prototypes | Prototype chain, inheritance, and object-oriented patterns |
| Hoisting | Variable and function hoisting, temporal dead zone |
| Scope | Block, function, and global scope, scope chain |
| Destructuring | Object and array destructuring, rest/spread patterns |
| Arrays | Array methods, iteration, and common gotchas |
| Objects | Object manipulation, property descriptors, and edge cases |
| ES2025 Features | ECMAScript 2025 features: Iterator helpers, Set methods, JSON modules, RegExp enhancements, Promise.try(), and Float16Array |
- Node.js 20+
- npm or yarn
# Clone the repository
git clone https://github.com/xseman/js-quizzy.git
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
# Build static export
npm run build
# The output will be in the /out directory# Validate all question files
npm run validate-questions
# Generate all.json from category files
npm run generate-questionsjs-quizzy/
├── app/ # Next.js App Router pages
├── components/ # React components
├── lib/ # Core logic and utilities
├── public/ # Static assets and questions
│ ├── questions/ # Question JSON files
│ └── sw.js # Service Worker
├── scripts/ # Build and validation scripts
└── docs/ # Documentation
See CONTRIBUTING.md for guidelines on adding questions.
Questions are stored in JSON files in public/questions/. Each category has its own file:
event-loop.jsonclosures.jsonasync.jsonthis.jsoncoercion.jsonprototypes.jsonhoisting.jsonscope.jsondestructuring.jsonarrays.jsonobjects.jsones2025.json
The project includes a GitHub Actions workflow that automatically deploys to GitHub Pages on every push to main.
- Enable GitHub Pages in repository settings
- Select "GitHub Actions" as the source
- Push to
mainbranch - Site will be available at
https://yourusername.github.io/js-quizzy/
See DEPLOYMENT.md for detailed deployment instructions.
- CONTRIBUTING.md - How to contribute questions
- QUESTION_FORMAT.md - Question JSON schema
- ARCHITECTURE.md - Technical architecture
- DEPLOYMENT.md - Deployment guide
- Framework: Next.js 16 (App Router)
- Language: TypeScript 5
- State Management: Zustand
- Styling: Tailwind CSS
- Deployment: GitHub Pages (static export)
This project is open source and available under the MIT License.
Contributions are welcome! Please read CONTRIBUTING.md for details.
- Interactive code playground
- Daily challenges
- Community question voting
- GitHub OAuth for verified users
- AI-powered explanations