An open API service indexing awesome lists of open source software.

https://github.com/zabavb/libro


https://github.com/zabavb/libro

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          


Libro Logo


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