Git Product home page Git Product logo

book-social-network's Introduction

Book Social Network

Table of Contents

Overview

Book Social Network is a full-stack application that enables users to manage their book collections and engage with a community of book enthusiasts. 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 Spring Boot 3 and Spring Security 6, while the frontend is developed using Angular with Bootstrap for styling.

Features

  • 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.

Class diagram

Class diagram

Spring security diagram

Security diagram

Backend pipeline

Security diagram

Backend pipeline

Security diagram

Technologies Used

Backend (book-network)

  • Spring Boot 3
  • Spring Security 6
  • JWT Token Authentication
  • Spring Data JPA
  • JSR-303 and Spring Validation
  • OpenAPI and Swagger UI Documentation
  • Docker
  • GitHub Actions
  • Keycloak

Frontend (book-network-ui)

  • Angular
  • Component-Based Architecture
  • Lazy Loading
  • Authentication Guard
  • OpenAPI Generator for Angular
  • Bootstrap

Learning Objectives

By following this project, students will learn:

  • 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

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Getting Started

To get started with the Book Social Network project, follow the setup instructions in the respective directories:

Contributors

Acknowledgments

Special thanks to the developers and maintainers of the technologies used in this project. Their hard work and dedication make projects like this possible.

book-social-network's People

Contributors

ali-bouali avatar abdelhalimjean avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.