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. Призначення документа: Цей документ є Технічним Завданням на розробку спеціалізованої 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.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.1. Загальний Стиль: Мінімалістичний дизайн, що не відволікає від основного контенту. Використання фірмового логотипу.
- 3.2. Юзабіліті: Інтуїтивно зрозуміла навігація, чітка візуальна ієрархія елементів (розділи, дописи, коментарі).
- 3.3. Адаптивність: Повна підтримка та коректне відображення інтерфейсу на всіх типах пристроїв (десктоп, планшет, мобільний телефон). Розміщення архіву та тегів на мобільних - вгорі сторінки.
- 3.4. Швидкодія Інтерфейсу: Миттєва реакція на дії користувача (голосування, зміна статусу допису). Асинхронне завантаження коментарів, якщо їх багато.
- 3.5. Візуальні Індикатори: Чітке відображення статусу дописів (закрито), кількості коментарів, результатів голосування. Візуальне розрізнення дописів різних типів (Оголошення, Питання тощо).
4. Політика Конфіденційності та Поведінки на Форумі
- 4.1. Розміщення Правил: Розробити та розмістити окремі сторінки з "Політикою конфіденційності" та "Правилами поведінки на форумі". Посилання на ці сторінки мають бути доступні з усіх основних сторінок форуму (наприклад, у футері).
- 4.2. Контент Правил: Правила повинні включати:
- Перелік заборонених дій, зазначених в описі (розміщення заборонених законом матеріалів, ненормативна лексика, спам, порушення авторських прав, розміщення особистих даних без згоди, створення дублів облікових записів).
- Опис наслідків порушень (попередження, тимчасове/постійне блокування, видалення облікового запису) та градацію блокувань.
- Порядок отримання повідомлень про порушення та можливі дії для користувача.
- Порядок обробки особистих даних згідно з політикою конфіденційності.
- 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.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.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.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.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 адміністратора для сповіщень).
- Повна відповідність функціональним вимогам, включаючи специфічні ролі, типи дописів, систему модерації та деталізовані 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 у бічній панелі крім наступних полів:
description
Опис розділу форуму
created_by
Email користувача, який створив розділ
після
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
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.