- Demo project for a presentation -
Project name: Library of books
Technologies stack: Maven, Springboot, REST, JPA, H2 database, SpringSecurity, JWT (JSON Web Token), Angular 11, NPM.
• As a user of this application, I can log in through a login mask.
• If the authentication is successful, I am forwarded to a dashboard mask (with a nav and / or sidebar) where I can see the list of my books in the form of a table.
• The books table has five columns: book name, author name, number of pages, language and genre.
• When I click on a table row or a book, I am redirected to a details mask, where I can edit the book's data or remove the book.
• On the dashboard, with a click of a button or an HTML hyperlink (in the sidebar for example) I can navigate to a mask where I can insert a new book.
• From anywhere in the application, I can log out with a click on a logout button (the button should ideally be in the navbar).
The backend consists of two Maven modules:
• A security module: contains only the security logic. A filter must be implemented here that checks all requests whether they have a JWT or a valid JWT. The module must be able to create a token (JWT) for a login request. A user entity is required for this. The connection to the H2 database is established by JPA. A mock user must be created for the test.
• A main module: contains the main class, the business logic and the security module (as Maven dependency). Here the book entity (the "book" DB table contains five columns with flat types: name of the book, name of the author, number of pages, language and genre) is implemented and the connection to the H2 database is established by JPA. The CRUD functionalities and the corresponding REST interfaces are implemented in this module.
The front end consists of an Angular application, which ideally contains three components, a router and an HTTP service:
• A login component: authentication, login and logout functionalities (an AuthGuard component is an advantage).
• A dashboard component.
• An insert / edit component: Ideally, you can use the same component and, depending on the mode, show or hide the GUI elements. It is also possible to implement two separate components for this.
• The application could have a sidebar that contains a link to the two menu items (dashboard and insert) and a navbar that contains the logout button and the user data (surname and first name).
Please add the number code 193932 to your proposal to know that you've actually read and understood the full description