Аннотация
ВВЕДЕНИЕ 4
1 Анализ аналогов 6
1.1 Читай-город (chitai-gorod.ru) 6
1.2 ЛитРес (litres.ru) 6
1.3 Read.ru 7
1.4 Выводы по анализу аналогов 7
2 Анализ требований 8
2.1 Функциональные и нефункциональные требования 8
2.2 Модель предметной области 9
2.3 Реализация классов предметной области 11
2.4 Диаграмма вариантов использования 11
2.5 Диаграмма деятельности — сценарии взаимодействия пользователей 13
3 Реализация серверной части (backend) 15
3.1 Архитектура приложения 15
3.2 API и маршруты 17
3.3 ORM-модели и база данных 19
3.4 Аутентификация и авторизация (JWT, роли) 21
3.5 Middleware: логирование, проверка ролей, CORS 23
3.6 Работа с файлами (обложки и PDF-документы) 25
3.7 Взаимодействие с внешним сервисом обработки книг 27
3.8 Структура базы данных 29
3.9 Защищённая загрузка PDF-файлов после покупки 29
4 Реализация клиентской части (frontend) 32
4.1 Структура проекта на Vue 3 32
4.2 Навигация и маршрутизация 34
4.3 Аутентификация на клиенте 35
4.4 Управление состоянием (Pinia) 37
4.5 Компоненты интерфейса 39
4.6 Интернационализация и локализация 45
5 Развёртывание 48
5.1 Используемые технологии развертывания 48
5.2 Подготовка конфигурации 49
5.3 Сборка и запуск контейнеров 51
5.4 Организация файлов и путей 52
5.5 Развёртывание внешнего сервиса анализа книг 53
ЗАКЛЮЧЕНИЕ 66
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 68
В последние годы электронная коммерция стала неотъемлемой частью повседневной жизни. Интернет-магазины позволяют людям приобретать товары и услуги без необходимости покидать дом, экономя время и усилия. Особенно стремительно развивается рынок цифровой продажи книг, где пользователи могут удобно находить, приобретать и скачивать литературу в электронном виде или заказывать печатные издания с доставкой [1]. Это делает систему управления интернет-магазином книг актуальной и востребованной.
Современные пользователи ожидают от онлайн-магазина не только широкий ассортимент книг, но и интуитивно понятный интерфейс, персонализированные рекомендации, систему отзывов, а также простой и безопасный процесс оформления заказов [2]. Поэтому создание специализированного веб-приложения для продажи книг требует комплексного подхода, сочетающего удобство, функциональность и безопасность.
Целью данной выпускной квалификационной работы является разработка полнофункционального веб-приложения интернет-магазина книг с возможностью управления заказами, пользователями, книжными наборами (комбо-наборами) и отзывами. В приложении реализована авторизация с использованием JWT, разграничение прав доступа по ролям (администратор, сотрудник, покупатель) [3], система управления каталогом книг и комбо-наборов, оформление и отслеживание заказов, а также модуль рекомендаций книг.
Для реализации проекта были использованы современные технологии:
- язык программирования Go и фреймворк Gin для серверной части;
- библиотека GORM для работы с базой данных PostgreSQL;
- механизм JWT для аутентификации и авторизации;
- Docker для контейнеризации приложения;
- а также Vue 3, TypeScript, Pinia, i18n, Tailwind CSS для клиентской части;
- в отдельных модулях — поддержка загрузки и хранения изображений, а также PDF-файлов.
Разработка веб-приложения осуществлялась по модели клиент-сервер с REST- архитектурой. Особое внимание было уделено модульной структуре, безопасности и расширяемости решения. Приложение позволяет администраторам и сотрудникам 4
управлять ассортиментом, получать статистику и настраивать параметры магазина, в то время как покупатели могут регистрироваться, просматривать книги, оформлять заказы и оставлять отзывы.
Работа включает в себя анализ существующих решений, формализацию требований, проектирование архитектуры, реализацию ключевых функций, тестирование, а также описание процесса развертывания системы.
Таким образом, результатом данной работы является веб-приложение интернет- магазина книг, готовое к использованию и дальнейшему расширению
В ходе выполнения данной выпускной квалификационной работы была разработана и реализована полнофункциональная веб-система интернет-магазина по продаже книг и управлению заказами. Система охватывает как клиентскую, так и серверную части и включает в себя ключевые компоненты, характерные для современных e-commerce решений: каталог товаров, корзина покупок, оформление заказов, управление ролями пользователей (покупатель, сотрудник, администратор), хранение истории операций и система отзывов.
Особое внимание было уделено вопросам масштабируемости и модульности архитектуры. Backend-приложение построено на языке Go с использованием фреймворка Gin и GORM для взаимодействия с базой данных PostgreSQL. Frontend разработан с использованием современного стека Vue.js 3, Vite и Pinia, с полной поддержкой i18n- интернационализации. Система развёртывается через Docker Compose, включая в себя базы данных, сервер приложений и клиентскую часть.
Одной из ключевых особенностей проекта является интеграция внешнего микросервиса анализа PDF-книг, выполняющего автоматическое извлечение ключевых слов и структуры оглавления. Данный сервис стал основой для реализации интеллектуального помощника (helper-chat), предоставляющего пользователю расширенные возможности поиска: семантический подбор литературы, навигация по главам, уточнение тематики по содержанию. Таким образом, реализованная архитектура не только покрывает базовые потребности интернет-магазина, но и закладывает основу для интеллектуальных сценариев взаимодействия.
На всех этапах разработки соблюдались принципы надёжности, безопасности (аутентификация JWT, разграничение прав), удобства взаимодействия с интерфейсом, а также гибкости расширения. Все компоненты системы могут масштабироваться независимо, а открытые API-интерфейсы позволяют легко интегрировать внешние модули или мобильные клиенты.
Следующим естественным шагом развития проекта может стать создание мобильного приложения. В современных реалиях не каждый пользователь имеет доступ к компьютеру, однако почти у каждого есть смартфон. Реализация нативного или гибридного мобильного клиента (например, с использованием Flutter или React Native) позволит значительно расширить охват аудитории и сделать взаимодействие с платформой максимально доступным. При этом, благодаря модульной архитектуре и RESTful API, мобильный клиент может быть интегрирован в систему без значительных изменений в backend-части.
Подводя итог, можно отметить, что поставленные цели работы были успешно достигнуты. Проект представляет собой законченное веб-приложение с современной архитектурой, функциональной полнотой и перспективой для дальнейшего развития. Возможными направлениями расширения могут стать интеграция с платёжными шлюзами, мобильные клиенты, поддержка рекомендаций на основе пользовательских предпочтений, а также перенос интеллектуальных функций в облако с использованием более продвинутых языковых моделей.