An opinionated microservice framework built on ktor. The objective of KTP is to turn Ktor into a batteries-included framework for building microservices that includes dependency injection, configuration management, logging, metrics, health checks, debug tools, and more.
KTP libraries and Gradle plugins are available via JitPack:
https://jitpack.io/#lukelast/ktor-plus
// In your settings.gradle.kts
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}// If using libs.versions.toml
plugins { alias(libs.plugins.ktp) }
// Or directly
plugins { id("com.github.lukelast.ktor-plus") version "VERSION" }
dependencies {
// If using libs.versions.toml
implementation(libs.ktp.ktor)
testImplementation(libs.ktp.test)
// Or directly
implementation("com.github.lukelast.ktor-plus:ktp-ktor:VERSION")
testImplementation("com.github.lukelast.ktor-plus:ktp-test:VERSION")
}[versions]
ktp-version = "{{LATEST_VERSION}}"
[libraries]
ktp-ktor = { module = "com.github.lukelast.ktor-plus:ktp-ktor", version.ref = "ktp-version" }
ktp-test = { module = "com.github.lukelast.ktor-plus:ktp-test", version.ref = "ktp-version" }
[plugins]
ktp = { id = "com.github.lukelast.ktor-plus", version.ref = "ktp-version" }Core utilities with minimal dependencies, providing essential building blocks for KTP applications:
- Logging: Structured logging with
KtpLogand Google Cloud Run detection - Path Utilities: Path manipulation and file operations
- Hash Functions: Hashing utilities for strings and data
- Resource Loading: Loading resources from classpath
- String Extensions: Common string manipulation helpers
- Lazy Properties: Utilities for lazy initialization
- Enum Utilities: Helper functions for working with enums
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-core:VERSION")
Configuration management built on Typesafe Config with layered, environment-specific overrides:
- HOCON Format: Human-optimized configuration using HOCON syntax
- Priority-Based Layering: Files named
<priority>.<name>.<environment>.confwith configurable precedence - Environment Detection: Automatic detection via
KTP_ENV,ENV, or Kubernetes namespace - Secret Masking: Automatic sanitization of sensitive values in logs
- Environment Variables: Override any config value with
CONFIG_FORCE_prefix - HOCON Injection: Inject configuration via
KTP_CONFIGenvironment variable - Testing Support: Built-in helpers for unit and integration testing
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-config:VERSION")
Ktor-specific extensions and utilities for building production-ready microservices:
- Debug Endpoints: HTML index page, configuration viewer, GC logs, thread dumps, version info
- ConfigDebugInfoPlugin: Modern Ktor plugin with access control and configurable endpoints
- Health Checks: Built-in health endpoint for liveness/readiness probes
- Vite Frontend: Integration for serving Vite-built frontend applications
- KtpStart: Application startup utilities and configuration
- Default Plugins: Pre-configured Ktor plugins with sensible defaults
- MDC Clearing: Plugin for managing logging MDC context
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-ktor:VERSION")
Google Cloud Platform BOM and utilities for GCP integration:
- GCP BOM: Provides the Google Cloud Platform Bill of Materials for consistent dependency version management
- Project ID Detection: Get GCP project ID from application default credentials
- Cloud Run Detection: Detect if running on Google Cloud Run and access Cloud Run metadata
- Environment Detection: Check if running on any GCP platform
- Region Detection: Get GCP region from environment variables
- Metadata Utilities: Access Cloud Run service name, revision, and configuration
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-gcp:VERSION")
Firebase and Google Cloud Platform authentication for Ktor applications:
- Firebase Authentication: Verify Firebase ID tokens
- Role-Based Access Control: Protect routes with role requirements
- Debug Routes: Pre-configured authenticated debug endpoints
- GCP Integration: Seamless integration with Google Cloud services
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-gcp-auth:VERSION")
Google Cloud Firestore integration utilities:
- Google Cloud Firestore: Native Google Cloud Firestore client.
- Firebase Admin SDK: Support for Firebase Admin SDK.
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-gcp-firestore:VERSION")
Stripe payment integration utilities for Ktor applications:
- Stripe API integration helpers
- Payment processing utilities
- Webhook handling
Dependency: implementation("com.github.lukelast.ktor-plus:ktp-stripe:VERSION")
Testing utilities and helpers for KTP applications:
- Test configuration helpers
- Common test fixtures
- Testing utilities for Ktor applications
- Kotest integration
Dependency: testImplementation("com.github.lukelast.ktor-plus:ktp-test:VERSION")
- Test everything
./gradlew clean ktfmtFormat check
- Publish to your local maven repository for testing locally in another project.
./gradlew clean publishToMavenLocal
- Format code
./gradlew ktfmtFormat
- Update gradle
./gradlew wrapper --gradle-version latest
The ktp-gradle-plugins composite child project builds a Gradle plugin Jar with two plugins.
Plugin ID: com.github.lukelast.ktor-plus
This is a normal Gradle plugin and configures a project to follow the KTP Framework conventions.
Releases and versioning happen automatically for each commit to the main branch.