Annotate your database entities. KtorAdmin generates a complete, production-ready admin panel with CRUD, search, filtering, file uploads, and dashboards — at compile time.
@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.
A complete admin panel framework that handles the heavy lifting so you can focus on your product.
KSP annotation processors generate admin panel metadata at compile time. No runtime reflection overhead on your schema.
Annotate your entities and KtorAdmin handles the rest — CRUD views, search, filtering, pagination, and data export.
Build data-driven dashboards with Chart.js integration. SUM, AVERAGE, COUNT aggregations and multiple chart types.
Local and AWS S3 storage with thumbnail generation, MIME validation, file previews, and configurable delete strategies.
Export your data to CSV and styled PDF documents with one click. Customizable headers, formatting, and layouts.
Full localization system with English and Persian built-in. RTL layout support and 80+ translation keys out of the box.
From zero to a fully functional admin interface in minutes, not days.
Add KtorAdmin to your Ktor application with a simple install block. Configure authentication, templates, and storage providers using the DSL.
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.
Run your application and access your admin panel at /admin. Complete CRUD, dashboards, data
export, and audit logging ready to use.
The only Ktor admin panel that simultaneously supports SQL and NoSQL databases in a unified interface.
Type-safe SQL with Kotlin DSL. Full support for tables, relations, and custom column types.
JPA entities with annotations. Works with @Entity, @ManyToOne,
@ManyToMany and all JPA relationships.
Document-based NoSQL with the official Kotlin coroutine driver. Schema-flexible collections with full admin support.
Grid-based dashboard system with aggregation functions, Chart.js charts, and responsive layouts.
Built with security best practices from day one. Not an afterthought.
Automatic CSRF token generation and validation with configurable token expiration for all form submissions.
AES-encrypted session tokens via CryptoManager. Configurable session age and secure cookie
handling.
Per-user rate limiting with configurable requests/minute. Protects against brute force and abuse.
Fine-grained RBAC with @AccessRoles annotations. Control who can view, create, edit, and
delete each entity.
Every aspect of KtorAdmin is pluggable. Customize it to fit your exact needs.
Ships with a Fluent UI theme and a default template. Build your own with the AdminTemplate
interface using Velocity or any rendering engine.
Hook into INSERT, UPDATE, and DELETE events with AdminEventListener. Build audit logs,
notifications, or custom side effects.
Define bulk actions that operate on selected rows. Run custom business logic on multiple records at once.
Register standalone admin pages via DSL or class-based routes. Extend your admin beyond CRUD with custom views.
Transform data before display and save. Map database values to human-readable labels or computed representations.
Abstract file storage behind the StorageProvider interface. Ships with local and S3; bring
your own.
Join the Kotlin/Ktor ecosystem. Open source, production-ready, and free to use.