Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Quiz System — Веб-платформа для проведения онлайн-викторин в реальном времени

Quiz System — это высокопроизводительный, стабильный и современный веб-сервис для создания и проведения интерактивных квизов и викторин в реальном времени с поддержкой WebSockets (аналог Kahoot! / Quizizz).


🎯 Основные возможности

Для Организатора (Ведущего)

  • 🔐 Регистрация и авторизация: Защищенный вход и безопасное хэширование паролей (Werkzeug).
  • 🛠 Конструктор викторин:
    • Указание названия, описания, базового таймера и выбор категории (ИТ и Технологии, Наука, История, Развлечения, Спорт, Искусство, Общее).
    • Настройка статусов викторины (Draft / Ready / Archived).
  • Гибкий конструктор вопросов:
    • Типы вопросов: одиночный выбор (single_choice) и множественный выбор (multiple_choice).
    • Прикрепление изображений к вопросам.
    • Персональные тайм-лимиты и баллы за каждый вопрос.
  • 🎮 Управление игрой:
    • Создание комнаты с уникальным 6-значным PIN-кодом.
    • Синхронный старт, переключение вопросов в реальном времени и отображение глобального лидерборда.

Для Участника (Игрока)

  • 🚀 Быстрое подключение: Вход в комнату по PIN-коду и никнейму без сложной регистрации.
  • Демонстрация вопросов в реальном времени: Вопрос доступен для ответа строго во время его показа.
  • 📊 Умный подсчет баллов: Учитывается точность ответа и скорость мышления в миллисекундах (response_time_ms).
  • 🏆 Личный кабинет: Полная история игр и набранных баллов в профиле.

🛠 Технологический стек

Компонент Технология Назначение
Backend Python 3.12, Flask Серверная веб-логика и REST API
Real-time Flask-SocketIO (WebSocket) Двусторонняя мгновенная синхронизация сокетов
Database SQLite, SQLAlchemy 2.0 (ORM) Хранение данных, каскадные связи и ORM
Frontend HTML5, CSS3, Vanilla JS Адаптивный веб-интерфейс в тёмных тонах
Testing Pytest / Unittest Покрытие авто-тестами авторизации, CRUD и игровой логики

🏗 Архитектура проекта

Приложение спроектировано по принципам Clean Architecture с разделением ответственности:

quiz-system/
├── app/
│   ├── __init__.py        # Инициализация Flask приложения
│   ├── database.py        # Настройка SQLAlchemy и контекстный менеджер get_db()
│   ├── models.py          # ORM Модели (User, Quiz, Question, GameRoom, Participant, etc.)
│   ├── services.py        # Сервисный слой (AuthService, QuizService, GameService)
│   ├── socket_events.py   # WebSocket события для реального времени
│   ├── routes.py          # Аутентификация и личный кабинет
│   ├── quiz_routes.py     # API управления квизами
│   ├── game_routes.py     # API игровых комнат и ответов
│   ├── static/            # CSS стили и JavaScript клиенты
│   └── templates/         # HTML шаблоны (Jinja2)
├── docs/                  # Пояснительная записка и графические материалы
├── tests/                 # Пакет автоматизированных тестов
├── config.py              # Конфигурация приложения
└── run.py                 # Точка запуска WebSocket сервера

🚀 Локальный запуск

1. Требования

  • Python 3.10+
  • Git

2. Клонирование репозитория и запуск

# Запуск веб-сервера
py -3.12 run.py

Приложение будет доступно по адресу: http://127.0.0.1:5000

3. Запуск автоматических тестов

py -3.12 -m unittest discover -s tests

📄 Сдача проекта

Файл пояснительной записки для сдачи на платформу доступен в docs/EXPLANATORY_NOTE.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages