C# / INVENTORY API
Independent portfolio project
StockLedger
Warehouse inventory with transactional controls.
What I built
A warehouse inventory application with searchable stock positions, replenishment alerts, case-cost valuation, and a transfer register. Transfers protect reserved inventory and atomically update both locations with concurrency and duplicate-request checks.
Project context
An independent application for Alder Supply, a fictional regional distributor. Business records are generated and internally consistent.
Focus


Languages & their roles
- C#
- ASP.NET Core endpoints, transfer validation, concurrency checks, and transaction handling.
- SQL / EF Core
- SQLite persistence, schema constraints, and version-aware database updates.
- JavaScript
- Live dashboard data, search, filtering, detail dialogs, and CSV interactions.
- Python
- Reproducible business fixtures and HTTP integration tests.
- YAML
- GitHub Actions build, test, container delivery, and optional deployment workflows.
Engines & platformsASP.NET Core · .NET 10 · EF Core · SQLite · Docker · GitHub Actions
Screenshots use synthetic operating data. The APIs run locally; public API hosting and GitHub publication are not configured.
Technical challenge
A client can retry a successful request after a timeout, or two operators can submit transfers using the same stock snapshot.
Implemented solution
A database transaction encloses the request-ID lookup, both stock updates, and the audit insert. Unique request IDs prevent duplicate transfers, while EF Core version tokens reject stale writes with HTTP 409; stock quantities are also constrained to remain nonnegative.
How it is built
- A deterministic generator creates 48 catalog products across four warehouses, with costs, suppliers, bins, reserves, and reorder points.
- EF Core persists 192 stock positions and 356 transfer records; opening balances reconcile to the transfer ledger.
- The ASP.NET Core transfer endpoint validates available stock and row versions inside a SQL transaction.
- A responsive operations UI derives metrics from live API data, with search, warehouse filters, sorting, pagination, detail dialogs, and filtered CSV export.
What comes next
Add receiving, purchase orders, stock adjustments, product administration, database migrations, and named-user authentication.
Source package includes all three applications, run instructions, and test suites. 18 API integration tests passed locally; browser checks covered transfers, imports, retries, and release approvals.







