Ваше завдання полягає у реалізації функціоналу, описаного далі, проте вам надається гнучкість у підході:
ви маєте повну свободу додавати новий функціонал, модифікувати існуючий або відмовлятися від деяких вимог, якщо вважаєте, що ваші зміни зроблять систему більш ефективною та зручною для кінцевого користувача.
Ваша креативність і інноваційний підхід не тільки вітаються, але й будуть відповідно оціненими. Ми заохочуємо вас думати нестандартно і розробляти рішення, які максимально відповідають потребам користувачів та викликам сучасної освіти.
Наша програма складається з:
Вчитель (teacher)
Учень (student)
Батьки (parents)
Подія (event), що може бути одним із наступних типів:
Екзамен
Контрольна робота
Шкільні заходи
Батьківські збори
Особисті події
Подія включає:
Назву.
Дату початку.
Тривалість.
Контент (може бути прихований, поки не настане час події).
Місце проведення або посилання (для онлайн-подій).
Учасники (можна вибрати одного, групу або багатьох).
Завдання (опціонально).
Завдання (tasks), що включають:
Назву.
Кінцеву дату виконання.
Контент.
Логін форма з email та password.
Користувачі поділяються на: teacher, student, parents.
Викладачі можуть створювати інших користувачів (учнів, батьків, інших викладачів).
Календар подій з режимами перегляду:
Основний - місячний
Додатково - денний, тижневий, річний
Перегляд календаря інших користувачів без доступу до деталей подій (видно лише факт існування події)
Перевірка на конфлікти при запрошенні (сповіщення про перетин подій за часом)
Позначення подій, що перетинаються у календарі користувача
Відображення подій в календарі
Список завдань на сьогодні зі статусами (Виконано, Не виконано)
Сторінка перегляду всіх подій:
Список подій для користувача
Фільтрування (минулі/майбутні, прийняті/відмовлені)
Пошук по імені/по даті
Сторінка перегляду конкретної події
Перегляд деталей події
Кожен користувач може відповісти, чи відвідає подію чи ні.
Кожен користувач може прокоментувати подію.
Сторінка створення події
Викладач може створювати події:
Екзамен.
Домашнє завдання.
Інші події в школі (батьківські збори, учнівські збори, рада викладачів тощо).
Викладач може запросити будь-кого на подію.
Учень може створювати події для себе або запрошувати інших учнів (не може запрошувати вчителів та батьків).
Батьки не можуть створювати події, а тільки переглядати доступні для них.
Сторінка перегляду всіх задач
Реалізувати фільтрування / пошук
Завдання можуть бути створені до події або бути незалежними.
Кожен користувач може позначити свої завдання як виконані (ця інформація доступна тільки для нього).
Завдання відсортовані за датою.
Пошук користувачів в системі по імені / email
Сторінка перегляду профайлу інших кориcтувачів
Сторінка редагування власного профайлу (імя / день народження / додаткова інформація / фотографія профілю / інше)
Викладач може редагувати профіль інших користувачів
Відображення статистики користувачів:
Загальна кількість запланованих завдань та виконаних із них.
Кількість відвіданих подій.
Найчастіші учасники зустрічей.
Додаткові метрики активності
Прикріплення файлів / посилань до подій
Оновлення в реальному часі:
Якщо користувач знаходиться на сайті, і хтось запрошує його на подію, користувач одразу отримує сповіщення про це.
Синхронізація з іншими календарями:
Підтримка синхронізації з Google Calendar або іншими популярними календарями.
У документі елементи, позначені **, вказують на складний функціонал. Ці частини не є обов’язковими для реалізації, але їх виконання може принести додаткові бали. Вони повинні впроваджуватися лише після завершення основної частини роботи
GitHub
Проект має бути викладений на публічний GitHub репозиторій
Має бути історія розробки, створення віток, комітів, пул-ріквестів та активність всіх членів команди
Архітектура
Проект повинен включати базу даних, бекенд, та фронтенд, розроблені з дотриманням найкращих практик та принципів програмування.
Використання ООП
Документація та Інструкція
Документація (Readme.md) по проекту та зрозуміла інструкція для запуску проекту.
Стабільність
Проект повинен працювати без помилок та багів.
Тестування
Необхідно забезпечити покриття коду тестами, включаючи інтеграцію з плагіном для відстеження покриття тестами.
Сторінка (pdf) з описом команди та ролей в команді
Посилання на публічний репозиторій на GitHub.
Відеозапис демонстрації функціоналу проекту, у якому кожен член команди розказує про свій найцікавіший розроблений функціонал.