https://github.com/zabavb/libro
https://github.com/zabavb/libro
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zabavb/libro
- Owner: zabavb
- License: mit
- Created: 2024-12-04T09:15:03.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-12-09T18:10:49.000Z (10 months ago)
- Last Synced: 2024-12-09T18:37:12.465Z (10 months ago)
- Language: C#
- Size: 910 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
![]()
Libro โ Online Bookstore Web Application
(Cover letter)
Libro is a full-stack web application modeled after the Ukrainian book store Yakaboo.
It enables users to browse, search, and purchase books online โ including physical books, e-books, and audiobooks.
This project was developed as a diploma thesis by a team of 5 programmers and 3 designers at IT Step Academy (Lviv).๐งฑ Architecture Overview
-
Backend: ASP.NET Core 8 with a microservices-based architecture -
Frontend: React with TypeScript -
Gateway: Ocelot API Gateway and GraphQL-based APIComposer (HotChocolate)
๐ Backend Details
Microservices
-
UserAPI โ Manages users and subscriptions. Features:
- Role-based authentication (JWT)
- OAuth (Google login)
- Roles:
-
Admin โ Full access to admin dashboard -
Moderator โ Partial dashboard access (no user management) -
User โ Standard access to personal features like basket, orders, and favorites
-
-
BookAPI โ Handles:
- Books, authors, publishers, categories, subcategories
- Discounts and feedback (no edit/delete)
- Three book types: Paper (delivery), E-book, Audiobook (added to personal library)
- No real transactions yet โ mock purchase flow only
-
OrderAPI โ Processes orders manually
- Order status managed manually by Admin/Moderator
- No delivery tracking implemented yet
Common Backend Features
- Pagination, filtering, sorting, and searching across all major entities (books, users, orders, etc.)
- Redis caching for optimized GET requests
- Asynchronous programming used wherever possible
- File storage on AWS S3: user avatars, subscription images, book covers, e-book & audio-book files
- Access to e-books and audiobooks is secured using signed URLs
- Serilog for logging and monitoring
- Custom Exception Middleware for error handling
- DTOs and AutoMapper used for data transfer
- Database seeding for test/demo purposes
Architecture Pattern
Microservice โ Controller โ Service โ Repository
๐ฅ๏ธ Frontend Details
Architecture
apiConfig โ repository โ service โ container โ component
Main Features
- React with TypeScript, Vite for bundling
- Tailwind CSS for styling
- Zod schema validation for form inputs
- Image + entity data uploads via FormData
- Axios for HTTP communication
- Authentication and user info stored in
localStorage
- Notifications using React/Redux
- Lazy loading of images
- Memoization and virtualization for performance
- Asynchronous data fetching and processing
๐ Authentication & Authorization
- JWT-based role authentication
- OAuth (Google login)
- Token-protected API routes
- Frontend reflects role-based UI access
๐ ๏ธ Technologies Used
Backend
- ASP.NET Core 8
- EF Core
- Redis
- Ocelot Gateway
- GraphQL (HotChocolate)
- Serilog
- AWS S3
Frontend
- React + TypeScript
- Vite
- Redux
- Zod
- Tailwind CSS
- Axios
๐งช Development Status
Note: This project simulates the purchase flow without actual payment integrations. Features like real-time delivery tracking and payment processing are planned for future improvements.
๐ค Credits
Developed by a team of 5 programmers and 3 designers as part of the diploma thesis at IT Step Academy, Lviv.
๐ Repository
GitHub: https://github.com/zabavb/Libro