Проект представлен в виде сервиса для сокращения ссылок, развернутого на облачном хостинге. Ознакомиться с прототипом можно по ссылке http://linktamer.xyz
В рамках работы было задействовано множество современных технологий. Среди них:
- Oatpp - C++ фреймворк для создания REST API со Swagger документацией и ORM
- Svelte - JavaScript фреймворк-компилятор для создания интерактивных веб-приложений
- Docker - контейнеризация приложения для кросс-платформенности и упрощения запуска
- Установить фреймворки
- Изучить документацию
- Создать backend приложения
- Создать frontend приложения
- Соединить обе части
- Обернуть проект в Docker контейнеры
Сервис должен позволять быстро сокращать ссылки и сохранять всю информацию в базе данных. На стороне frontend должно быть реализовано два окна. Первое позволит сокращать ссылки и будет отображать историю пользователя. Второе будет загружать полные ссылки и производить переход по ним. На стороне backend будет создано несколько endpoint API и документация к ним на Swagger UI. Вся информация будет сохраняться в базе данных Sqlite3.
Для запуска необходимо иметь Docker и Docker Compose. Далее внутри папки проекта, где находится файл docker-compose.yml прописать в командной строке
$: docker-compose up --build
Установить NodeJS, убедиться, что путь до npm указан в переменной среды Path. В папке frontend выполнить команды:
$: npm install
$: npm run build
Результат компиляции будет лежать в папке public/build, для запуска используется index.html
Установить зависимости С++, используя utils/install-oatpp-modules.sh или vcpkg Необходимые модули:
Запустить скрипт utils/install-oatpp-modules.sh, все нужные модули установятся и соберутся автоматически
Выполнить следующие команды в папке, где будет установлен vcpkg
$: git clone https://github.com/microsoft/vcpkg
$: vcpkg\bootstrap-vcpkg.bat
Установить нужные библиотеки
$: vcpkg install oatpp
$: vcpkg install oatpp-sqlite
$: vcpkg install oatpp-swagger
После установки необходимо включить интеграцию в сборку
$: vcpkg integrate install
В консоли отобразится подсказка. В дальнейшем нужно использовать переменную -DCMAKE_TOOLCHAIN_FILE с местом расположения установленных библиотек при сборке проекта.
- Frontend: http://linktamer.xyz
- Backend: http://linktamer.xyz:8000
- Swagger: http://linktamer.xyz:8000/swagger/ui
- Добавить Traefik для поддержки https подключений
- Оптимизировать backend контейнер