A full-stack digital library system — a C# API handling authentication, inventory, and borrowing logic, paired with a Razor Pages frontend for users and admins.
Lexora is a library management system built to give smaller libraries a lightweight, fully integrated digital borrowing platform. It consists of two parts: the Lexora API (backend) and the Lexora UI (frontend), developed together as a cohesive system. The API is built with ASP.NET Core and Entity Framework Core, handling user authentication via ASP Identity and JWTs, book inventory, borrow requests, penalty calculations, and user restrictions based on borrowing history or outstanding fines. PostgreSQL provides reliable data persistence and OpenAPI (Swagger) keeps the API surface fully documented. The frontend is built with ASP.NET Razor Pages and connects directly to the API, giving both library users and administrators a clean, role-aware interface. Users can browse books, check availability, and submit borrow requests; admins manage inventory and review requests from a dedicated dashboard.
Problem
Most library systems are either clunky desktop software or expensive third-party platforms that don't fit smaller libraries. I wanted to build something lightweight and self-contained — a backend that enforces borrowing rules reliably, and a frontend that feels natural for both everyday borrowers and the staff managing the shelves. The tricky part was the rules: return deadlines, outstanding fines, borrowing limits, and user restrictions that all stack on top of each other.
Approach
I separated concerns from the start: business logic (penalties, restrictions) lives in a dedicated service layer isolated from the controllers, so it can be tested independently and changed without touching the API surface. ASP Identity handled role management so I didn't have to reinvent it. On the frontend, I chose Razor Pages to keep the server-rendering close to the data layer — tying the UI tightly to the API's data contracts meant the two could evolve together without drift, and Swagger became the primary reference during frontend development.
What I learned
Software Engineer/System Administrator • Building reliable systems & beautiful interfaces
© 2026 Lawal Habeebullahi. All rights reserved.