Skip to content

๐ŸŽฏ QuicKwiz is an open-source, vibe-coded, quiz making platform

Notifications You must be signed in to change notification settings

rkrmr33/quickwiz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฏ QuicKwiz

A real-time quiz platform built with Go and HTMX. Create quizzes using simple markdown, share a code, and engage participants with timed questions and live results.

โœจ Features

  • ๐Ÿ“ Markdown-based Quiz Creation: Define quizzes using a simple, readable markdown format
  • ๐Ÿ”— Easy Sharing: Generate a unique code to share with participants
  • โšก Real-time Synchronization: WebSocket-powered live updates for all participants
  • โฑ๏ธ Timed Questions: Configurable time limits per question
  • ๐Ÿ† Live Leaderboard: See results and scores update in real-time
  • ๐ŸŽจ Modern UI: Clean, responsive interface using HTMX
  • ๐Ÿณ Docker Ready: Easy deployment with Docker and Docker Compose

๐Ÿš€ Quick Start

Prerequisites

  • Go 1.24 or higher
  • Docker and Docker Compose (optional, for containerized deployment)

Local Development

  1. Clone the repository

    git clone https://github.com/rkrmr33/quickwiz.git
    cd quickwiz
  2. Install dependencies

    go mod download
  3. Run the server

    go run cmd/server/main.go
  4. Open your browser

    http://localhost:8080
    

Using Docker

  1. Build and run with Docker Compose

    docker-compose up --build
  2. Access the application

    http://localhost:8080
    

๐Ÿ“– Quiz Markdown Format

Create quizzes using this simple format:

# My Awesome Quiz

# Settings
time_per_question: 30 seconds

### What is the capital of France?
- Berlin
- Madrid
- Paris
- Rome
* Answer: Paris

### What is 2 + 2?
- 3
- 4
- 5
- 6
* Answer: 4

Format Rules

  1. Title: First # heading becomes the quiz title
  2. Settings: Optional # Settings section
    • time_per_question: Duration in seconds, minutes, or as "X seconds/minutes"
    • time_between_questions: Time between questions
    • streak_bonus: true/false to enable/disable streak scoring
    • quickest_answer_bonus: true/false to award +1 point to the first correct answer
  3. Questions: Use ### for question text
  4. Options: Use - for each answer option
  5. Answer: Use * Answer: followed by the correct answer (must match one of the options exactly)

๐ŸŽฎ How to Use

Creating a Quiz

  1. Navigate to the home page
  2. Paste your quiz markdown in the text area
  3. Click "Create Quiz ๐Ÿš€"
  4. Share the generated code with participants

Joining a Quiz

  1. Receive the quiz code from the creator
  2. Navigate to /quiz/{code}
  3. Enter your name
  4. Click "Join Quiz ๐Ÿš€"
  5. Wait for the quiz to start

Playing the Quiz

  1. Once the quiz starts, questions appear one at a time
  2. Select your answer before time runs out
  3. See results after each question
  4. View the final leaderboard at the end

Key Technologies

  • Backend: Go with Gorilla Mux and WebSocket
  • Frontend: HTML, HTMX for dynamic updates
  • Real-time: WebSockets for live synchronization
  • Testing: Go testing package

๐Ÿ“ License

MIT License - feel free to use this project for any purpose.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

๐Ÿ› Known Issues

  • Session cleanup happens hourly; very old sessions will persist until cleanup

๐Ÿš€ Future Enhancements

  • Persistent storage (database)
  • Question categories and difficulty levels
  • Image support in questions
  • Mobile app

๐Ÿ“ง Contact

For questions or feedback, please open an issue on GitHub.


Made with โค๏ธ using Go and HTMX

About

๐ŸŽฏ QuicKwiz is an open-source, vibe-coded, quiz making platform

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages