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).
- Backend: ASP.NET Core 8 with a microservices-based architecture
- Frontend: React with TypeScript
- Gateway: Ocelot API Gateway and GraphQL-based APIComposer (HotChocolate)
-
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
- 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
Microservice → Controller → Service → Repository
apiConfig → repository → service → container → component
- 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
- JWT-based role authentication
- OAuth (Google login)
- Token-protected API routes
- Frontend reflects role-based UI access
- ASP.NET Core 8
- EF Core
- Redis
- Ocelot Gateway
- GraphQL (HotChocolate)
- Serilog
- AWS S3
- React + TypeScript
- Vite
- Redux
- Zod
- Tailwind CSS
- Axios
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.
Developed by a team of 5 programmers and 3 designers as part of the diploma thesis at IT Step Academy, Lviv.
GitHub: https://github.com/zabavb/Libro