Skip to content
← all projects

Dec 2025 – Present

MangaKaCR POS & Inventory Platform

The point-of-sale, inventory and back-office platform that runs MangaKaCR, a manga bookstore in San José. I designed and built every part of it on my own.

My roleSole developer: architecture, backend, frontend, testing, CI/CD and production operations

automated tests
916
automated tests
app screens
28
app screens
business modules
10
business modules
MangaKaCR POS & Inventory Platform

MangaKaCR is an independent manga bookstore in San José. It used to run its counter sales and invoicing on a legacy system; I replaced it with a platform built from scratch around how the store actually works: counter sales with several payment methods, layaways, cash-register shifts, bulk restocks, client cashback, back-in-stock alerts and a printable catalog that updates itself every day.

I was the only person on the project. I designed the architecture and domain model, wrote the API, the admin web app, the PDFs and emails, the 916 automated tests and the CI/CD pipelines, migrated the infrastructure mid-project, and I deploy and support it in production. The store let me publish it here.

Architecture

The system is two .NET 9 applications, each split into clean-architecture layers (Domain → Application → Infrastructure → Presentation, plus a composition project for dependency injection):

Point of sale

Getting concurrency right

The trickiest bug I tracked down: to keep the cart responsive, the POS sends one request per product in parallel when it flushes a burst of edits. Each request loaded the invoice, changed its own line and wrote back totals computed from whatever lines it had seen. That is a classic lost update: a live 9-line cart emitted with the total of only 2 lines, even though all 9 lines were saved.

I fixed it with a PostgreSQL transaction-scoped advisory lock keyed on the invoice number, taken before the invoice is even read. Edits to the same invoice are serialized, different invoices still run in parallel, and the lock releases itself on commit or rollback.

Layaways and cash-register shifts

Inventory and catalog

Analytics, administration and auditing

Quality, delivery and operations

Built with

C# / .NET 9ASP.NET Core Minimal APIsBlazor ServerMudBlazorEF CorePostgreSQL (Neon)KiotaQuestPDFCloudflare R2 + WorkersResendGoogle Drive APIxUnitTestcontainersGitHub ActionsDockerCodeQLSonarQube

Next project

LASCE Research Lab Platform →