{"id":24953338,"url":"https://github.com/codexparas/book-social-network-api","last_synced_at":"2025-03-28T19:45:54.671Z","repository":{"id":257285412,"uuid":"843234353","full_name":"CodexParas/book-social-network-api","owner":"CodexParas","description":"A Spring Boot 3 backend providing RESTful APIs for user management, book collections, and community interactions. Features include JWT authentication, email validation, and Docker support.","archived":false,"fork":false,"pushed_at":"2025-01-23T14:56:51.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T03:34:01.068Z","etag":null,"topics":[],"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/CodexParas.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-16T04:17:26.000Z","updated_at":"2025-01-23T14:56:54.000Z","dependencies_parsed_at":"2024-09-15T19:03:32.098Z","dependency_job_id":"98d6f7a5-682a-4c63-ba2c-708509f9042d","html_url":"https://github.com/CodexParas/book-social-network-api","commit_stats":null,"previous_names":["codexparas/book-social-network-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodexParas%2Fbook-social-network-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodexParas%2Fbook-social-network-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodexParas%2Fbook-social-network-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodexParas%2Fbook-social-network-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodexParas","download_url":"https://codeload.github.com/CodexParas/book-social-network-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246093097,"owners_count":20722395,"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":[],"created_at":"2025-02-03T03:34:31.811Z","updated_at":"2025-03-28T19:45:54.636Z","avatar_url":"https://github.com/CodexParas.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Book Social Network - API\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Technologies Used](#technologies-used)\n- [Learning Objectives](#learning-objectives)\n- [Getting Started](#getting-started)\n- [Contributors](#contributors)\n- [Acknowledgments](#acknowledgments)\n\n## Overview\n\nThe backend of the Book Social Network is built with Spring Boot 3 and provides RESTful APIs for managing user accounts,\nbook collections, and community interactions. It handles user registration, secure email validation, book management,\nand book borrowing/return functionality with an approval system for returns. The application ensures security using JWT\ntokens and adheres to best practices in REST API design.\n\n## Features\n\n- **User Registration**: Create a new user account.\n- **Email Validation**: Secure account activation via email.\n- **User Authentication**: Secure login using JWT tokens.\n- **Book Management**: Create, update, share, and archive books.\n- **Book Borrowing**: Verify availability and borrow books.\n- **Book Returning**: Return borrowed books.\n- **Book Return Approval**: Approve book returns.\n\n## Technologies Used\n\n- Spring Boot 3\n- Spring Security 6\n- JWT Token Authentication\n- Spring Data JPA\n- JSR-303 and Spring Validation\n- OpenAPI and Swagger UI Documentation\n- Docker\n- GitHub Actions\n- Keycloak\n\n## Learning Objectives\n\nBy working on this backend project, you will learn:\n\n- Designing class diagrams from business requirements.\n- Implementing JWT-based authentication with Spring Security.\n- User registration and account validation via email.\n- Utilizing inheritance with Spring Data JPA.\n- Implementing service layers and handling application exceptions.\n- Object validation using JSR-303 and Spring Validation.\n- Handling custom exceptions in a Spring Boot application.\n- Implementing pagination and adhering to REST API best practices.\n- Configuring Spring Profiles for different environments.\n- Documenting APIs with OpenAPI and Swagger UI.\n- Dockerizing the backend service.\n- Setting up a CI/CD pipeline with GitHub Actions.\n\n## Getting Started\n\n### Prerequisites\n\n- JDK 17 or higher\n- Maven 3.6+\n- Docker (optional for containerization)\n- PostgreSQL (or your preferred database)\n- Keycloak (for authentication)\n\n### Installation\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/CodexParas/book-social-network-api.git\n   cd book-social-network-api\n   ```\n\n2. **Set up the database:**\n\n   Configure your PostgreSQL database and update the `application.properties` or `application.yml` file with your\n   database credentials.\n\n3. **Run the application:**\n\n   ```bash\n   mvn spring-boot:run\n   ```\n\n4. **Access the API documentation:**\n\n   Once the application is running, you can access the API documentation at\n   `http://localhost:8080/api/v1/swagger-ui/index.html`.\n\n### Dockerization (Optional)\n\nTo run the application in a Docker container:\n\n1. **Build the Docker image:**\n\n   ```bash\n   docker build -t book-social-network-api .\n   ```\n\n2. **Run the Docker container:**\n\n   ```bash\n   docker run -p 8080:8080 book-social-network-api\n   ```\n\n## Contributors\n\n- [Paras Gupta](https://github.com/CodexParas)\n\n## Acknowledgments\n\nSpecial thanks to the developers and maintainers of the technologies used in this project.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodexparas%2Fbook-social-network-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodexparas%2Fbook-social-network-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodexparas%2Fbook-social-network-api/lists"}