
Інтро
Цей проєкт є завданням для учасників командного турніру з програмування.
Мета - створити веб-платформу, яка дозволяє організаторам проводити турнірні раунди із дедлайнами, командам - реєструватися та здавати результати, а журі - оцінювати роботи за визначеними критеріями з подальшим формуванням таблиці лідерів.
Оцінка проєкту буде проводитися за такими критеріями:
-
Функціональність, стабільність та коректність роботи платформи.
-
Якість коду, чистота, використання патернів та ООП.
-
Командна робота та використання git.
-
Якість документації та покриття тестами.
-
UX/UI та зрозумілість інтерфейсу.
Щодо технологій:
-
Фронтенд: будь-які сучасні технології (React/Vue/Angular або інше).
-
Бекенд: ООП підхід, чітка архітектура, валідація даних.
-
База даних: будь-яка, але структура має бути обгрунтованою.
Ваше завдання - реалізувати функціонал, описаний нижче. Ви маєте свободу додавати чи модифікувати вимоги, якщо це покращує продукт; основна мета - поставити точну ціль і задати напрямок, але не обмежувати вашу креативність чи складність продукту.
Функціональні Вимоги
1. Ролі користувачів
Система повинна підтримувати 3 типи користувачів:
-
Адміністратор (Admin) - створює та керує турнірами/раундами/завданнями, переглядає результати.
-
Учасник/Команда (Team) - реєструє команду, подає рішення, переглядає результати.
-
Журі (Jury) - отримує роботи на оцінювання, виставляє бали та коментарі.
Опціонально: роль Організатор (Organizer) як окрема від Admin (якщо потрібно рознести доступи).
2. Турніри (Tournaments)
Створення турніру (Admin)
Адміністратор може створити новий турнір із параметрами:
-
Назва турніру
-
Опис / правила
-
Дата старту турніру (не обов’язково = старт реєстрації)
-
Вікно реєстрації команд: дата/час початку та дата/час завершення
-
Максимальна кількість команд (опціонально)
-
Формат: один раунд або кілька раундів (мінімально - 1 раунд)
Сторінка турніру
-
Публічна інформація (назва, опис, статуси)
-
Статус турніру: Draft / Registration / Running / Finished
-
Список команд (можливо прихований до завершення реєстрації - опціонально)
3. Рестрація команд (Team Registration)
Реєстрація доступна лише у вікні, яке задав Admin
Команда може самостійно зареструватися між датами реєстрації.
Дані, які вказує команда
-
Назва команди
-
Капітан (ПІБ + email)
-
Учасники (список): ПІБ + email (мінімум 2, максимум N - число задається або в коді, або як налаштування турніру)
-
Місто/школа/організація (опціонально)
-
Контактний телеграм/дискорд (опціонально)
Валідації
-
Email унікальні в межах однії команди
-
Команда не може зареєструватися двічі тим самим капітаном (або тим самим набором email) - на ваш розсуд, але має бути захист від дублювань
-
Після завершення реєстрації редагування складу команди:
-
Мінімально: заборонено
-
Опціонально: дозволено лише Admin
-
4. Завдання / Раунд (Tasks / Rounds)
Старт першого завдання (Admin)
Після завершення реєстрації адміністратор запускає перше завдання (раунд).
Параметри завдання:
-
Назва завдання
-
Опис того, що треба реалізувати (функціонал)
-
Вимоги до технологій (наприклад: backend/framework, база даних, деплой, обмеження)
-
Критерії “must have” (список вимог, які обов’язково перевіряються)
-
Час старту та дедлайн здачі (end time)
-
Опціонально: додаткові матеріали (посилання, файли)
Статуси завдання:
-
Draft / Active / SubmissionClosed / Evaluated
Відображення завдання (Team)
Команди бачать:
-
активне завдання
-
дедлайн та таймер (опціонально)
-
список вимог та чек-лист “must have”
5. Подача результатів (Submissions)
Форма завантаження (Team)
До дедлайну команда має завантажити:
-
Посилання на GitHub репозиторій (обов’язково)
-
Коротке відео-демо (обов’язково) - як посилання (YouTube/Drive) або файл (якщо підтримуєте завантаження)
Опціонально:
-
Посилання на live demo (якщо є)
-
Короткий опис (1–2 абзаци): що зроблено, як запускати
Правила:
-
Редагування сабміту дозволене до дедлайну
-
Після дедлайну - сабміт блокується (SubmissionClosed)
6. Оцінювання (Jury Evaluation)
Рандомний розподіл робіт (Admin/System)
Після завершення прийому робіт система:
-
формує список сабмітів
-
рандомно призначає кожному члену журі кілька робіт для оцінювання (наприклад 3–5), з обмеженням:
-
одна робота має бути оцінена мінімум K членами журі (наприклад 2)
-
один член журі не отримує ту саму роботу двічі
-
Опціонально: можливість Admin “перерозподілити” роботи вручну.
Критерії оцінки
Оцінювання проводиться по категоріях (натхненні рубрикою оцінювання з таблиці):
I. Технічна частина
-
Backend якість коду (clean code, патерни, ООП, відсутність помилок, тести)
-
Database (наявність/налаштування, структура)
-
Frontend (clean code, патерни, відсутність помилок, UX/UI, тести)
II. Функціональність
-
Виконання вимог завдання (“must have”)
-
Роботоздатність, відсутність багів
-
Зручність використання
Шкала: 0–100 по кожному пункту (або 0–10 - на ваш вибір), але має бути прозора формула підсумку.
Інтерфейс журі
Журі бачить:
-
список призначених робіт
-
посилання на GitHub та відео
-
форму виставлення балів по категоріях
-
поле коментаря (опціонально, але бажано)
7. Таблиця лідерів (Leaderboard)
Після того як:
-
або всі оцінки здані
-
або Admin натиснув “Finish Evaluation” (мінімальний контроль дедлайну оцінювання)
Система показує:
-
Leaderboard: команди відсортовані за сумарним балом
-
сторінку всіх команд із деталізацією: бали по категоріях + середнє/сума
-
опціонально: “розріз” по оцінках кожного журі (може бути приховано для команд)
8. Головна сторінка
-
Список активних/майбутніх/завершених турнірів
-
Фільтри:
-
Registration open
-
Running
-
Finished
-
-
Для команди: швидкий блок “Ваш турнір / ваше завдання / ваш сабміт”
9. Профіль користувача
-
Базова інформація (ім’я, email, роль)
-
Для команди:
-
склад команди
-
історія участі та сабмітів
-
-
Для журі:
-
список оцінених робіт + статуси
-
-
Для Admin:
-
список створених турнірів/завдань
-
10. Додатковий функціонал (опціонально, оцінюється додатково)
-
Нотифікації (email/внутрішні): старт реєстрації, старт завдання, 24 години до дедлайну, закриття сабмітів
-
Realtime статуси (оновлення таблиці лідерів після нових оцінок)
-
Експорт результатів у CSV/Google Sheet
-
Генерація сертифікатів: адміністратор завантажує макет сертифіката; система генерує іменні сертифікати для учасників або переможців (PDF).
-
Розклад турніру: відображення календаря етапів, онлайн‑консультацій, дедлайнів та інших подій; адміністратор може створювати/редагувати ці події; команди та журі бачать розклад.
-
Архів попередніх турнірів: перелік завершених турнірів із результатами та командами; можливість перегляду сабмітів/оцінок (опціонально).
-
Оголошення: адмін може публікувати повідомлення/новини, які бачать усі учасники; підтримка посилань та форматування; можливе розсилання нотифікацій.
Tournament Jury
.jpg)
Kateryna Zybina
Sigma Software
Kateryna is the Training Manager at Sigma Software University and a lecturer at Kharkiv National University of Radio Electronics.

Serhii Kashubin
Research Engineer at Google

Olena Kot
Tietoevry
Python Developer (Web — Django, Core), AI (Data Science — Mathematics and Statistics) at the IT company Tietoevry

Viacheslav Leskiv
Levi9
Software Engineer at the IT company Levi9

Maksym Vasylyshyn
DataArt
Full-Stack Developer at the IT company DataArt

Oleksandr Hutsuliak
TechMagic
Web and Hybrid Mobile Developer at the IT company TechMagic

Vasyl Liashkevych
EPAM Systems
Head of the Ukraine GenAI R&D Lab, Manager of Data Analytics Consulting at the IT company EPAM Systems
