Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

310 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

logo

Pop!

Pop! is a real-time, interactive quiz game web app built with Next.js and Firebase.

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.

Features

  • Real-time multiplayer β€” play with friends in teams or solo
  • 14 unique question types
  • Role-based gameplay β€” organizers control the game, players answer, spectators watch
  • Scoring & leaderboards β€” round scores, global scores, and dynamic charts
  • Question database β€” submit, review, and reuse community questions
  • OAuth2 authentication β€” sign in with Google or Discord

Documentation

For detailed gameplay rules, round type descriptions, scoring mechanics, and more, visit the Wiki.

Tech Stack

Layer Technology
Framework Next.js
UI React, Material UI, Tailwind CSS
Auth NextAuth.js (Google, Discord)
Database Firestore
Storage Firebase Storage
Forms Formik, Yup

Getting Started

Prerequisites

Available Scripts

Command Description
npm run dev Start the development server (uses production Firebase)
npm run dev:emulators Start emulators + dev server together (local data)
npm run emulators Start Firebase Emulator Suite only
npm run seed Seed the running emulators with sample data
npm run build Build for production
npm run start Start the production server
npm run lint Run ESLint

Local Development with Emulators

You can develop entirely offline using the Firebase Emulator Suite, which emulates Firestore, Realtime Database, and Storage locally.

Quick Start

# Install dependencies
npm install

# Start the emulators + Next.js dev server
npm run dev:emulators

# In another terminal, seed the emulators with sample data (first time only)
npm run seed

How It Works

  • .env.development sets NEXT_PUBLIC_USE_EMULATORS=true and uses a demo project (demo-pop)
  • When this flag is set, the app connects to local emulators instead of production Firebase
  • Running npm run dev without .env.development connects to your real Firebase project
  • Emulator data is persisted in emulator-data/ (git-ignored) via --export-on-exit

Emulator Ports

Service Port
Firestore 8080
Realtime Database 9000
Storage 9199
Emulator UI 4000

Project Structure

src/
β”œβ”€β”€ app/                # Next.js App Router pages & layouts
β”‚   β”œβ”€β”€ (game)/         # Game pages
β”‚   β”œβ”€β”€ about/          # About page
β”‚   β”œβ”€β”€ api/            # API routes (NextAuth)
β”‚   β”œβ”€β”€ edit/           # Game editor
β”‚   β”œβ”€β”€ join/           # Join game flow
β”‚   └── submit/         # Question submission forms
β”œβ”€β”€ assets/             # App assets (images, audio)
β”œβ”€β”€ 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
β”‚   β”œβ”€β”€ contexts/       # React contexts
β”‚   β”œβ”€β”€ helpers/        # Client utilities
β”‚   └── hooks/          # Custom React hooks
└── i18n/               # Internationalization (EN/FR)

About

🍿 Pop! is a multi-player quiz game revolving around pop culture, built with Next.js, React and Firebase.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages