Microservices — Ktor Workers

Five Kotlin microservices built with Ktor 3.4.1 and Koin, plus a shared common module. Their job: consume alert messages from Redis Streams, deliver notifications through external providers, and report status back to the Spring backend.

┌────────────────── Redis Streams ──────────────────┐
│  alerts.discord.v1  alerts.email.v1  alerts.telegram.v1  │
└───────┬──────────────┬──────────────────┬─────────┘
        ↓              ↓                  ↓
   ms-discord     ms-email          ms-telegram
     (8082)        (8084)             (8083)
        │              │                  │
        └──── screenshot request ─────────┘
                       ↓
                 ms-playwright (8080)
                       ↓
                 ms-cloudinary (8085)

Sections

PageWhat it covers
architectureMulti-module Gradle project, common module, Koin DI, code documentation guidelines
redis-stream-consumerRedisStreamConsumer base class: poll loop, retry, semaphore, callbacks
ms-discordJDA bot, slash commands (/events, /login), alert delivery via embeds
ms-emailGmail OAuth2, Thymeleaf templates, Redis token caching
ms-telegramBot polling — what’s wired, what’s placeholder
ms-playwrightHeadless Chromium screenshots, Thymeleaf card rendering
ms-cloudinaryCloudinary SDK, idempotent uploads, artifact lookup