Features How It Works ORM Support Security Docs ...
Open Source · Kotlin + Ktor

Admin panels, automated.

Annotate your database entities. KtorAdmin generates a complete, production-ready admin panel with CRUD, search, filtering, file uploads, and dashboards — at compile time.

Users.kt
@ExposedTable("users")
object Users : IntIdTable() {
    val name = varchar("name", 128)
    val email = varchar("email", 255).uniqueIndex()
    val role = enumerationByName("role", 32)
    @S3Upload
    val avatar = varchar("avatar", 512)
        .nullable()
}

// That's it. KtorAdmin generates the full admin panel.
// Dashboard, CRUD, search, filters, file uploads — all included.

Everything you need.
Nothing you don't.

A complete admin panel framework that handles the heavy lifting so you can focus on your product.

Compile-Time Generation

KSP annotation processors generate admin panel metadata at compile time. No runtime reflection overhead on your schema.

🔍

Auto-Discovery

Annotate your entities and KtorAdmin handles the rest — CRUD views, search, filtering, pagination, and data export.

📊

Rich Dashboards

Build data-driven dashboards with Chart.js integration. SUM, AVERAGE, COUNT aggregations and multiple chart types.

📂

File Management

Local and AWS S3 storage with thumbnail generation, MIME validation, file previews, and configurable delete strategies.

📝

Data Export

Export your data to CSV and styled PDF documents with one click. Customizable headers, formatting, and layouts.

🌐

i18n Support

Full localization system with English and Persian built-in. RTL layout support and 80+ translation keys out of the box.

Three steps to your admin panel

From zero to a fully functional admin interface in minutes, not days.

01

Install the plugin

Add KtorAdmin to your Ktor application with a simple install block. Configure authentication, templates, and storage providers using the DSL.

02

Annotate your entities

Add a single annotation to your Exposed tables, Hibernate entities, or MongoDB collections. Use 30+ annotations for fine-grained control over display, validation, and relationships.

03

Launch your admin

Run your application and access your admin panel at /admin. Complete CRUD, dashboards, data export, and audit logging ready to use.

One panel. Every database.

The only Ktor admin panel that simultaneously supports SQL and NoSQL databases in a unified interface.

JetBrains Exposed

Type-safe SQL with Kotlin DSL. Full support for tables, relations, and custom column types.

Hibernate ORM

JPA entities with annotations. Works with @Entity, @ManyToOne, @ManyToMany and all JPA relationships.

MongoDB

Document-based NoSQL with the official Kotlin coroutine driver. Schema-flexible collections with full admin support.

Beautiful dashboards, built in

Grid-based dashboard system with aggregation functions, Chart.js charts, and responsive layouts.

localhost:8080/admin/dashboard
Total Users
2,847
+12.5% this month
Revenue
$48.2K
+8.1% this month
Active Tasks
342
-3.2% this month
Uptime
99.9%
+0.1% this month
Monthly Overview
Distribution

Production-grade, out of the box

Built with security best practices from day one. Not an afterthought.

🔒

CSRF Protection

Automatic CSRF token generation and validation with configurable token expiration for all form submissions.

🛡

Encrypted Sessions

AES-encrypted session tokens via CryptoManager. Configurable session age and secure cookie handling.

Rate Limiting

Per-user rate limiting with configurable requests/minute. Protects against brute force and abuse.

👥

Role-Based Access

Fine-grained RBAC with @AccessRoles annotations. Control who can view, create, edit, and delete each entity.

Built to be extended

Every aspect of KtorAdmin is pluggable. Customize it to fit your exact needs.

Custom Templates

Ships with a Fluent UI theme and a default template. Build your own with the AdminTemplate interface using Velocity or any rendering engine.

Event System

Hook into INSERT, UPDATE, and DELETE events with AdminEventListener. Build audit logs, notifications, or custom side effects.

Custom Actions

Define bulk actions that operate on selected rows. Run custom business logic on multiple records at once.

Custom Pages

Register standalone admin pages via DSL or class-based routes. Extend your admin beyond CRUD with custom views.

Value Mappers

Transform data before display and save. Map database values to human-readable labels or computed representations.

Storage Providers

Abstract file storage behind the StorageProvider interface. Ships with local and S3; bring your own.

Built on modern foundations

Kotlin Ktor 3 KSP KotlinPoet Exposed Hibernate MongoDB HikariCP Velocity Chart.js AWS S3 iText PDF PostgreSQL H2 Database kotlinx.serialization Gradle

Ready to automate
your admin panel?

Join the Kotlin/Ktor ecosystem. Open source, production-ready, and free to use.