{"id":19335055,"url":"https://github.com/mewebstudio/kotlin-spring-boot-blog-api","last_synced_at":"2026-05-08T00:31:55.468Z","repository":{"id":261483264,"uuid":"884445231","full_name":"mewebstudio/kotlin-spring-boot-blog-api","owner":"mewebstudio","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-28T07:24:46.000Z","size":159,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T07:48:57.753Z","etag":null,"topics":["blog","blog-api","blogging","kotlin","spring","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mewebstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-06T19:06:09.000Z","updated_at":"2025-02-03T11:38:23.000Z","dependencies_parsed_at":"2024-12-01T07:10:25.780Z","dependency_job_id":null,"html_url":"https://github.com/mewebstudio/kotlin-spring-boot-blog-api","commit_stats":null,"previous_names":["mewebstudio/kotlin-spring-boot-blog-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mewebstudio/kotlin-spring-boot-blog-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewebstudio%2Fkotlin-spring-boot-blog-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewebstudio%2Fkotlin-spring-boot-blog-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewebstudio%2Fkotlin-spring-boot-blog-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewebstudio%2Fkotlin-spring-boot-blog-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mewebstudio","download_url":"https://codeload.github.com/mewebstudio/kotlin-spring-boot-blog-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewebstudio%2Fkotlin-spring-boot-blog-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266267286,"owners_count":23902334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","blog-api","blogging","kotlin","spring","spring-boot"],"created_at":"2024-11-10T03:04:43.373Z","updated_at":"2026-05-08T00:31:50.446Z","avatar_url":"https://github.com/mewebstudio.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot 3 (Kotlin) - Blog API\n\nThis project is a sample Blog API developed with Spring Boot 3 and Kotlin. It allows users to create, update, delete,\nand list blog posts. The API is designed following RESTful principles and includes user management, authentication, and\nsecure token storage.\n\n![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge\u0026logo=spring\u0026logoColor=white)\n![Kotlin](https://img.shields.io/badge/kotlin-%237F52FF.svg?style=for-the-badge\u0026logo=kotlin\u0026logoColor=white)\n![Apache Maven](https://img.shields.io/badge/Apache%20Maven-C71A36?style=for-the-badge\u0026logo=Apache%20Maven\u0026logoColor=white)\n![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![Redis](https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge\u0026logo=swagger\u0026logoColor=white)\n![Postman](https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge\u0026logo=postman\u0026logoColor=white)\n\n### Features\n\n- **CRUD Operations**: Create, Read, Update, Delete operations for blog posts and users.\n- **Authentication \u0026 Authorization**: Ensures users can log in and perform actions based on their permissions.\n- **JWT Token Storage**: Secure storage of JWT tokens in Redis for efficient session management.\n- **PostgreSQL Database**: Uses PostgreSQL as the primary database for persistent data storage.\n- **DTO \u0026 Mapping**: Uses Data Transfer Objects (DTOs) for efficient data transfer and mapping between entities.\n- **Exception Handling**: Provides user-friendly error messages and comprehensive error handling.\n- **Validation**: Ensures secure API usage with data validation.\n\n### Requirements\n\n- **Java 21 or higher**\n- **Kotlin**: Project is written in Kotlin alongside Spring Boot.\n- **Maven**: Used to manage project dependencies.\n- **PostgreSQL**: Required as the primary database for storing application data.\n- **Redis**: Used for storing JWT tokens securely and efficiently.\n- **Docker \u0026 Docker Compose**: To run the application and its dependencies as containers.\n\n### Roadmap\n\n- [X] **Authentication**\n    - Implement JWT-based authentication.\n    - Add role-based authorization for users (e.g., admin, user).\n\n- [X] **Registration \u0026 Login**\n    - Create endpoints for user registration and login.\n    - Implement password hashing and salting for secure storage.\n\n- [X] **Password Reset**\n    - Create endpoints for password reset.\n    - Add email notifications for password reset requests.\n\n- [X] **User Management**\n    - Create endpoints for user registration and profile management.\n    - Add user roles and permissions.\n\n- [X] **Category Management**\n    - Implement CRUD operations for categories.\n    - Allow categorization of posts.\n\n- [X] **Tag Management**\n    - Implement CRUD operations for tags.\n    - Enable tagging posts with multiple tags.\n\n- [ ] **Post Management**\n    - Create, update, delete, and view posts.\n    - Add support for rich text formatting in posts.\n    - Integrate posts with categories and tags.\n\n- [ ] **Comment Management**\n    - Implement CRUD operations for comments on posts.\n    - Add moderation features for comments (e.g., approve, delete).\n\n- [ ] **Application Settings Management**\n    - Create endpoints to manage application settings (e.g., site title, SEO settings).\n    - Add support for configurable project settings through the API.\n\n### Swagger Documentation\n\nOnce the application is running, you can access the Swagger UI for API documentation at:\n[http://localhost:8080/swagger-ui](http://localhost:8080/swagger-ui)\n\n### Postman Collection\n\nA Postman collection is available in the repository to simplify testing the API. Import the collection from:\n\n```\nsrc/main/resources/Blog API.postman_collection.json\n```\n\n## Run with Docker Compose\n\nTo start the application along with PostgreSQL and Redis, you can use Docker Compose:\n\n```bash\ndocker-compose up --build -d\n```\n\n## Run with standalone PostgreSQL and Redis\n\n### Install dependencies\n\n```bash\nmvn clean install\n```\n\n### Run project\n\n```bash\nmvn spring-boot:run \n```\n\n### Build project\n\n```bash\nmvn clean package\n```\n\n### License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewebstudio%2Fkotlin-spring-boot-blog-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmewebstudio%2Fkotlin-spring-boot-blog-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewebstudio%2Fkotlin-spring-boot-blog-api/lists"}