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
Managing dynamic portfolio content and blog articles through a static frontend is unsustainable — any update requires redeployment. The challenge was building a robust, secure, and performant REST API backend from scratch that could power a personal portfolio and blog platform entirely through API calls, with no frontend redeployment needed.
The core technical hurdles included selecting a non-Node.js stack (Kotlin/Ktor) to push beyond familiar territory, designing a modular architecture across multiple functional domains (authentication, portfolio management, blog system, media handling), securing all write operations with JWT while keeping read endpoints public, and integrating cloud media delivery via ImageKit.
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 Profile, Experience, Education, Projects, Skills, and Certifications
- Designed relational data models using JetBrains Exposed ORM backed by PostgreSQL
- Configured HikariCP for efficient database connection pooling
- Integrated Ehcache caching strategy to ensure fast API response times
Blog System
- Developed article management with draft/published status support and markdown/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, ready for deployment on Cloud Run, AWS ECS, or similar platforms
- 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
Delivered a fully architected, production-ready backend service that decouples content management entirely from the frontend. All portfolio and blog content can be created, updated, and published through secure API calls without any redeployment. The system is containerized, performant through caching, and built with a clean modular architecture — with a clear roadmap for future enhancements including S3/R2 media migration, i18n support, and RSS feed generation.
Github: github.com/sunmorphy/backtor
