Backend API deployed at https://lirbarymanagementproject.azurewebsites.net/
Swagger documentation https://lirbarymanagementproject.azurewebsites.net/swagger/index.html
Frontend webste deployed at https://joyful-alpaca-151cb2.netlify.app/
This is a fullstack project that allows a user to interact with a library. It works with a ASP.NET Core backend and React frontend.
Below you can find several diagrams which describe the projects structure and design.
- Sometimes Azure can be slow to respond. Please wait a few extra seconds for fetching from the server.
- Any JWToken that is made after logging in expires after 5 minutes. Token refreshing is not yet supported.
- At the moment, some features (cart, user profile) heavily rely on reducers. Please try to avoid refreshing the page during your session to avoid losing data.
- There is a strange CORS error from Azure, that occurs after a certain number of requests. If this error appears in the console, please inform me in Slack. I will re-deploy the backend, which is a temporary fix for the issue.
Mandatory features are implemented both in an API backend, and in a more user-friendly frontend website.
- ✅ (authorization and authentication supported, first admin is inserted directly into database) User Management: Users should be able to register for an account and log in. Users cannot register themselves as admin.
- ✅ (anyone can get all or individual books and authors) Browse Products: Users should be able to view all available products and single product, search and sort products.
- ✅ (cart is available to logged in users) Add to Cart: Users should be able to add products to a shopping cart, and manage cart.
- ✅ (users can create their own book loan) Checkout: Users should be able to place order.
- ✅ User Management: Admins should be able to view and delete users.
- ✅ Product (Book) Management: Admins should be able to view, edit, delete and add new products (books).
- ✅ Order (Loan) Management: Admins should be able to view all orders (loans)
- ✅ Apply CLEAN architecture in your backend. In README file, explain the architecture of your project as well.
- ✅ Implement Error Handling Middleware: This will ensure any exceptions thrown in your application are handled appropriately and helpful error messages are returned.
- ✅ Document with Swagger: Make sure to annotate your API endpoints and generate a Swagger UI for easier testing and documentation.
- ✅ Project should have proper file structure, naming convention, and comply with Rest API.
- ✅
READMEfile should sufficiently describe the project, as well as the deployment.
Added a few unit tests in:
- Backend: testing custom UserMapper via XUnit.
- Frontend: testing cartReducer via Jest.
The project fulfills mandatory features, but, of course, can be improved further. Here are some points that I noted for the future:
- The website is fairly fragile and is not protected (for example, using debounce) from sending many requests when it is not needed.
- Testing can be expanded and integration tests should be added.
- Robustness of the website needs to be improved (for example, redirecting from unsanctioned access to certain routes).
- Some secondary backend features are implemented as a basis, but do not funtion properly (for example, when updating an enetity in the database, UpdatedAt field does not change to a new date).


