Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

HackSample

Это учебный проект, основной целью которого является изучение Kotlin на практике через разработку серверного приложения с применением ООП, SOLID и принципов чистой архитектуры.

🛠 Технологии

  • Kotlin
  • Ktor
  • Gradle Kotlin DSL
  • kotlinx.serialization
  • PostgreSQL
  • Docker

📐 Архитектура

Основная идея проекта — строгое отделение бизнес-логики от HTTP, базы данных и других внешних компонентов.

Код разделён на несколько независимых слоёв. Структура директории src/main/kotlin/:

├── application/          # Сценарии использования приложения (Use Cases)
├── data/                 # Реализации источников данных (Репозитории, БД)
├── domain/               # Бизнес-модели, Value Objects и интерфейсы
├── presentation/         # HTTP DTO и представление данных (Контроллеры)
├── Main.kt               # Точка входа и composition root
├── Routing.kt            # Настройка эндпоинтов 
├── StatusPages.kt        # Настройка кастомных Exceptions
└── Serialization.kt      # Настройка сериализации

13.08.26

  • Заменил хранение исходного пароля в User на passwordHash.
  • Добавил PasswordHasher и BCryptPasswordHasher для отделения бизнес-логики от конкретной реализации хеширования.
  • Добавил Dockerfile для сборки и запуска Ktor backend в отдельном контейнере.
  • Добавил Docker Compose для совместного запуска backend и PostgreSQL.
  • Настроил передачу конфигурации через .env.
  • Создал DatabaseConfig, который отвечает за чтение и представление настроек подключения к БД.
  • Создал DatabaseFactory, отвечающий за создание подключения к PostgreSQL через Exposed/JDBC.
  • В результате удалось сохранить Main.kt как composition root: он только создаёт зависимости, связывает их и запускает приложение.

14.08.26 Сегодня был очень продуктивный день.

  • Исправил ошибки сборки и запуска backend в Docker.
  • Добавил описание таблицы пользователей UsersTable через Exposed.
  • Реализовал PostgresUserRepository для сохранения и получения пользователей из PostgreSQL.
  • Добавил UserMapper для преобразования данных Exposed (ResultRow) в domain-модель User.
  • Добавил уникальные email и username, а также отдельный неуникальный nickname.
  • Перешёл на kotlin.uuid.Uuid для идентификаторов пользователей.
  • Добавил тесты для Email и Username.
  • Начал integration-тестирование слоя базы данных с настоящим PostgreSQL через Testcontainers.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages