KE
kenan-karic/Atlas
Atlas backend demonstrates real world application example via RealWorld specs and API with Kotlin and Ktor
Atlas
Atlas is a Kotlin + Ktor backend demonstrating a RealWorld-compliant API with practical usage examples.
Getting Started
- Clone the repository
- Download and import the Postman collection for testing
- Run the project
The server starts on http://localhost:7003/api/ by default. You can change it in application.yaml.
Built With
- Kotlin – Programming language
- Ktor – Web framework
- Koin – Dependency injection
- KotlinX JSON – Serialization/Deserialization
- Java-jwt – JWT authentication
- HikariCP – Database connection pool
- H2 Database – Embedded database
- Exposed – SQL framework for Kotlin
- Slugify – Slug generation
- Swagger UI – API documentation UI
API Routes Overview
Users
- POST
/api/users– Register a new user - POST
/api/users/login– Authenticate and get access tokens - GET
/api/user– Get the current authenticated user - PUT
/api/user– Update current user profile
Profiles
- GET
/api/profiles/celeb_{USERNAME}– Get a user's profile (public info + follow status) - POST
/api/profiles/celeb_{USERNAME}/follow– Follow a user - DELETE
/api/profiles/celeb_{USERNAME}/follow– Unfollow a user
Articles
- POST
/api/articles– Create an article - GET
/api/articles/{slug}– Get a single article by slug - PUT
/api/articles/{slug}– Update an article - DELETE
/api/articles/{slug}– Delete an article - GET
/api/articles– List articles with optional filters (author, tag, favorited)
Comments
- POST
/api/articles/{slug}/comments– Add a comment to an article - DELETE
/api/articles/{slug}/comments/{commentId}– Delete a comment - GET
/api/articles/{slug}/comments– List comments for an article
Tags
- GET
/api/tags– Get all available tags
Project Structure
+ core/
+ config/ # Main module, server setup, plugins
+ di/ # Dependency injection
+ exceptions/ # Custom exceptions
+ extensions/ # Extensions and helpers
+ navigation/ # Route navigation
+ security/ # JWT & auth setup
+ features/
+ articles/ # Articles feature
+ data/ # Persistence & tables
+ domain/ # DTOs, contracts
+ presentation/ # Routes
+ comments/...
+ profiles/...
+ tags/...
+ users/...
- Application.kt # Entry point
Contributing
Contributions are welcome! Feel free to submit pull requests or open issues.
Contact
Kenan Karic – kenan.karic@outlook.com
License
On this page
Languages
Kotlin98.3%Shell1.7%
Contributors
Apache License 2.0
Created December 3, 2023
Updated November 28, 2025