Авторы: Баженов Матвей, Смольникова Дарья, Яковлева Миланья
WorldTravel — сервис для планирования путешествий, объединяющий поиск транспортных билетов и достопримечательностей. Пользователи регистрируются, указывают параметры поездки (город отправления, город прибытия, дату, бюджет), после чего получают доступные варианты билетов и списки популярных мест в городе назначения. Найденные предложения можно сохранять в личном кабинете для дальнейшего использования. Это десктопное приложение для планирования путешествий, разработанное на C++.
GUI-фреймворк: wxWidgets (кроссплатформенная библиотека для создания нативных интерфейсов).
Дополнительные библиотеки:
- nlohmann/json для обработки JSON-данных
- wxHTTP для сетевых запросов к бэкенду
Ключевые компоненты userver в проекте:
-
Клиенты для внешних сервисов
- HTTP-клиент
-
PostgreSQL
-
Конфигурация и компоненты
- Компоненты — http-handler
- Secdist ('userver/storages/secdist') — безопасное хранение чувствительных данных
- Генерация UUID — создание уникальных ключей
- HTTP-обработчики
-
Тестирование
- Интеграционные тесты (
testsuite/...) — тестирование взаимодействия компонентов, работа с реальной БД, использование мок-серверов
- Интеграционные тесты (
-
Используемые типы файлов
- JSON — парсинг/сериализация через
formats::json - YAML — для конфигов
- JSON — парсинг/сериализация через
- Склонируйте репозиторий:
git clone https://github.com/MatveyBazhenov/WorldTravel
- Перейдите в директорию server и выполните команду
При сборке могут понадобиться дополнительные библиотеки — фреймворк укажет, какие именно.
make build-debug
- Создайте симлинк на файл compile_commands.json:
ln -s build-debug/compile_commands.json
- Заупстите сервер командой
make start-debug
- Если выполнены все шаги (включая создание симлинка), тесты можно запустить командой
make start-debug
- Тесты проверяют функционал сервера и его endpoint’ов:
- Запись в базу данных
- Чтение из базы данных
- Обработку ошибок
- Проверяет работу с внешним API (с помощью мок-сервера)
- Есть асинхронные тесты, по которым можно понять время обработки большого количества запросов сервером
-
Перейдите в директорию:
cd ../ui -
Сборка:
mkdir build && cd build cmake .. make
-
Запуск:
./MyExecutable

