BookNest is a vibrant social media platform designed for authors and book enthusiasts. Whether you're an aspiring writer, a seasoned author, or simply a lover of literature, BookNest provides a community where you can connect, share, and discover new books. Dive into a world of stories, engage with fellow book lovers, and let your passion for reading flourish. It offers features such as user registration, secure email validation, book management (including creation, updating, sharing, and archiving), book borrowing with checks for availability, book return functionality, and approval of book returns. The application ensures security using JWT tokens and adheres to best practices in REST API design. The backend is built with Java 21, Spring Boot 3.3.1 and Spring Security 6, while the frontend is developed using Angular with Bootstrap for styling.
- User Registration: Users can register for a new account.
- Email Validation: Accounts are activated using secure email validation codes.
- User Authentication: Existing users can log in to their accounts securely.
- Book Management: Users can create, update, share, and archive their books.
- Book Borrowing: Implements necessary checks to determine if a book is borrowable.
- Book Returning: Users can return borrowed books.
- Book Return Approval: Functionality to approve book returns.
- Java 21
- Spring Boot 3.3.1
- Spring Security 6
- JWT Token Authentication
- Spring Data JPA
- JSR-303 and Spring Validation
- OpenAPI and Swagger UI Documentation
- Docker
- GitHub Actions
- Keycloak
- Angular
- Component-Based Architecture
- Lazy Loading
- Authentication Guard
- OpenAPI Generator for Angular
- Bootstrap
this project helps in:
- Designing a class diagram from business requirements
- Implementing a mono repo approach
- Securing an application using JWT tokens with Spring Security
- Registering users and validating accounts via email
- Utilizing inheritance with Spring Data JPA
- Implementing the service layer and handling application exceptions
- Object validation using JSR-303 and Spring Validation
- Handling custom exceptions
- Implementing pagination and REST API best practices
- Using Spring Profiles for environment-specific configurations
- Documenting APIs using OpenAPI and Swagger UI
- Implementing business requirements and handling business exceptions
- Dockerizing the infrastructure
- CI/CD pipeline & deployment
To get started with the BookNest project, follow the setup instructions in the respective directories:
- [Backend Setup Instructions]
This document provides instructions for setting up the backend of the BookNest project. Follow the steps below to get the backend up and running.
- Docker
- Maven (for building the project)
-
Clone the Repository
Start by cloning the repository to your local machine:
git clone https://github.com/surajsajwan00/BookNest.git
-
Run Docker Compose
Navigate to the root directory of the project and run Docker Compose to set up the required containers:
docker-compose up -d
-
Navigate to the book-social-network directory
cd book-social-network
-
Install dependencies (assuming Maven is installed)
mvn clean install
-
Run the application
-
Access the API documentation using Swagger UI Open a web browser and go to `http://localhost:8088/swagger-ui/index.html.
- Suraj singh sajwan - GitHub