Backtor
A high-performance backend service built with Kotlin and Ktor, serving as the data and business logic layer for a personal portfolio and blogging platform, featuring JWT authentication, caching, and ImageKit media integration.

The Challenge
The challenge was deliberately stepping outside of familiar territory to learn backend development on the JVM. The goal was to understand how a production-grade backend is structured from first principles, choosing Ktor specifically to leverage existing Kotlin knowledge while exploring an entirely different ecosystem like server-side routing, ORM-based database access, connection pooling, caching strategies, and containerization.
The learning challenge included getting comfortable with Ktor's plugin-based architecture, understanding how JetBrains Exposed ORM models relational data differently from Sequelize or Room, setting up JWT authentication flows from scratch, and wiring everything together into a clean, modular codebase that mirrors real-world backend engineering standards.
My Role
As the sole developer, I designed and built the entire backend system end-to-end.
Authentication & Security
- Implemented JWT-based login endpoint issuing authenticated session tokens
- Secured all administrative routes (POST, PUT, DELETE) with JWT bearer token validation
- Applied secure password hashing using Commons Codec
Portfolio Management API
- Built full CRUD endpoints for portfolio needs
- Designed relational data models using JetBrains Exposed ORM backed by PostgreSQL
- Configured HikariCP for efficient database connection pooling
- Integrated Ehcache caching strategy
Blog System
- Developed article management with draft support and rich text compatibility
- Built comment and tag management endpoints for article categorization and moderation
Media & Infrastructure
- Integrated ImageKit Java SDK for uploading, optimizing, and delivering responsive media assets
- Configured the application for Docker containerization
- Set up Logback for structured application logging and Ktor StatusPages for standardized JSON error responses
Tech Stack: Kotlin, Ktor (Netty), PostgreSQL, JetBrains Exposed, HikariCP, Ehcache, JWT, ImageKit, Docker, Logback
The Outcome
Gained hands-on fluency in JVM backend development, understanding how Ktor's plugin system works, how JetBrains Exposed ORM handles relational data at both the DSL and DAO levels, and how to structure a real-world backend with proper separation between routing, services, and data access layers. The project deepened practical knowledge of JWT authentication flows, connection pooling with HikariCP, caching with Ehcache, and Docker containerization, all concepts that translate directly into professional backend engineering across any stack.
