March 31

base44

Технічне завдання: SaaS платформа -

Форум українською мовою "Львівський центр професійно-технічної освіти державної служби зайнятості"

Логотип https://rada.info/upload/users_files/36738974/03bb8740abdbc97687e9ab5773e9dd58.png

головна сторінка https://prnt.sc/4vBkS-S6Mj8E

Загальний опис

Необхідно розробити SaaS платформу у форматі форуму українською мовою для освітнього середовища з двома рівнями доступу: адміністратор та студенти.
Проект має бути в подальшому розгорнутий на платформі firebase

Структура користувачів

Типи користувачів:

  • Адміністратор (olppara@gmail.com)
  • Студенти (самореєстрація)

Права доступу:

Адміністратор:

  • Керування списком інших адміністраторів: створення, заморожування, видалення, блокування (на тиждень, місяць, рік, назавжди)
  • Редагування даних адміністраторів (прізвище, ім'я, електронна пошта Gmail)
  • Керування розділами форуму: створення, заморожування, видалення, редагування назв
  • Керування обліковими записами студентів: заморожування, видалення, блокування (тимчасово або постійно)
  • Керування дописами та коментарями в будь-якому розділі: заморожування та видалення
  • Створення дописів та коментарів у будь-якому розділі
  • Повний доступ до робочої області з можливістю бачити всі коментарі та дописи

Студенти:

  • Самореєстрація через головну сторінку
  • Створення дописів та коментування

Функціональні вимоги

Система реєстрації та авторизації:

  • Реєстрація та вхід на форум через Google OAuth 2.0
  • Після авторизації користувач повинен заповнити свій кабінет (профіль)
  • Різні панелі входу для адміністраторів та студентів

Профіль користувача:

  • Обов'язкові поля: ім'я, прізвище
  • Додаткові поля: мобільний номер, номер Viber, номер Telegram
  • Відображення імені та прізвища в дописах/коментарях
  • Перехід до електронної пошти при натисканні на ім'я

Дописи та коментарі:

  • Лічильник коментарів для кожного допису на головному екрані
  • Функціонал голосування (стрілки вгору/вниз)
  • Можливість закриття дискусії автором змінюючи мітку на "закрито"
  • Типи дописів: Оголошення, Питання, Пропозиції, Повідомлення, Відгуки
  • Зручний інтерфейс створення дописів з вибором типу допису

Система тегів:

  • Створення та додавання тегів до дописів
  • Вибір з уже існуючих тегів або створення нових
  • Кнопки з тегами для швидкої фільтрації

Пошук:

  • Повнотекстовий пошук за словами та тегами по форуму

Архів форуму:

  • Розміщення на правій бічній панелі (на мобільних - вгорі)
  • Відображення дат публікацій
  • Кнопки з тегами для швидкої фільтрації

Панелі керування:

  • Панель адміністратора:
    • Керування іншими адміністраторами
    • Керування розділами
    • Керування користувачами
    • Модерація дописів та коментарів
    • Повний доступ до всіх коментарів та дописів

Система модерації:

  • Можливість вказання причини заморожування/видалення
  • Градація блокувань (1 тиждень, 2 тижні, 3 тижні, 1 місяць, назавжди)

Система сповіщень електронною поштою:

  • Сповіщення про створення розділу, допису, коментаря
  • Сповіщення про зміну розділу, допису, коментаря
  • Сповіщення про відповіді (всім учасникам дискусії)
  • Сповіщення про заморожування, блокування, видалення
  • Всі листи українською мовою з зазначенням часу події та мотивації дій
  • У листах вказуються подальші дії користувача для продовження активності на форумі

Дизайн та інтерфейс

  • Мінімалістичний дизайн з фокусом на навчальний контент
  • Інтуїтивна навігація з чіткою візуальною ієрархією
  • Адаптивний дизайн з повною підтримкою мобільних пристроїв
  • Миттєва реакція на дії користувача (кліки, голосування)
  • Чіткі індикатори статусу (нові повідомлення, закриті обговорення)

Політика конфіденційності та поведінки на форумі

Заборонені дії:

  • Розміщення матеріалів, що порушують законодавство України
  • Використання ненормативної лексики та образливих висловлювань
  • Спам та рекламні повідомлення
  • Порушення авторських прав
  • Розміщення особистої інформації інших користувачів без їх згоди
  • Створення декількох облікових записів одним користувачем

Наслідки порушень:

  • Попередження
  • Тимчасове блокування (1 тиждень, 2 тижні, місяць)
  • Постійне блокування
  • Видалення облікового запису

У разі порушень користувач отримує повідомлення з поясненням причини та можливими діями для відновлення активності.

Технічні вимоги

  • Повністю українськомовний інтерфейс
  • Підтримка сучасних браузерів
  • Адаптивний дизайн
  • Безпечне зберігання даних користувачів
  • Інтеграція з Google OAuth 2.0 для автентифікації

Технічне Завдання (ТЗ) на розробку SaaS Платформи "Форум ЛЦПТО ДСЗ"

1. Вступ

  • 1.1. Призначення документа: Цей документ є Технічним Завданням на розробку спеціалізованої SaaS платформи у форматі форуму для потреб Львівського центру професійно-технічної освіти державної служби зайнятості. Документ визначає функціональні та нефункціональні вимоги, архітектуру та технологічний стек, стратегію розгортання на Firebase, а також правила та політики користування платформою.
  • 1.2. Мета проекту: Створити безпечну, зручну та адаптовану для освітнього процесу онлайн-платформу для спілкування, обміну інформацією та обговорень між адміністрацією та студентами Центру, використовуючи можливості Firebase.
  • 1.3. Замовник: Львівський центр професійно-технічної освіти державної служби зайнятості.
  • 1.4. Цільова аудиторія:
    • Адміністратори Центру (з фіксованим обліковим записом та можливістю створення інших).
    • Студенти Центру (з можливістю самореєстрації).
  • 1.5. Логотип: Використовувати наданий логотип для оформлення платформи: https://rada.info/upload/users_files/36738974/03bb8740abdbc97687e9ab5773e9dd58.png.
  • 1.6. Базовий візуальний стиль: Орієнтуватися на мінімалістичний дизайн, подібний до наданого скріншоту головної сторінки (https://prnt.sc/4vBkS-S6Mj8E) в частині загального розташування елементів (центральний контент, бічна панель).
  • 1.7. Обмеження проекту:
    • Платформа розробляється виключно українською мовою.
    • Розгортання та функціонування платформи здійснюється на базі Firebase (Authentication, Firestore, Cloud Functions, Hosting, Storage).
    • Автентифікація користувачів здійснюється тільки через Google OAuth 2.0.
    • Фокус на реалізації визначеного функціоналу для адміністраторів та студентів.

2. Функціональні Вимоги

Система повинна забезпечувати наступну функціональність:

  • 2.1. Система Реєстрації та Авторизації:
    • 2.1.1. Автентифікація через Google OAuth 2.0: Єдиний спосіб входу на платформу для всіх користувачів.
    • 2.1.2. Процес Реєстрації (для Студентів): Після першого входу через Google OAuth, студенти спрямовуються на сторінку заповнення профілю перед отриманням доступу до форуму.
    • 2.1.3. Процес Реєстрації (для Адміністраторів): Обліковий запис адміністратора з email olppara@gmail.com створюється на етапі розгортання або первинного налаштування. Інші адміністратори додаються існуючими адміністраторами через панель керування.
    • 2.1.4. Розмежування Панелей Входу/Доступу: Система повинна розрізняти адміністраторів та студентів після авторизації та надавати відповідні рівні доступу та інтерфейси (панель адміністратора).
    • 2.1.5. Вихід з Облікового Запису.
  • 2.2. Профіль Користувача:
    • 2.2.1. Заповнення Профілю після Авторизації (Студенти): Форма для введення обов'язкових та додаткових даних після першого успішного входу через Google.
    • 2.2.2. Обов'язкові поля: Ім'я, Прізвище.
    • 2.2.3. Додаткові поля: Мобільний номер телефону, Номер Viber, Номер Telegram. Поля можуть бути опціональними для відображення іншим користувачам (на вибір користувача в профілі).
    • 2.2.4. Відображення в Дописах/Коментарях: В дописі/коментарі біля тексту відображається Ім'я та Прізвище автора.
    • 2.2.5. Електронна Пошта: При натисканні на Ім'я/Прізвище автора допису/коментаря, має бути можливість переходу до його електронної пошти (за замовчуванням відкриття поштового клієнта з адресою email користувача).
    • 2.2.6. Редагування Профілю: Користувачі можуть редагувати свої додаткові дані в профілі. Ім'я та Прізвище можуть редагуватися адміністратором.
  • 2.3. Управління Розділами Форуму:
    • 2.3.1. Створення Розділів: Адміністратори можуть створювати нові розділи форуму.
    • 2.3.2. Заморожування Розділів: Адміністратори можуть тимчасово деактивувати розділ (студенти не можуть створювати нові теми чи коментувати в ньому, але можуть переглядати).
    • 2.3.3. Видалення Розділів: Адміністратори можуть видаляти розділи (повинно включати опціональне видалення всіх дописів та коментарів в розділі або переміщення їх до архіву/спеціального розділу).
    • 2.3.4. Редагування Назв Розділів: Адміністратори можуть змінювати назви існуючих розділів.
  • 2.4. Дописи та Коментарі:
    • 2.4.1. Створення Дописів: Студенти та Адміністратори можуть створювати нові дописи у відповідних розділах. Допис має заголовок, текст та тип.
    • 2.4.2. Створення Коментарів: Студенти та Адміністратори можуть додавати коментарі до існуючих дописів. Коментар має текст.
    • 2.4.3. Лічильник Коментарів: На головній сторінці біля кожного допису має відображатися актуальна кількість коментарів.
    • 2.4.4. Функціонал Голосування (Лайки/Дизлайки): Стрілки "вгору" та "вниз" біля дописів та коментарів для вираження ставлення. Відображення сумарного рейтингу.
    • 2.4.5. Закриття Дискусії: Автор допису або Адміністратор можуть змінити статус допису на "закрито". У закритому дописі неможливо додавати нові коментарі.
    • 2.4.6. Типи Дописів: При створенні допису користувач обирає його тип зі списку: Оголошення, Питання, Пропозиції, Повідомлення, Відгуки.
    • 2.4.7. Інтерфейс Створення Дописів: Зручний WYSIWYG або Markdown редактор для форматування тексту допису та коментарів (жирний, курсив, списки, посилання, цитати, код).
    • 2.4.8. Модерація Дописів/Коментарів (Адміністратор): Адміністратор може заморожувати (тимчасово приховувати від загального перегляду з можливістю відновлення) та видаляти (без можливості відновлення) будь-які дописи та коментарі.
  • 2.5. Система Тегів:
    • 2.5.1. Додавання Тегів: При створенні або редагуванні допису автор може додавати до нього теги.
    • 2.5.2. Вибір Існуючих Тегів: Поле для додавання тегів повинно пропонувати вибір з уже існуючих популярних тегів.
    • 2.5.3. Створення Нових Тегів: Якщо потрібного тегу немає, користувач може створити новий.
    • 2.5.4. Відображення Тегів: Теги допису мають відображатися під його заголовком або текстом.
    • 2.5.5. Кнопки Фільтрації за Тегами: На головній сторінці або в бічній панелі має бути список тегів (найпопулярніших або всіх), натискання на який фільтрує дописи за цим тегом.
  • 2.6. Пошук:
    • 2.6.1. Повнотекстовий Пошук: Функція пошуку по всьому контенту форуму (заголовки дописів, текст дописів, текст коментарів).
    • 2.6.2. Пошук за Тегами: Можливість пошуку дописів, що містять певні теги.
  • 2.7. Архів Форуму:
    • 2.7.1. Розташування: Блок "Архів" або "Недавні публікації" (з можливістю фільтрації за датами) на правій бічній панелі на десктопі, вгорі на мобільних пристроях.
    • 2.7.2. Відображення: Список дописів, відсортованих за датою публікації.
    • 2.7.3. Фільтрація за Тегами: Можливість фільтрувати вміст архіву за тегами (можливо, той самий набір кнопок тегів, що і в 2.5.5).
  • 2.8. Панелі Керування (для Адміністраторів):
    • 2.8.1. Доступ: Спеціальна захищена панель, доступна лише користувачам з роллю "Адміністратор".
    • 2.8.2. Керування Адміністраторами: Інтерфейс для створення, заморожування, видалення інших облікових записів адміністраторів. Можливість редагування їх даних (Ім'я, Прізвище, Email - тільки Gmail). Блокування облікових записів адміністраторів (тимчасово або назавжди).
    • 2.8.3. Керування Розділами: Інтерфейс для виконання дій з розділами (2.3).
    • 2.8.4. Керування Користувачами (Студентами): Інтерфейс для перегляду списку студентів, їх профілів. Можливість заморожування, видалення, блокування облікових записів студентів (тимчасово: 1 тиждень, 2 тижні, 3 тижні, 1 місяць; або постійно: назавжди).
    • 2.8.5. Модерація Дописів та Коментарів: Інтерфейс для перегляду та виконання дій модерації (заморожування/видалення) над будь-якими дописами та коментарями на форумі.
    • 2.8.6. Повний Доступ до Контенту: Адміністратори мають можливість бачити всі дописи та коментарі, включаючи, можливо, позначені як заморожені (з візуальною індикацією).
  • 2.9. Система Модерації (деталізація):
    • 2.9.1. Причини Дій Модерації: При заморожуванні, видаленні допису/коментаря або блокуванні користувача, адміністратор повинен вказати причину з попередньо визначеного списку або ввести власну. Ця причина використовується у сповіщеннях.
    • 2.9.2. Градація Блокувань (Користувачі): Система повинна підтримувати блокування користувачів на визначені терміни: 1 тиждень, 2 тижні, 3 тижні, 1 місяць, назавжди. Автоматичне зняття тимчасового блокування після закінчення терміну.
  • 2.10. Система Сповіщень Електронною Поштою:
    • 2.10.1. Тригери Сповіщень: Система повинна автоматично надсилати email сповіщення за наступними подіями:
      • Створення нового розділу (адміністраторам).
      • Створення нового допису (адміністраторам; опціонально - підписникам на розділ).
      • Створення нового коментаря (адміністраторам; автору допису; всім іншим учасникам дискусії, які залишали коментарі в цій темі).
      • Зміна/редагування розділу (адміністраторам).
      • Зміна/редагування допису/коментаря (адміністраторам; автору; учасникам дискусії).
      • Заморожування допису/коментаря (автору допису/коментаря; адміністраторам).
      • Видалення допису/коментаря (автору допису/коментаря; адміністраторам).
      • Заморожування облікового запису (користувачеві; адміністраторам).
      • Блокування облікового запису (користувачеві; адміністраторам).
      • Видалення облікового запису (користувачеві; адміністраторам).
    • 2.10.2. Зміст Листів: Всі листи повинні бути українською мовою. Лист повинен містити:
      • Тип події та короткий опис.
      • Час події (з урахуванням часового поясу).
      • Деталі події (наприклад, назва допису, розділу, ім'я користувача).
      • Мотивацію або причину дії (для модерації/блокувань).
      • Посилання на відповідний контент або профіль (якщо застосовно).
      • Для блокувань/заморожувань - інформацію про термін дії обмеження та подальші дії користувача для продовження активності (звернення до адміністрації тощо).
    • 2.10.3. Технічна Реалізація: Використання стороннього сервісу для надсилання email (наприклад, SendGrid, Mailgun) інтегрованого через Firebase Cloud Functions.

3. Дизайн та Інтерфейс

  • 3.1. Загальний Стиль: Мінімалістичний дизайн, що не відволікає від основного контенту. Використання фірмового логотипу.
  • 3.2. Юзабіліті: Інтуїтивно зрозуміла навігація, чітка візуальна ієрархія елементів (розділи, дописи, коментарі).
  • 3.3. Адаптивність: Повна підтримка та коректне відображення інтерфейсу на всіх типах пристроїв (десктоп, планшет, мобільний телефон). Розміщення архіву та тегів на мобільних - вгорі сторінки.
  • 3.4. Швидкодія Інтерфейсу: Миттєва реакція на дії користувача (голосування, зміна статусу допису). Асинхронне завантаження коментарів, якщо їх багато.
  • 3.5. Візуальні Індикатори: Чітке відображення статусу дописів (закрито), кількості коментарів, результатів голосування. Візуальне розрізнення дописів різних типів (Оголошення, Питання тощо).

4. Політика Конфіденційності та Поведінки на Форумі

  • 4.1. Розміщення Правил: Розробити та розмістити окремі сторінки з "Політикою конфіденційності" та "Правилами поведінки на форумі". Посилання на ці сторінки мають бути доступні з усіх основних сторінок форуму (наприклад, у футері).
  • 4.2. Контент Правил: Правила повинні включати:
    • Перелік заборонених дій, зазначених в описі (розміщення заборонених законом матеріалів, ненормативна лексика, спам, порушення авторських прав, розміщення особистих даних без згоди, створення дублів облікових записів).
    • Опис наслідків порушень (попередження, тимчасове/постійне блокування, видалення облікового запису) та градацію блокувань.
    • Порядок отримання повідомлень про порушення та можливі дії для користувача.
    • Порядок обробки особистих даних згідно з політикою конфіденційності.

5. Нефункціональні Вимоги

  • 5.1. Продуктивність: Швидке завантаження сторінок, миттєве відображення оновлень (нових коментарів, результатів голосування - можливо, з використанням Realtime можливостей Firestore). Оптимізація запитів до БД.
  • 5.2. Масштабованість: Використання керованих сервісів Firebase, які автоматично масштабуються (Authentication, Firestore, Hosting, Cloud Storage). Cloud Functions мають бути оптимізовані для ефективного виконання (холодне завантаження, час виконання).
  • 5.3. Надійність: Висока доступність завдяки інфраструктурі Google/Firebase. Коректна обробка помилок. Резервне копіювання даних забезпечується Firebase Firestore.
  • 5.4. Безпека:
    • Використання Firebase Authentication.
    • Реалізація Firebase Security Rules для суворого контролю доступу до даних у Firestore (хто може читати, писати, оновлювати, видаляти дані у відповідних колекціях) на основі ролей користувачів (адміністратор/студент).
    • Використання Cloud Functions для виконання всіх дій адміністратора та модерації, щоб уникнути прямого запису чутливих даних з клієнта.
    • Валідація даних як на клієнті, так і обов'язково на сервері (в Cloud Functions/Security Rules).
    • Захист від поширених веб-вразливостей.
    • Безпечна інтеграція з сервісом надсилання email.
  • 5.5. Підтримуваність: Чистий код, використання TypeScript (рекомендовано для Cloud Functions та Frontend), документація (Firebase Rules, API Cloud Functions), покриття тестами (особливо Cloud Functions та Security Rules).
  • 5.6. Сумісність: Підтримка останніх версій основних веб-браузерів.
  • 5.7. Українська Мова: Повністю українськомовний інтерфейс та всі системні повідомлення/сповіщення.

6. Архітектура Системи (На базі Firebase)

  • 6.1. Клієнтський Рівень (Frontend): SPA на сучасному JS фреймворку (React, Vue, Svelte) з використанням Firebase SDK для взаємодії з Auth, Firestore (читання даних), Cloud Functions (для виконання дій). Розгортається на Firebase Hosting.
  • 6.2. Серверний Рівень (Backend Logic): Реалізація бізнес-логіки, автентифікації (разом з Firebase Auth), авторизації, складних операцій запису/оновлення даних, модерації, надсилання сповіщень за допомогою Firebase Cloud Functions ( Node.js). Cloud Functions взаємодіють з Firestore, Firebase Authentication, Firebase Cloud Storage (якщо будуть файли) та стороннім сервісом Email.
  • 6.3. Рівень Даних (Database): Firebase Firestore для зберігання всіх структурованих даних форуму (користувачі, профілі, розділи, дописи, коментарі, теги, статуси блокувань тощо). Використання колекцій та, можливо, субколекцій.
  • 6.4. Автентифікація: Firebase Authentication з активованим провайдером Google.
  • 6.5. Файлове Сховище (опціонально, якщо будуть аватари/вкладення): Firebase Cloud Storage для зберігання бінарних файлів.
  • 6.6. Пошук: Оскільки нативний пошук у Firestore обмежений, для повнотекстового пошуку, ймовірно, знадобиться інтеграція зі стороннім сервісом пошуку (наприклад, Algolia, або використання ElasticSearch/MeiliSearch розгорнутого окремо) та підтримка індексу цього сервісу за допомогою Firebase Cloud Functions (тригери на зміни в колекціях topics, posts). Або реалізація більш простого пошуку засобами Firestore (з обмеженнями).
  • 6.7. Надсилання Email: Інтеграція з стороннім Email API (наприклад, SendGrid) через Firebase Cloud Functions.
  • 6.8. Правила Безпеки: Написання та налаштування Firebase Security Rules для Firestore та Cloud Storage для контролю доступу на рівні бази даних/сховища.
  • 6.9. Моніторинг та Логування: Використання Firebase Performance Monitoring та Firebase Cloud Logging.

7. Технологічний Стек (На базі Firebase)

  • Frontend: React / Vue.js / Svelte (з використанням відповідного SDK для Firebase)
  • Backend Logic (Cloud Functions): Node.js + TypeScript (рекомендовано)
  • Database: Firebase Firestore
  • Authentication: Firebase Authentication (Google Provider)
  • Hosting: Firebase Hosting
  • File Storage: Firebase Cloud Storage (якщо потрібно)
  • Email Sending: Сторонній сервіс (SendGrid, Mailgun)
  • Full-text Search: Сторонній сервіс (Algolia) або інше рішення, інтегроване через Cloud Functions (якщо потрібно).
  • State Management (Frontend): Context API (React), Vuex/Pinia (Vue), Svelte stores або бібліотеки на кшталт Redux/Zustand.

8. Розгортання на Firebase

  • 8.1. Налаштування Проекту Firebase: Створити новий проект у консолі Firebase. Увімкнути необхідні сервіси: Authentication, Firestore, Hosting, Cloud Functions, Cloud Storage (якщо потрібно).
  • 8.2. Автентифікація: Налаштувати в Firebase Auth вхід через Google, додати olppara@gmail.com як першого адміністратора.
  • 8.3. Firestore: Визначити структуру колекцій та документів. Розробити та розгорнути Firebase Security Rules.
  • 8.4. Cloud Functions: Розгорнути бекенд-логіку як Cloud Functions. Налаштувати тригери (наприклад, HTTP запити для API, тригери Firestore для оновлення пошукового індексу).
  • 8.5. Hosting: Зібрати фронтенд-додаток та розгорнути його на Firebase Hosting. Налаштувати доменне ім'я та SSL (Firebase надає безкоштовно).
  • 8.6. Cloud Storage: Налаштувати правила безпеки для Cloud Storage (якщо використовується).
  • 8.7. Змінні Середовища: Використовувати конфігурацію Firebase Functions для зберігання ключів API сторонніх сервісів (Email, Search).

9. Процес Розробки

  • 9.1. Методологія: Agile (Scrum/Kanban).
  • 9.2. Управління версіями: Git (GitHub/GitLab/Bitbucket).
  • 9.3. Локальна розробка: Використання Firebase Emulators для локального тестування Authentication, Firestore, Cloud Functions.
  • 9.4. Середовища: Розробка (локально + окремий проект Firebase Dev/Staging), Продакшн (основний проект Firebase).

10. Тестування

  • 10.1. Тестування Firebase Security Rules: Критично важливий крок для забезпечення безпеки доступу до даних. Використання Firebase Emulators та написання тестів для правил.
  • 10.2. Юніт- та Інтеграційні Тести: Для Cloud Functions.
  • 10.3. Функціональне Тестування: Перевірка всіх функціональних вимог для обох типів користувачів (Адміністратор, Студент).
  • 10.4. Тестування Адаптивності: Перевірка на різних пристроях та розмірах екранів.
  • 10.5. Тестування Пошти: Перевірка коректності надсилання та вмісту сповіщень електронною поштою.

11. Безпека (деталізація для Firebase)

  • 11.1. Контроль Доступу до Даних: Реалізація складних та точних Firebase Security Rules для Firestore та Storage. Правила повинні чітко визначати, хто (авторизований користувач, адміністратор, автор допису/коментаря) має право на читання, створення, оновлення, видалення даних у кожній колекції.
  • 11.2. Виконання Привілейованих Операцій: Всі дії, що вимагають розширених прав (керування адміністраторами, користувачами, розділами, модерація дописів/коментарів, блокування), повинні виконуватися виключно через Firebase Cloud Functions. Cloud Functions мають використовувати Firebase Admin SDK, що працює з повними правами, але виклик цих функцій з клієнта має бути захищений (наприклад, перевірка ролі користувача всередині Cloud Function).
  • 11.3. Валідація Даних: Валідація вхідних даних у Firebase Security Rules та/або у Firebase Cloud Functions.
  • 11.4. Автентифікація: Firebase Authentication надає надійний механізм автентифікації через Google OAuth 2.0.
  • 11.5. Захист від Зловживань: Розгляд можливості використання App Check (для захисту бекенду від несанкціонованих клієнтів) або ручних механізмів обмеження частоти запитів (Rate Limiting) в Cloud Functions, якщо це потрібно.

12. Моніторинг та Логування

  • 12.1. Логування: Використання Firebase Cloud Logging для збору логів з Cloud Functions та інших сервісів Firebase.
  • 12.2. Моніторинг Продуктивності: Використання Firebase Performance Monitoring для відстеження продуктивності додатку (час завантаження, час відповіді HTTP-запитів, продуктивність Cloud Functions).
  • 12.3. Моніторинг Використання: Відстеження використання сервісів Firebase (кількість записів/читань Firestore, викликів Cloud Functions, трафік хостингу) для контролю витрат та навантаження.
  • 12.4. Оповіщення: Налаштування оповіщень на основі метрик моніторингу (наприклад, при перевищенні порогу помилок Cloud Functions або високому навантаженні).

13. Модель Даних (Firebase Firestore - Пропозиція)

  • Колекція users: Документи для кожного користувача (UID з Firebase Auth як ID документа). Поля: uid, email (з Google Auth), firstName, lastName (обов'язкові), mobilePhone, viber, telegram (опціональні), role ('admin'/'student'), status ('active'/'frozen'/'blocked'), blockedUntil (timestamp, якщо заблоковано тимчасово), blockReason, createdAt, updatedAt.
  • Колекція categories: Документи для категорій. Поля: name, order.
  • Колекція forums: Документи для розділів форуму. Поля: categoryId, name, order, status ('active'/'frozen'), topicCount (лічильник, оновлюється Cloud Function), postCount (лічильник), lastPostRef (посилання на останній пост).
  • Колекція topics: Документи для дописів. Поля: forumId, authorUid, title, content, type ('Оголошення'/'Питання'/...), createdAt, updatedAt, status ('open'/'closed'/'frozen'/'deleted' - deleted тільки логічно, фізичне видалення через адмінку), commentCount (лічильник, оновлюється Cloud Function), voteScore (сума голосів), tags (масив рядків або посилання на колекцію тегів), lastPostRef.
    • Субколекція topics/{topicId}/comments: Документи для коментарів. Поля: topicId, authorUid, content, createdAt, updatedAt, status ('active'/'frozen'/'deleted'), voteScore.
  • Колекція tags: Документи для тегів (якщо потрібна окрема колекція для керування тегами). Поля: name, usageCount. Або теги просто зберігаються як масив рядків у документі допису topic.
  • Колекція moderationLogs: Документи для логування дій модераторів/адміністраторів. Поля: adminUid, action ('freeze_post'/'delete_comment'/'block_user'), targetType ('post'/'comment'/'user'), targetRef (посилання на документ), reason, timestamp, details.
  • Колекція notificationsQueue: Документи для завдань на надсилання email. Створюються Cloud Functions при подіях, обробляються іншою Cloud Function (triggered by creation) яка викликає Email API. Поля: type, userUid, emailSubject, emailBody, status ('pending'/'sent'/'failed'), details, createdAt.
  • Колекція appConfig: Документ для загальних налаштувань форуму (наприклад, список причин модерації, email адміністратора для сповіщень).

14. Критерії Прийняття

  • Повна відповідність функціональним вимогам, включаючи специфічні ролі, типи дописів, систему модерації та деталізовані email сповіщення.
  • Успішне розгортання та стабільна робота на Firebase.
  • Коректна реалізація автентифікації через Google OAuth 2.0.
  • Реалізація надійної системи контролю доступу за допомогою Firebase Security Rules та Cloud Functions.
  • Адаптивний дизайн та відповідність базовому візуальному стилю.
  • Наявність сторінок з Політикою конфіденційності та Правилами поведінки.
  • Повністю українськомовний інтерфейс та комунікація.
  • Наявність документації (опис структури Firestore, Security Rules, API Cloud Functions).

UX аналіз інтерфейсу освітнього форуму
На основі наданих скріншотів я створю концептуальний UX опис кожного екрану цього українського освітнього форуму для Львівського центру професійно-технічної освіти.

1. Адміністративна панель - Управління контентом
На цьому екрані відображається адміністративна панель управління для управління контентом. Інтерфейс має ієрархічну структуру:

Верхня навігація, що показує логотип форуму, посилання на головну сторінку, посилання на панель адміністратора і профіль користувача
Навігація у вигляді хлібних крихт, що показує поточне місцезнаходження в розділі адміністратора
Навігація на основі вкладок для різних функцій адміністратора (Користувачі, Розділи, Керування вмістом)
Область вмісту, що показує таблицю повідомлень форуму з колонками для..:
Назва
Автор
Дата
Статус
Дії
Меню дій, доступне за допомогою кнопки з еліпсом (три крапки), що пропонує варіанти перегляду, закриття, заморожування або видалення контенту
Функція пошуку для фільтрації контенту
Дизайн використовує чистий, мінімалістичний підхід з достатньою кількістю білого простору і чіткою візуальною ієрархією.

2. Адміністративна панель - Керування розділами
На цьому екрані показано інтерфейс керування розділами/категоріями форуму:

Послідовний заголовок і навігація, як і на інших екранах
Область керування розділами з помітною кнопкою "Створити розділ"
Відображається табличний список поточних розділів:
Назва розділу
Опис
Автор
Статус
Дії
Кожен розділ має індикатор статусу (Активний) та доступ до меню дій
Чисте розділення рядків для легкого сканування інформації
3. Адміністративна панель - Управління користувачами

1. Поміняй назву форуму замість "Український Форум" на "Форум Львівського центру професійно-технічної освіти державної служби зайнятості". У всіх шаблонах листів про створення, додавання, відповіді та інших також поміняй назву
2. При створенні нового розділу у режимі Workspace у бічній панелі крім наступних полів:

title
Назва розділу форуму

description
Опис розділу форуму

created_by
Email користувача, який створив розділ

status
Статус розділу форуму

після
created_by Email користувача, який створив розділ

створи поле
name_surname ім'я та прізвище автора розділу (які будуть видимі при створенні розділу, подальних дописів та коментарів після позначки Автор: )
3. Чомусь при створенні відповіді на пост, автору відповіді на пошту не надійшов лист про створенні допису

______________________________________________________________

1. Прибери напис "Український Форум" з головної сторінки форуму
2. Змініть назву форуму у шаблонах всіх листів.

Наприклад, у шаблоні листа про створення допису

Ваш допис успішно створено!
Шановний(а) Петро Іваненко,

Ваш допис "Чудові викладачі" був успішно опублікований у розділі "Відгуки".

Ви можете переглянути свій допис за посиланням: Переглянути допис

Дякуємо за ваш внесок у нашу спільноту!

З повагою,
Команда Українського Форуму

замість "Команда Українського Форуму" має бути "Форум Львівського центру професійно-технічної освіти державної служби зайнятості".

І у всіх інших шаблонах замість "Команда Українського Форуму" має бути "Форум Львівського центру професійно-технічної освіти державної служби зайнятості".



1. Додай для авторів дописів і коментарів можливість не тільки відповідати чи видяляти дописи та коментарі але і редагувати їх


A modern UX/UI approach for an educational SaaS forum

Key UX/UI principles

Minimalistic design

  • A clean, uncluttered interface with a focus on educational content
  • Air layout with sufficient space between elements
  • Limited color palette with accent colors for important actions

Intuitive navigation

  • A clear visual hierarchy with the selection of sections of the educational forum
  • Sequential structure "chapter → topic → discussion" with "breadcrumbs"
  • Fixed menu with main functions and quick access to search

Adaptive design

  • Full support for mobile devices while maintaining functionality
  • Move archive items and tags up on mobile screens
  • Optimized display of educational materials on different devices

Visual feedback

  • Instant reaction to user actions (clicks, voting, sending forms)
  • Clear status indicators (new messages, closed discussions)
  • Animated transitions for a better understanding of changes on the page

Accessibility

  • High contrast text for better readability
  • Support for keyboard navigation and screen readers
  • Clear captions for all form elements and buttons

Features of the educational forum

System of roles and moderation

User hierarchy

  • Super Admin (olppara@gmail.com)
    • Control panel with emphasis on statistics of educational activity
    • Visually separated sections for managing teachers and students
    • Intuitive moderation controls with hints
  • Administrators (teachers)
    • A specialized panel for creating and moderating educational sections
    • Visualization of student activity in the created sections
    • Easy access to content moderation tools
  • Students
    • Simplified registration process with real-time validation
    • Personalized home page with new content highlights
    • Intuitive tools for creating posts and comments

Educational content

Creation and organization of materials

  • Specialized editor with educational templates (Announcements, Questions, Tasks, Reviews)
  • Post categorization system for structuring the educational process
  • A convenient mechanism for closing discussions after finishing the discussion of the topic

Tag and search system

  • Intelligent tagging system with hints as you type
  • Visual display of tags by thematic groups
  • Comprehensive search with filters by sections, dates and topics

Archive of educational materials

  • A timeline with a visual display of activity intensity
  • Grouping of educational materials by semesters/periods
  • Quick access to the most popular topics through the tag cloud

Communication and Notifications

Notification system

  • Stylish, branded email notification templates in Ukrainian
  • Differentiated notifications for different types of learning activity
  • The possibility of setting the frequency of receiving messages

Interaction between users

  • A convenient mechanism for contacting teachers by clicking on a name
  • Visual indicators of online presence to support discussions
  • Instant messaging system for operational consultations

Specialized functions for the educational process

Moderation and norms of behavior

  • A transparent moderation system with clear rules for the learning environment
  • Gradation of sanctions with the possibility of educational measures instead of blocking
  • Visual cues for acceptable behavior during discussions

Administration tools

  • Intuitive interface for blocking (1 week, 2 weeks, month, forever)
  • A system of templates for explaining moderation actions
  • Educational activity monitoring panel for teachers

Security and privacy

  • Clear visual indicators of the level of access to confidential information
  • A transparent privacy policy with a focus on the educational context
  • A mechanism for safe exchange of educational materials

Implementation of these UX/UI approaches will create an educational forum that will be not only functional, but also pleasant to use, will promote active participation of students and effective work of teachers.