“`
BlazorGraphQL – My Library & Anti-Library
A Blazor Server application for tracking both the books I’ve read and the books that continue to widen the horizon of what I still have to learn.
“`Project at a Glance
| Role | Full-stack Developer & Designer |
|---|---|
| Stack | .NET 9 Blazor Server · GraphQL (Hot Chocolate) · EF Core + SQLite · Bootstrap 5 |
| Focus | Book tracking, anti-library thinking, and full-stack application architecture |
| Current Features | Create, view, update, and delete books · Inline editing for status and progress · GraphQL-driven UI updates |
| Timeline | May – June 2025, with continued iteration and refinement |
Project Overview
This project began as a personal library tracker, but it also draws on Nassim Nicholas Taleb’s idea of the anti-library: the collection of unread books that serves not as a sign of ignorance, but as a reminder of the scale of what remains to be learned.
“`I used that concept as a thematic foundation for a Blazor Server application that combines literary aesthetics with practical full-stack engineering. The app allows me to catalog books, track reading progress, update statuses inline, and reflect on what I’ve read while also keeping visible the larger horizon of future inquiry.
On the technical side, the project became an opportunity to work through GraphQL integration, Entity Framework persistence, and a more deliberate layered architecture separating Domain, Application, and Infrastructure concerns.
“`Screenshots
Technical Highlights
- Blazor Server front end – interactive C#-driven UI without a separate JavaScript framework.
- GraphQL API layer – query and mutation operations powering book creation, retrieval, updates, and deletion.
- EF Core + SQLite persistence – lightweight local storage with migrations and schema evolution.
- Layered architecture – refactored into Domain, Application, and Infrastructure folders for clearer separation of concerns.
- BookService application layer – centralizes business logic rather than placing everything directly in the UI or data layer.
- Inline editing workflow – allows status and progress changes directly from the book cards.
- Destructive action safety – delete flow includes a confirmation step before removal.
Code Samples
Book model snippet
The core entity for the application, representing the shape of the data persisted through EF Core and passed through GraphQL.
AddNewBook snippet
The form submission logic that constructs a GraphQL mutation from user input, posts it to the endpoint, and refreshes the UI after the new book is saved.
FetchBooks.razor snippet
The page-level logic responsible for loading books, rendering the collection, and coordinating front-end interactions with the GraphQL layer.
BookMutation.cs snippet
The GraphQL mutation resolver layer exposing create, update, and delete operations for books through a cleaner backend API surface.
BookQuery.cs snippet
The GraphQL query resolver responsible for exposing the book collection to the Blazor front end in a flexible, query-driven way.
What This Project Demonstrates
- Designing and building a full-stack application in the .NET ecosystem
- Using GraphQL mutations and queries to drive a Blazor UI
- Refactoring toward a layered architecture after an initial flat structure
- Debugging issues across UI, HTTP, GraphQL, service, and database layers
- Combining a practical software system with a distinct conceptual and visual identity
Coming Next
- Author and category normalization through richer relational modeling
- Filtering and dashboard views for wishlist, reading, and completed books
- Anti-library analytics showing read versus unread proportions
- Bulk import via CSV, JSON, or image-assisted entry workflows
- Optional authentication for personal or multi-user libraries
Let’s Talk
Have questions about Blazor, GraphQL, or educational and knowledge-centered apps?
Feel free to reach out—always happy to talk shop.
