Pop! is a real-time, interactive quiz game web app built with Next.js and Firebase, hosted on Vercel.
Create, organize, play, and spectate quiz games with friends β covering video games, movies, anime/manga, music, literature, Internet culture, and more.
Note: The game is designed to be played while chatting in-person or on a VoIP app such as Discord or Zoom.
- Real-time multiplayer β play with friends in teams or solo
- 12 unique round types β Progressive Clues, Image, Emoji, Blindtest, Quote, Labelling, Enumeration, Odd One Out, Matching, Reordering, MCQ, and Nagui
- Role-based gameplay β organizers control the game, players answer, spectators watch
- Buzzer system β race to answer first in buzzer-based rounds
- Scoring & leaderboards β round scores, global scores, and dynamic charts
- Sound effects & soundboard β immersive audio feedback
- Question database β submit, review, and reuse community questions
- OAuth2 authentication β sign in with Google or Discord
- Internationalization β English and French
For detailed gameplay rules, round type descriptions, scoring mechanics, and more, visit the Wiki.
| Layer | Technology |
|---|---|
| Framework | Next.js |
| UI | React, Material UI, Tailwind CSS |
| Auth | NextAuth.js (Google, Discord) |
| Database | Firestore |
| Storage | Firebase Storage |
| Hosting | Vercel |
| Forms | Formik, Yup |
# Clone the repository
git clone https://github.com/jmettler27/Pop.git
cd Pop
# Install dependencies
npm install
# Set up environment variables
# Copy process.env and fill in your Firebase + OAuth credentials
# Start the development server
npm run devThe app will be available at http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build for production |
npm run start |
Start the production server |
npm run lint |
Run ESLint |
src/
βββ app/ # Next.js App Router pages & layouts
β βββ (game)/ # Game pages
β βββ api/ # API routes (NextAuth)
β βββ edit/ # Game editor
β βββ join/ # Join game flow
β βββ submit/ # Question submission forms
βββ backend/ # Server-side logic
β βββ firebase/ # Firebase configuration
β βββ models/ # Data models
β βββ repositories/ # Data access layer
β βββ services/ # Business logic
βββ frontend/ # Client-side components & utilities
β βββ components/ # React components
β βββ hooks/ # Custom React hooks
β βββ utils/ # Client utilities
βββ i18n/ # Internationalization (EN/FR)
