~ @OmegaSleepy
Hello! This is a repo for my entry in the National Olympiad of Information Technology NOIT. The following will be written in Bulgarian for clarity.
„Умения+“ – WEB Интерактивна платформа за споделяне на опит по учебни предмети
Мартин Владимиров Георгиев
Боряна Георгиева
Проектът цели да създаде достъпна среда за ученици, където обменът на знания превръща сухата материя в приложими умения. Анализът на българската уеб екосистема показва два крайни типа решения: платени платформи със затворено съдържание или остарели форуми с лоша навигация. „Умения+“ запълва тази ниша, като предоставя модерна, безплатна и геймифицирана платформа (система от точки „Искри“), която стимулира ученето чрез развлечение и споделяне.
Реализацията премина през следните ключови фази:
- Проучване и архитектура: Изучаване на HTTP/HTTPS протоколите и проектиране на базата данни.
- Разработка на Core функционалност: Имплементиране на инструменти за създаване на публикации.
- Frontend и UX дизайн: Динамично управление на страниците чрез JS DOM manipulation и подобряване на потребителското изживяване.
- Интеграция на геймификация: Създаване на вътрешен магазин и логика за печелене на „Искри“.
Проектът демонстрира висока сложност чрез разделение на логиката (Layered Architecture). Основните предизвикателства бяха концентрирани във Frontend частта – осигуряване на устойчиво търсене и динамично визуализиране на съдържание без използването на тежки външни фреймуърци.
Архитектурата е изградена на модулен принцип (8 основни пакета):
- Routes: Дефинира endpoint-ите на сървъра; насочва заявките без бизнес логика.
- Controller: Обработва HTTP операциите, управлява JSON парсването и бисквитките.
- Service: Ядрото на приложението. Изпълнява бизнес логика, валидации и комуникира с DAO.
- DAO (Data Access Object): Изолиран слой за директна комуникация с SQLite базата данни.
- Util: Помощни инструменти (Logger, DB връзки).
- Data/DTO: Използване на Java Records за сигурен и лесен пренос на данни в обекти.
- Validation: Специализирани класове за проверка на интегритета на входящите данни.
Избраният технологичен стек съчетава модерна Java функционалност с индустриални стандарти:
- Backend: Java 21 (Records, Pattern Matching), Java Spark (лек сървърен фреймуърк), Thymeleaf (сървърно рендериране), Gson (JSON обработка), jbcrypt (сигурност).
- Database: SQLite – избрана заради лесната преносимост и висока скорост при малки и средни проекти.
- Frontend: Чист JavaScript (Vanilla), Marked.js (за Markdown визуализация), Highlight.js (за синтактично подчертаване на код), SweetAlert2 (за UI нотификации).
Официална документация на Mozilla (MDN) за HTTP и документация на Oracle за Java 21.
Инсталация и стартиране:
Проектът се импортира в Eclipse/IntelliJ като Existing Maven Project.
Изпълнява се Maven install за изтегляне на зависимостите.
Приложението се стартира от главния клас в src/main/java или чрез приложените скриптове runServer.bat / runServer.sh.
Употреба: Достъп през браузър на адрес http://localhost:4567. Платформата разполага с демо профили:
Потребител: username / password
Администратор: username / password
Поддръжка: Сървърът извършва автоматична самодиагностика и почистване при стартиране.
Проектът е напълно функционален и постига заложените цели. Системата за „Искри“ успешно ангажира потребителите. Бъдещото развитие включва разширяване на асортимента в магазина, добавяне на реална система за съобщения между учениците и интеграция на AI за автоматично категоризиране на съдържанието.