04 / Full-stack LMS · навчальний проєкт

Studium.

Навчальна платформа для студентів, викладачів та адміністраторів.

РольСамостійна розробка
СтанТестове середовище
КороткоПовноцінний навчальний застосунок
studium.FULL-STACK LMS
Student workspace / actual screenshot
Actual student dashboard of the Studium learning management system
STUDENT / TEACHER / ADMINAPPLICATION INTERFACE

Інтерфейс Studium. Справжні екрани студентського, викладацького й адміністративного кабінетів.

Про проєкт

Навчальна платформа для різних ролей

Studium — навчальна платформа, яку я розробив самостійно. Студенти працюють із завданнями, тестами, матеріалами, оцінками й розкладом; викладачі керують дисциплінами та перевіряють роботи; адміністратори відповідають за академічну структуру й користувачів.

Frontend реалізував на React/TypeScript, backend — на Java 21/Spring із кількома сервісами за єдиним API gateway. Застосунок працює в тестовому середовищі й розроблявся як навчальний проєкт, а не як комерційна LMS.

Моя робота

Що я розробив

  • Окремі React-інтерфейси для ролей, API-інтеграція, завдання й тести.
  • Java/Spring сервіси, gateway, JWT-авторизація та розділення даних між сервісами.
  • PostgreSQL, файлове сховище MinIO, Kafka-події, сповіщення та тести.
Приклад реалізації

Завдання від публікації до перевірки

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

01

Публікація

Викладач створює завдання для дисципліни та групи. Сервіс зберігає стан завдання й межі доступу.

02

Здача

Студент надсилає роботу через gateway. Метадані файлу зберігаються в PostgreSQL, сам файл — у MinIO.

03

Перевірка

Викладач переглядає відповідні роботи й виставляє оцінку або коментар із перевіркою ролі та належності.

04

Оновлення

Результат стає доступним студенту й може створити сповіщення через систему подій.

Для користувача це один процес, хоча завдання, файли, акаунти й сповіщення обробляються окремими сервісами.

Технічні рішення

Технічні деталі

01

Gateway і володіння даними

Frontend працює через один Spring Cloud Gateway. За ним окремі сервіси освіти, розкладів, завдань, тестування, файлів і сповіщень володіють власними схемами даних. Gateway виконує маршрутизацію, перевірки політик доступу та частину агрегації відповідей.

REST використовується для запитів, де відповідь потрібна відразу; Kafka — для подій, на які мають реагувати інші сервіси. Бізнес-логіка не читає таблиці чужих сервісів напряму.

02

Авторизація на рівні процесів

Ролі включають студента, викладача, адміністратора та власника. Студент може здавати роботи й переглядати власні результати, викладач — керувати своїми дисциплінами, адміністратор — групами, аудиторіями, розкладами й користувачами.

Права перевіряються на backend та gateway, а не лише приховуванням кнопок у браузері. Водночас кожна роль має свій набір сторінок і навігацію.

03

Файли та сповіщення

Бінарні файли зберігаються в MinIO, метадані — в PostgreSQL. Сервіси завдань посилаються на ідентифікатори файлів і застосовують правила доступу, а file-service відповідає за завантаження та попередній перегляд.

Доменні події передаються через Kafka; notification-service зберігає сповіщення та надає їх застосунку або Telegram-боту. Для тестового середовища також підготував інтеграційні перевірки backend.

Технології
JavaSpring BootReactTypeScriptPostgreSQLKafka
Результат

Що вийшло

Studium — великий full-stack проєкт з окремими кабінетами студента, викладача й адміністратора. На сторінці показані справжні скриншоти застосунку.

Система розроблена та протестована в непродукційному середовищі. Я не подаю її як комерційне розгортання з реальними користувачами.

Наступний проєктMnemos