Skip to content

jmettler27/Pop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

219 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

logo

Pop!

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.

Features

  • 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

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
Hosting Vercel
Forms Formik, Yup

Getting Started

Prerequisites

Installation

# 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 dev

The app will be available at http://localhost:3000.

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 still 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
β”‚   β”œβ”€β”€ 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
β”‚   └── helpers/        # Client utilities
└── 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

No releases published

Packages

 
 
 

Contributors