Skip to content

ChitkulLakshya/QuizWhiz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

214 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                                                  โ•‘
โ•‘      โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ•‘
โ•‘     โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ•โ•โ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘    โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ•โ•โ–ˆโ–ˆโ–ˆโ•”โ•  โ•‘
โ•‘     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘ โ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•”โ•   โ•‘
โ•‘     โ–ˆโ–ˆโ•‘โ–„โ–„ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ•”โ•  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ•”โ•    โ•‘
โ•‘     โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ•‘
โ•‘      โ•šโ•โ•โ–€โ–€โ•โ•  โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•šโ•โ•โ• โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•  โ•‘
โ•‘                                                                  โ•‘
โ•‘           โšก Real-Time AI-Powered Quiz Platform โšก               โ•‘
โ•‘                                                                  โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Next.js React TypeScript Firebase Tailwind CSS Google Gemini


QuizWhiz is a real-time, serverless quiz platform designed for interactive events and classroom assessments.
Create custom quizzes, manage live sessions, and synchronize game state across hundreds of devices โ€”
all with AI-powered question generation and zero participant sign-ups.


๐Ÿ“‹ Table of Contents

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                          โ”‚
โ”‚   01. โ“  Problem Statement              โ”‚
โ”‚   02. โœจ  Key Features                   โ”‚
โ”‚   03. ๐Ÿ› ๏ธ  Tech Stack                     โ”‚
โ”‚   04. ๐Ÿ—๏ธ  System Architecture            โ”‚
โ”‚   05. ๐Ÿ“‚  Project Structure              โ”‚
โ”‚   06. ๐Ÿš€  Getting Started                โ”‚
โ”‚   07. โ˜๏ธ  Deployment                     โ”‚
โ”‚   08. ๐Ÿค  Contributing                   โ”‚
โ”‚   09. ๐Ÿ‘ฅ  Contributors                   โ”‚
โ”‚                                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ“ Problem Statement

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                                         โ”‚
โ”‚  Organizing live quizzes for university clubs, tech events, or large    โ”‚
โ”‚  gatherings often involves either:                                      โ”‚
โ”‚                                                                         โ”‚
โ”‚     โŒ  Manual scoring  โ†’  Slow and error-prone                         โ”‚
โ”‚     โŒ  Enterprise software  โ†’  Expensive and complex                   โ”‚
โ”‚                                                                         โ”‚
โ”‚  QuizWhiz solves this by providing a lightweight, scalable solution     โ”‚
โ”‚  with real-time state sync and automated scoring โ€” no participant       โ”‚
โ”‚  registration required.                                                 โ”‚
โ”‚                                                                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โœจ Key Features

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๐Ÿค– AI Quiz Generation      โ”‚  โ”‚  โšก Real-Time Sync           โ”‚
โ”‚                              โ”‚  โ”‚                              โ”‚
โ”‚  Generate questions via      โ”‚  โ”‚  Game state updates on all   โ”‚
โ”‚  Google Gemini models        โ”‚  โ”‚  devices via Firestore       โ”‚
โ”‚  through Genkit instantly.   โ”‚  โ”‚  listeners instantly.        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๐Ÿ”’ Server-Side Scoring     โ”‚  โ”‚  ๐ŸŽจ Cyberpunk UI             โ”‚
โ”‚                              โ”‚  โ”‚                              โ”‚
โ”‚  Secure scoring via Cloud    โ”‚  โ”‚  Stunning neon interface     โ”‚
โ”‚  Functions prevents any      โ”‚  โ”‚  with sharp edges, parallax  โ”‚
โ”‚  client-side cheating.       โ”‚  โ”‚  effects & animations.       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๐Ÿ›ก๏ธ Admin Dashboard          โ”‚  โ”‚  ๐Ÿ† Dynamic Leaderboard      โ”‚
โ”‚                              โ”‚  โ”‚                              โ”‚
โ”‚  Create quizzes, manage      โ”‚  โ”‚  Real-time ranking of top    โ”‚
โ”‚  content, and control live   โ”‚  โ”‚  performers updated after    โ”‚
โ”‚  game flow seamlessly.       โ”‚  โ”‚  every round.                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๐ŸŽฎ Live Session Control     โ”‚  โ”‚  ๐Ÿ” Secure Access            โ”‚
โ”‚                              โ”‚  โ”‚                              โ”‚
โ”‚  Start questions, reveal     โ”‚  โ”‚  Route protection & role-    โ”‚
โ”‚  answers, and advance        โ”‚  โ”‚  based access control for    โ”‚
โ”‚  rounds manually.            โ”‚  โ”‚  admin functions.            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ› ๏ธ Tech Stack

Layer Technology Purpose
Frontend Next.js 16 (App Router), React 19, TypeScript UI framework & rendering
Styling Tailwind CSS, Radix UI (Cyberpunk Design System) Design system & components
AI Google Genkit, Gemini API AI-powered quiz generation
Database Firebase Firestore (NoSQL) Real-time data & state sync
Functions Firebase Cloud Functions (Node.js 20) Server-side scoring logic
Auth Firebase Authentication (Google OAuth) Admin identity management
Hosting Vercel (Frontend), Google Cloud Platform (Backend) Deployment infrastructure

๐Ÿ—๏ธ System Architecture

graph TB
    subgraph CLIENT ["๐Ÿ–ฅ๏ธ Client Layer"]
        A["๐Ÿ‘‘ Admin Client<br/>(Next.js)"]
        P["๐Ÿ‘ค Participant Clients<br/>(Next.js)"]
    end

    subgraph FIREBASE ["โ˜๏ธ Firebase Backend"]
        FS["๐Ÿ—„๏ธ Firestore<br/>(Real-Time DB)"]
        CF["โš™๏ธ Cloud Functions<br/>(Server-Side Scoring)"]
        FA["๐Ÿ” Firebase Auth<br/>(Google OAuth)"]
    end

    subgraph AI ["๐Ÿค– AI Layer"]
        GK["๐Ÿง  Google Genkit"]
        GM["๐Ÿ’Ž Gemini API"]
    end

    A -->|"1. Update Game State"| FS
    FS -->|"2. onSnapshot Sync"| P
    P -->|"3. Submit Answer"| CF
    CF -->|"4. Validate & Score"| FS
    FS -->|"5. Leaderboard Update"| A
    A -->|"Generate Quiz"| GK
    GK -->|"Prompt"| GM
    GM -->|"Questions"| GK
    GK -->|"Store"| FS
    A -->|"Auth"| FA

    style CLIENT fill:#1a1a2e,stroke:#e94560,stroke-width:2px,color:#ffffff
    style FIREBASE fill:#16213e,stroke:#0f3460,stroke-width:2px,color:#ffffff
    style AI fill:#1a1a2e,stroke:#e94560,stroke-width:2px,color:#ffffff
Loading

Data Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        REAL-TIME GAME LOOP                          โ”‚
โ”‚                                                                     โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚   โ”‚  LOBBY  โ”‚โ”€โ”€โ”€โ–ถโ”‚ QUESTION  โ”‚โ”€โ”€โ”€โ–ถโ”‚  ANSWER   โ”‚โ”€โ”€โ”€โ–ถโ”‚ LEADERBOARDโ”‚  โ”‚
โ”‚   โ”‚  PHASE  โ”‚    โ”‚  START    โ”‚    โ”‚ SUBMISSION โ”‚    โ”‚  UPDATE    โ”‚  โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚       โ”‚               โ”‚               โ”‚                  โ”‚         โ”‚
โ”‚       โ–ผ               โ–ผ               โ–ผ                  โ–ผ         โ”‚
โ”‚   Admin sets     Admin updates   Participant      Scores sorted    โ”‚
โ”‚   status to      question index  submits via      & displayed      โ”‚
โ”‚   'lobby'        & start time    Cloud Function   in real-time     โ”‚
โ”‚                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Firestore Data Model

๐Ÿ“ฆ quizzes/ (Collection)
 โ”ฃ ๐Ÿ“„ {quizId} (Document)
 โ”ƒ  โ”ฃ ๐Ÿ“ title: string
 โ”ƒ  โ”ฃ ๐Ÿ“ status: 'draft' | 'lobby' | 'active' | 'ended'
 โ”ƒ  โ”ฃ ๐Ÿ“ currentQuestionIndex: number
 โ”ƒ  โ”ฃ ๐Ÿ“ questionStartTime: timestamp
 โ”ƒ  โ”ƒ
 โ”ƒ  โ”ฃ ๐Ÿ“ฆ questions/ (Subcollection)
 โ”ƒ  โ”ƒ  โ”— ๐Ÿ“„ {questionId}
 โ”ƒ  โ”ƒ     โ”ฃ ๐Ÿ“ questionText: string
 โ”ƒ  โ”ƒ     โ”ฃ ๐Ÿ“ options: string[]
 โ”ƒ  โ”ƒ     โ”ฃ ๐Ÿ“ correctOptionIndex: number
 โ”ƒ  โ”ƒ     โ”— ๐Ÿ“ timeLimit: number
 โ”ƒ  โ”ƒ
 โ”ƒ  โ”— ๐Ÿ“ฆ participants/ (Subcollection)
 โ”ƒ     โ”— ๐Ÿ“„ {participantId}
 โ”ƒ        โ”ฃ ๐Ÿ“ name: string
 โ”ƒ        โ”ฃ ๐Ÿ“ totalScore: number
 โ”ƒ        โ”— ๐Ÿ“ answers: Array<{ questionId, selectedOptionIndex, pointsEarned }>

๐Ÿ“‚ Project Structure

QuizWhiz/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ admin/          # ๐Ÿ›ก๏ธ  Admin dashboard (protected)
โ”‚   โ”‚   โ”œโ”€โ”€ join/           # ๐ŸŽฎ  Participant entry point
โ”‚   โ”‚   โ””โ”€โ”€ play/[quizId]/  # โšก  Live game loop
โ”‚   โ”œโ”€โ”€ ai/                 # ๐Ÿค–  Genkit flows & Gemini config
โ”‚   โ”œโ”€โ”€ components/         # ๐Ÿงฉ  Reusable UI components
โ”‚   โ””โ”€โ”€ lib/
โ”‚       โ””โ”€โ”€ firebase-service.ts  # ๐Ÿ”ฅ Firestore abstraction layer
โ”œโ”€โ”€ functions/              # โ˜๏ธ  Firebase Cloud Functions
โ”œโ”€โ”€ firestore.rules         # ๐Ÿ”’  Database security rules
โ”œโ”€โ”€ public/                 # ๐Ÿ“  Static assets
โ””โ”€โ”€ package.json

๐Ÿš€ Getting Started

Prerequisites

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  โœ…  Node.js 18+                         โ”‚
โ”‚  โœ…  Firebase Project (Firestore + Auth) โ”‚
โ”‚  โœ…  Google Gemini API Key               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Installation

# 1. Clone the repository
git clone https://github.com/prem22k/QuizWhiz.git
cd QuizWhiz

# 2. Install dependencies
npm install

# 3. Configure environment
cp .env.example .env.local

Environment Variables

Create a .env.local file:

NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
GOOGLE_GENAI_API_KEY=your_gemini_api_key

Run Locally

npm run dev

App will be available at http://localhost:3000


โ˜๏ธ Deployment

Frontend โ€” Vercel

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1. Connect GitHub repo to Vercel           โ”‚
โ”‚  2. Add .env.local vars to Vercel settings  โ”‚
โ”‚  3. Deploy ๐Ÿš€                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Backend โ€” Firebase

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1. Deploy Firestore security rules                         โ”‚
โ”‚  2. Add production domain to Firebase Auth authorized list   โ”‚
โ”‚  3. Deploy Cloud Functions                                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿค Contributing

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                      โ”‚
โ”‚   1.  ๐Ÿด  Fork the repository                        โ”‚
โ”‚   2.  ๐ŸŒฟ  Create a feature branch                    โ”‚
โ”‚       git checkout -b feature/amazing-feature        โ”‚
โ”‚   3.  ๐Ÿ’พ  Commit your changes                        โ”‚
โ”‚       git commit -m 'Add amazing feature'            โ”‚
โ”‚   4.  ๐Ÿ“ค  Push to the branch                         โ”‚
โ”‚       git push origin feature/amazing-feature        โ”‚
โ”‚   5.  ๐Ÿ”€  Open a Pull Request                        โ”‚
โ”‚                                                      โ”‚
โ”‚   Please ensure all code is properly typed with      โ”‚
โ”‚   TypeScript and includes relevant error handling.   โ”‚
โ”‚                                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ‘ฅ Contributors

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                          MEET THE TEAM                                  โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Lakshya Chitkul
Lakshya Chitkul

Project Lead ยท Core Architecture

Prem Sai Kota
Prem Sai Kota

AI Generation ยท Auth ยท Deployment

Eeshitha Gone
Eeshitha Gone

UI/UX Design ยท Animations


โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                                                  โ•‘
โ•‘          Built with โค๏ธ using Next.js, Firebase & Gemini          โ•‘
โ•‘                                                                  โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

About

Real-time serverless quiz platform for live events using Next.js and Firebase, with admin-controlled sessions, automated scoring, and live leaderboards.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors