This ebooks web application is designed to display information about all different kinds of ebooks in a dynamic, responsive, and intuitive interface. It implements technologies such as the spring boot web framework, spring security, spring mail, thymeleaf templates, crud, lombok, heroku, and postgresql heroku db add on.
- Spring Boot Framework
- Thymeleaf templating markup language
- PostgreSQL
- Spring Mail Dependency
- Lombok Dependency
- Spring Security: implements Spring Security Dependency for authorizing page access, securing database, and creating user accounts.
- Authorization: Uses Ant Matchers to check if a user has enough privileges to access a path url to a specific web page.
- Authentication: Authenticates a user from their username or email and password stored in the database
- Encryption: All passwords are encrypted using a hash algorithm from BCrypt and are stored as a hash in the database
- Password Recovery: a user can request the app to email them a new password to regain access to their account, afterwhich they may change it to their liking
- Protection: User's data is protected by incorporating HTTPS SSL certificates as well as restricting access in searchbar queries to block SQL injection attacks
- Java
- JavaScript
- HTML + CSS
The project Spring Boot app was both hosted on railway.app configured with a CICD automatic deploys connected to this repository's main branch.
This postgreSQL database was also deployed by railway.app and integrated with the spring app. Passwords are hash encrypted. Data is normalized to level 3.
- MVC design pattern
- Dependency Injection
- Autowired Singletons
- Each Book's information and details can be added, edited, or deleted as desired if the authenticated user has admin privileges.
- Authenticated users may insert new reviews for a book.
- Authenticated users may favourite books and is saved in the database for when they return.
- Authenticated users may update their account information as required
Each book has a list of reviews saved in the database. It will take the average star rating and display that to the user on the viewBook page followed by the reviews themselves.
The navbar contains different options depending on the privileges of the user. If they are an admin, it displays an add book link. If a user tries to click a link or url they don't have sufficient privileges for, they will be redirected to a permission denied page and prompted to authenticate.
This application is responsive to almost all viewports by using css @media selectors and more. The font-size, margins, and layout will change depending on the viewport dimensions of the device such as mobile, tablet, or desktop.