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.
- ๐ 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
- Go 1.24 or higher
- Docker and Docker Compose (optional, for containerized deployment)
-
Clone the repository
git clone https://github.com/rkrmr33/quickwiz.git cd quickwiz -
Install dependencies
go mod download
-
Run the server
go run cmd/server/main.go
-
Open your browser
http://localhost:8080
-
Build and run with Docker Compose
docker-compose up --build
-
Access the application
http://localhost:8080
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- Title: First
#heading becomes the quiz title - Settings: Optional
# Settingssectiontime_per_question: Duration in seconds, minutes, or as "X seconds/minutes"time_between_questions: Time between questionsstreak_bonus: true/false to enable/disable streak scoringquickest_answer_bonus: true/false to award +1 point to the first correct answer
- Questions: Use
###for question text - Options: Use
-for each answer option - Answer: Use
* Answer:followed by the correct answer (must match one of the options exactly)
- Navigate to the home page
- Paste your quiz markdown in the text area
- Click "Create Quiz ๐"
- Share the generated code with participants
- Receive the quiz code from the creator
- Navigate to
/quiz/{code} - Enter your name
- Click "Join Quiz ๐"
- Wait for the quiz to start
- Once the quiz starts, questions appear one at a time
- Select your answer before time runs out
- See results after each question
- View the final leaderboard at the end
- Backend: Go with Gorilla Mux and WebSocket
- Frontend: HTML, HTMX for dynamic updates
- Real-time: WebSockets for live synchronization
- Testing: Go testing package
MIT License - feel free to use this project for any purpose.
Contributions are welcome! Please feel free to submit a Pull Request.
- Session cleanup happens hourly; very old sessions will persist until cleanup
- Persistent storage (database)
- Question categories and difficulty levels
- Image support in questions
- Mobile app
For questions or feedback, please open an issue on GitHub.
Made with โค๏ธ using Go and HTMX