This project is based on Maven and includes the following dependencies:
- Spring Boot: The core framework for the project.
- Spring Data JPA: Used for database access.
- Spring Security: Used for user authentication and authorization.
- Liquibase: Used for database schema management.
- PostgreSQL Driver: Provides connectivity to the PostgreSQL database.
- Lombok: Simplifies Java classes.
- Spring Boot Validation: Used for data validation.
- Java JWT (JSON Web Tokens): Used for JWT creation and validation.
- Spring Boot Mail Starter: Used for sending emails.
- SpringDoc OpenAPI Starter: Used for generating OpenAPI documentation.
These dependencies define the functionality and configuration of the project.
-
User Registration and Login:
- Users can register as students or authors.
- Secure authentication using JWT (JSON Web Tokens).
-
Student Functionality:
- Students can log in and access books for reading.
- View the list of books they're currently reading.
- Subscribe to specific authors for email notifications.
-
Author Functionality:
- Authors can log in and create new books.
- Delete their own books.
-
API for Retrieving Readers:
- Implement an API to retrieve a list of all readers for a specific book.
-
Email Notifications:
- Students can subscribe to authors and receive email notifications with book details when a new book is published.
- Employ PostgreSQL or MySql for data storage.
- Define database tables using Liquibase.
- Create an environment using Docker, ensuring that all components can be started with a single "docker-compose up" command.
- Add unit tests if possible, the higher the test coverage, the better it is.