top of page
сайт головна.png

Інтро

Цей проєкт є завданням для учасників командного турніру з програмування.

Мета - створити веб-платформу, яка дозволяє організаторам проводити турнірні раунди із дедлайнами, командам - реєструватися та здавати результати, а журі - оцінювати роботи за визначеними критеріями з подальшим формуванням таблиці лідерів.

Оцінка проєкту буде проводитися за такими критеріями:

  • Функціональність, стабільність та коректність роботи платформи.

  • Якість коду, чистота, використання патернів та ООП.

  • Командна робота та використання 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

judge Star For Life Ukraine

Kateryna Zybina

Sigma Software

Kateryna is the Training Manager at Sigma Software University and a lecturer at Kharkiv National University of Radio Electronics. 

1768647598013_edited_edited.jpg

Serhii Kashubin

Research Engineer at Google

Google

2025-01-21 13.41.05.jpg

Olena Kot

Tietoevry

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

judge Star For Life Ukraine

Viacheslav Leskiv

Levi9

Software Engineer at the IT company Levi9

543842097_18293078581249605_7981067082575837905_n_edited.jpg

Maksym Vasylyshyn

DataArt

Full-Stack Developer at the IT company DataArt

88257661_2624526591110204_8999688117149499392_n_edited.jpg

Oleksandr Hutsuliak

TechMagic

Web and Hybrid Mobile Developer at the IT company TechMagic

avt_1.jpg

Vasyl Liashkevych

EPAM Systems

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

IMG_9707.jpg

Support children in Ukraine today!

bottom of page