{"id":15211226,"url":"https://github.com/androidlord/spring-blog-api","last_synced_at":"2026-01-24T20:53:16.315Z","repository":{"id":252798929,"uuid":"837971355","full_name":"AndroidLord/spring-blog-api","owner":"AndroidLord","description":"Spring Boot-powered Blog API with JWT authentication, CRUD operations for blogs and comments, and like/dislike functionality. Features include blog publishing/archiving, pagination, and PostgreSQL integration. Built using Spring JPA, Spring Security, and Lombok. ","archived":false,"fork":false,"pushed_at":"2024-08-12T15:00:05.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T04:11:16.872Z","etag":null,"topics":["java","spring-data-jpa","spring-mvc","spring-security","springboot","springframework"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndroidLord.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-08-04T15:24:06.000Z","updated_at":"2024-08-12T15:10:18.000Z","dependencies_parsed_at":"2024-08-13T09:01:42.664Z","dependency_job_id":null,"html_url":"https://github.com/AndroidLord/spring-blog-api","commit_stats":null,"previous_names":["androidlord/spring-blog-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidLord%2Fspring-blog-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidLord%2Fspring-blog-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidLord%2Fspring-blog-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidLord%2Fspring-blog-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndroidLord","download_url":"https://codeload.github.com/AndroidLord/spring-blog-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238874324,"owners_count":19545163,"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":["java","spring-data-jpa","spring-mvc","spring-security","springboot","springframework"],"created_at":"2024-09-28T08:21:16.219Z","updated_at":"2025-10-29T18:31:42.180Z","avatar_url":"https://github.com/AndroidLord.png","language":"Java","readme":"# Blog API Project Overview\n\nI developed a **Blog API** using **Spring Boot**, **Spring JPA**, **Lombok**, and **Spring Security** to provide a robust platform for managing blog content. The application includes user authentication and authorization using **JWT (JSON Web Tokens)** and implements CRUD operations on both blogs and comments, along with additional functionalities like publishing, archiving, liking, and disliking posts and comments. All features are integrated with **pagination** to manage data efficiently, and the database used is **PostgreSQL**.\n\n\n### **Brief Overview:**\n- **User Authentication:** Implemented secure authentication using JSON Web Tokens (JWT).\n- **Blog Management:** Users can create, read, update, and delete blog posts. Blogs can be published, archived, or retrieved based on status.\n- **Comment System:** Users can add, edit, delete, and view comments on blog posts.\n- **Interactions:** Users can like or dislike blogs and comments.\n- **Pagination:** Implemented pagination for efficiently handling large sets of blogs and comments.\n- **Database:** PostgreSQL is used as the database for storing all the data.\n\n\n## Key Features\n\n### 1. **User Authentication and Authorization**:\n   - Users can register and authenticate using JWT, which secures the API endpoints.\n   - Example API Paths:\n     - **Register User**: `POST http://localhost:8080/api/v1/auth/register`\n     - **Authenticate User**: `POST http://localhost:8080/api/v1/auth/authenticate`\n\n### 2. **Blog Management**:\n   - **Create, Read, Update, and Delete (CRUD)** operations are provided for blogs.\n   - Additional functionalities include:\n     - **Publish or Archive Blogs**: Blogs can be published or archived based on user actions.\n     - **Pagination**: All blog lists are paginated for better performance and user experience.\n   - Example API Paths:\n     - **Create Blog**: `POST http://localhost:8080/api/v1/blogs`\n     - **Get All Blogs**: `GET http://localhost:8080/api/v1/blogs`\n     - **Get Specific Blog by ID**: `GET http://localhost:8080/api/v1/blogs/{blog-id}`\n     - **Get Blogs by Owner**: `GET http://localhost:8080/api/v1/blogs/owner`\n     - **Get Archived Blogs**: `GET http://localhost:8080/api/v1/blogs/archived`\n     - **Update Blog**: `PUT http://localhost:8080/api/v1/blogs/{blog-id}`\n     - **Delete Blog**: `DELETE http://localhost:8080/api/v1/blogs/{blog-id}`\n\n### 3. **Comment Management**:\n   - Users can add, view, and delete comments on blog posts.\n   - Additional functionalities include:\n     - **Liking/Disliking Comments**: Users can express their opinions on comments.\n     - **Pagination**: Comment lists are paginated for easier navigation and management.\n   - Example API Paths:\n     - **Create Comment**: `POST http://localhost:8080/api/v1/blogs/{blog-id}/comments`\n     - **Get All Comments**: `GET http://localhost:8080/api/v1/blogs/{blog-id}/comments`\n\n### 4. **Like/Dislike Feature**:\n   - Users can like or dislike blogs and comments, providing interactive feedback mechanisms.\n   - Example API Paths:\n     - **Like Blog**: `POST http://localhost:8080/api/v1/blogs/{blog-id}/like`\n     - **Dislike Blog**: `DELETE http://localhost:8080/api/v1/blogs/{blog-id}/dislike`\n     - **Like Comment**: `POST http://localhost:8080/api/v1/blogs/{blog-id}/comments/{comment-id}/like`\n     - **Dislike Comment**: `DELETE http://localhost:8080/api/v1/blogs/{blog-id}/comments/{comment-id}/dislike`\n\n## Technical Stack\n\n- **Backend Framework**: Spring Boot\n- **Data Persistence**: Spring JPA (Java Persistence API)\n- **Security**: Spring Security with JWT for authentication and authorization\n- **Database**: PostgreSQL\n- **Utilities**: Lombok for reducing boilerplate code\n- **Pagination**: Implemented across various endpoints to manage large data sets efficiently\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroidlord%2Fspring-blog-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandroidlord%2Fspring-blog-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroidlord%2Fspring-blog-api/lists"}