Аннотация 2
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ 3
ВВЕДЕНИЕ 4
1 Анализ требований 6
1.1 Анализ конкурентов 6
1.2 Социологический опрос 6
1.3 Функциональные требования 8
1.4 Нефункциональные требования 9
1.5 Варианты использования 10
1.6 Модель предметной области 13
2 Проектирование приложения 17
2.1 Стек разработки 17
2.2 Архитектура приложения 17
3 Реализация приложения 20
3.1 Хранение данных 20
3.2 Реализация базы данных 23
3.3 Система миграций базы данных 27
3.4 Аутентификация и верификация пользователя по SMS 29
3.5 Чат для общения 30
3.6 Воспоминания из поездок 31
3.7 Получение чек-листа 33
3.8 Составление варианта туристической поездки 33
3.9 JSON Web Token 36
3.10 Кэширование данных 37
3.11 Логирование в серверном приложении 38
3.12 Планирование задач 39
3.13 Мониторинг работы приложения 40
3.14 Эндпоинты 41
ЗАКЛЮЧЕНИЕ 48
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 49
Организация поездки или путешествия представляет из себя многоэтапный процесс, который включает в себя не только выбор направления и бронирование транспорта или жилья, но и тщательное планирование самого маршрута, прогнозирование затрат, подготовку необходимых вещей, а также учёт индивидуальных предпочтений и ограничений путешественника. Каждая из этих составляющих требует значительных временных затрат, погружения в большое количество разрозненной информации (транспортные расписания, описания достопримечательностей, отзывы других путешественников и т. д.) и зачастую приводит к стрессу и неоптимальным решениям.
Одним из ключевых элементов успешного и комфортного путешествия является продуманный маршрут - последовательность посещения точек интереса, рассчитываемая с учётом географического положения, времени работы объектов, длительности переездов и личных предпочтений пользователя. Без автоматизированного инструмента маршрутизации человек вынужден либо довольствоваться шаблонными туристическими путеводителями, лишёнными гибкости, либо тратить часы на самостоятельный сбор данных, что снижает удовольствие от подготовки и может привести к логистическим накладкам во время поездки.
В современных мобильных и веб-приложениях постепенно появляются решения, облегчающие выбор отелей и покупку билетов, однако рынок по-прежнему испытывает дефицит сервисов, способных автоматически генерировать оптимальные маршруты с учётом индивидуальных интересов, времени в пути, режима работы объектов и личного бюджета, а также помогать пользователю в подготовке к поездке - например, напоминать о необходимых вещах в багаже.
В связи с отсутствием подобных сервисов на рынке, была сформулирована основная цель данной работы:
Цель - разработать серверное приложение для составления путешествия.
Задачи:
1. Анализ требований. Сбор и систематизация функциональных и нефункциональных требований к приложению. Определение ключевых вариантов использования.
2. Выбор и интеграция внешних компонентов. Исследование и отбор библиотек и сторонних API, необходимых для реализации функций приложения.
3. Проектирование архитектуры. Разработка высокоуровневой структуры серверного приложения.
4. Проектирование базы данных. Разработка схемы хранения данных на основе сущностей и связей предметной области.
5. Реализация приложения. Непосредственная реализация спроектированного приложения.
В данной работе представлено детальное описание всех этапов разработки.
Планирование поездки - это всегда непростой процесс, требующий не только времени, но и немалых усилий. Одной из ключевых его составляющих является составление маршрута, позволяющего охватить все интересующие места и достопримечательности. В рамках данной работы было создано приложение, разработанное специально для того, чтобы упростить этот этап и помочь пользователю не только с планированием маршрута, но и с организацией сбора багажа. С его помощью можно формировать маршруты, опираясь на личные предпочтения, что позволяет значительно сэкономить время и силы при подготовке к путешествию.
Все задачи были успешно выполнены. Особое внимание уделено проектированию архитектуры, выбору технологий, масштабируемости и надёжности.
Разработанное серверное решение значительно упрощает организацию поездок. В будущем приложение может быть доработано с учётом пользовательских отзывов и изменения рыночных условий. Таким образом, работа демонстрирует потенциал платформы и её готовность к дальнейшему развитию.