Skip to content

HutsonR/Area_backend

Repository files navigation

Area Backend

Проект представляет собой backend-сервис, написанный на Kotlin с использованием Ktor. Он предоставляет REST API для работы с турами, местами, историями и AR объектами. Для доступа к базе данных используется Exposed, таблицы определены через UUIDTable, а миграции – Flyway (или ручное управление через SQL).


API Endpoints:

🔐 Аутентификация

  • POST /auth/register — регистрация нового пользователя. Пароль передаётся в зашифрованном виде, возвращается токен.
  • POST /auth/login — вход пользователя. Пароль также зашифрован, в ответ — токен.

🔑 Шифрование

  • GET /encryption/publicKey — получить публичный RSA-ключ для шифрования пароля на клиенте.

🗺️ Туры

  • GET /tours — получить список туров (опционально с параметром limit).
  • GET /tours/{id} — получить детальную информацию о туре, включая связанные истории.
  • POST /tours/{id}/start — начать прохождение тура.
  • POST /tours/{id}/finish — завершить прохождение тура.

🏛️ AR-объекты

  • POST /tours/ar/{arObjectId}/scan — отсканировать AR-объект (добавление в прогресс пользователя).

📖 Истории (в рамках тура)

  • POST /tours/histories/{historyId}/complete — пометить историю как пройденную пользователем.

📍 Места

  • GET /places — получить список мест (опционально с параметром limit).
  • GET /places/{id} — получить информацию о конкретном месте.

📊 Статистика

  • GET /stats — получить пользовательскую статистику прохождений.

🔈 Озвучка (TTS)

  • POST /tts — получить аудио озвучку текста истории в формате audio/wav.

База данных:

Используется PostgreSQL. Таблицы создаются через Exposed:

  • tours (таблица туров)
  • histories (истории, с внешним ключом на tours)
  • places (достопримечательности)
  • users (пользователи)
  • 4 доп таблицы для отслеживания прогресса пользователя Подключение настраивается через YAML-конфиг

Миграции:

Flyway используется для миграций. Скрипты-модели миграций (например, добавление нового поля) храните в src/main/resources/db/migration. При старте вызывается Flyway.migrate() и выполняется миграция только для новых скриптов.

Логирование:

Логирование организовано с помощью Kotlin Logging и записи в локальный файл.


Структура проекта (not actual)

AreaBackend/
├── routes/           // Определение HTTP-маршрутов (Ktor routes)
├── data/
│   ├── db/           // Таблицы (Exposed) и DatabaseFactory (инициализация базы, миграций)
│   └── models /      // Request models
│   └── service/      // Обертки над репозиториями для доп проверок
│   └── utils/        // Реализации и интерфейсы репозиториев
│   └── repository/   // Реализации и интерфейсы репозиториев
├── utils/            // Настройка шифрования, логирования и тд
├── models/           // Data классы
└── Application.kt    // Точка входа (Ktor EngineMain)

Зависимости

  • Ktor
  • Exposed
  • PostgreSQL JDBC Driver (org.postgresql:postgresql)
  • Flyway
  • Kotlin Logging (io.github.microutils:kotlin-logging)
  • Client (io.ktor:ktor-client-core)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages