Skip to content

Overview

You write TypeScript or Go backends. You know git, Docker, and cloud services cold. You have zero Kotlin or Java experience — and you want to get productive on JVM backends fast. This course is built for exactly that.

It is example-driven: every concept has runnable code, and almost everything is shown three ways — the TypeScript way, the Go way, and the Kotlin way — so you map what you already know onto new syntax instead of starting from scratch.

  • You write TypeScript or Go backends professionally.
  • You know git, Docker, and cloud services well.
  • You have little or no Kotlin or Java experience.
  • You want to be productive on JVM backends quickly.

You need JDK 21, Docker, and an IDE (IntelliJ IDEA or VS Code with the Kotlin plugin). Module 01 walks through installing the toolchain in detail; the short version for the shared infrastructure is:

  1. Start all infrastructure (PostgreSQL, Redis, Kafka):

    Terminal window
    cd shared-infra && docker compose up -d
  2. Verify the services are running:

    Terminal window
    docker compose ps
  3. Tear everything down when you’re done:

    Terminal window
    docker compose down -v
ToolVersion
JDK21 (LTS)
Kotlin2.x
Gradle8.x (Kotlin DSL)
Spring Boot3.x
Ktor3.x
PostgreSQL16
Redis7
Kafka3.7 (KRaft)
ModuleYou build
Dev Environment & First ProjectA Gradle project from scratch, Docker toolchain
Kotlin Language EssentialsTypes, null safety, sealed classes — all with TS/Go comparisons
Collections, Sequences & FPData pipelines, lazy evaluation, scope functions
OOP, Generics & Java InteropA generic repository, Java library integration, design patterns
ModuleYou build
Coroutines & Structured ConcurrencyA concurrent HTTP fetcher, fan-out/fan-in pipelines
Flow & Reactive StreamsA real-time data pipeline, event processing system
ModuleYou build
Gradle Deep DiveA multi-module project, version catalogs, custom tasks
Spring Boot REST APIsA full CRUD API with DI, config profiles, actuator
Ktor Lightweight APIsThe same CRUD API in Ktor — compare both, pick your style
ModuleYou build
PostgreSQL AccessThe same queries in JDBC, JPA, Exposed, and jOOQ — compare all four
Redis & CachingCache-aside, write-through, pub/sub, rate limiting
Event-Driven with KafkaA producer/consumer pipeline, dead letter queue, event sourcing
ModuleYou build
TestingJUnit 5, MockK, Kotest, Testcontainers — unit through integration
Security & AuthJWT auth, OAuth2 with Keycloak, RBAC
API Design & SerializationREST + GraphQL + gRPC, OpenAPI docs, serialization
ObservabilityStructured logging, Prometheus metrics, distributed tracing
ModuleYou build
Advanced KotlinA custom DSL, delegation, inline/reified functions, KSP
Deployment & ProductionDocker multi-stage, GraalVM native image, K8s manifests, CI/CD
ModuleYou build
Compose MultiplatformA desktop/web UI — React concepts mapped to Compose
Capstone: Notification ServiceA full microservice: API + DB + Cache + Kafka + Auth + Tests + Deploy

Pick a path based on your goal — modules are referenced by number.

Get productive fast (7 modules)

01 → 02 → 05 → 08 → 10 → 13 → 18

Complete backend (19 modules)

01 → 02 → 03 → 04 → 05 → 06 → 07 → 08 → 09 → 10 → 11 → 12 → 13 → 14 → 15 → 16 → 17 → 18 → 20

Fullstack — the complete backend path, plus module 19.

Spring Boot focus

01 → 02 → 05 → 07 → 08 → 10 → 13 → 14 → 18

Ktor focus

01 → 02 → 05 → 07 → 09 → 10 → 13 → 18

Each module is a lesson plus one or more hands-on exercises. Every exercise is a self-contained Gradle project with a worked solution:

  • Directorymodule-name/
    • the lesson content + side-by-side code examples
    • Directoryexercises/
      • Directoryproject-name/
        • build.gradle.kts
        • settings.gradle.kts
        • docker-compose.yml if the exercise needs infrastructure
        • Directorysrc/

Building and running any exercise is the same Gradle dance:

Terminal window
./gradlew build
./gradlew run

Tear down any module-specific Docker services with docker compose down -v.

All modules share one Docker Compose stack under shared-infra/:

ServicePortCredentials
PostgreSQL5432dev / dev / kotlin_course
Redis6379no auth
Kafka29092no auth
Kafka UI8090browser
Terminal window
# Start everything
cd shared-infra && docker compose up -d
# Stop and wipe all data
docker compose down -v

Ready? Start with Dev Environment & First Project.