This project is a modern, full-stack quiz platform built with Go (backend) and Vue 3 (frontend), designed for easy deployment via Docker. It supports dynamic Theming, multi-language questions, and custom branding.
All runtime configuration is managed via a YAML file in the config/ directory. The main configuration file is config.yaml, which controls:
- Application title and amount of questions
- Supported languages
- Theming via CSS variables (primary, secondary, success, error colors)
- Icon SVGs for navigation and actions
- The quiz questions and answers (multi-language)
app:
title: Quiz
amount_of_questions: 10
languages:
- en
- de
css_variables:
--color-primary: '#294221'
--color-primary-content: '#ffffff'
--color-secondary: '#ac3e31'
--color-secondary-content: '#ffffff'
--color-success: '#294221'
--color-success-content: '#ffffff'
--color-error: '#ac3e31'
--color-error-content: '#ffffff'
icons:
next: <svg .../>
previous: <svg .../>
submit: <svg .../>
restart: <svg .../>
logo: /app/config/logo.svg
favicon: /app/config/logo.svg
questions:
- id: 1
question:
en: What is the capital of France?
de: Was ist die Hauptstadt von Frankreich?
answers:
en: [Berlin, Madrid, Paris]
de: [Berlin, Madrid, Paris]
correct_answer: 3You can provide a custom logo by placing an SVG file at config/logo.svg. If the file does not exist, a default logo will be used. The logo is displayed in the quiz header.
docker run -it --rm \
--name quiz \
-p 8156:8156 \
-v ./config/:/app/config/ \
ghcr.io/flohoss/quiz:latestservices:
quiz:
image: ghcr.io/flohoss/quiz:latest
restart: always
container_name: quiz
volumes:
- ./config/:/app/config/
ports:
- '8156:8156'# Node packages
docker compose run --rm --pull always yarn upgrade --latest
# Go packages
docker compose run --rm --pull always go get -u && go mod tidy


