Chip Disk
Internal inventory system for a hard drive donor lab. Tracks 4,071+ drives across 6 brands with Hebrew UI, brand-specific fields, and audit logging.
2025-04 · Active · Angular / .NET / PostgreSQL / Tailwind CSS / TypeScript
The Problem
A hard drive donor lab needed to track thousands of physical drives across multiple brands. Each brand has different technical fields (Seagate has firmware versions, WD has DCM codes, etc.), and the existing Excel spreadsheet couldn’t handle filtering, audit trails, or multi-user access.
What I Built
A full-stack inventory management system with:
- Brand-specific forms — selecting a brand dynamically changes which fields appear
- Auto-generated Lab IDs — each brand gets a unique prefix (Seagate = 111x, WD = 222x)
- Full Hebrew RTL UI — designed for non-technical lab staff
- Audit logging — every change is tracked with who, what, and when
- Bulk operations — change status on 50+ drives at once
- Advanced search — filter by any combination of brand, status, capacity, date range
Technical Approach
- Angular 21 frontend with NgRx Signal Store for state management
- .NET 9 Minimal API with EF Core, typed endpoints, and FluentValidation
- PostgreSQL for persistence, seeded with 4,071 drives from the original Excel
- Paginated API with server-side filtering to handle the full inventory efficiently
What I’d Do Differently
Would invest in E2E tests earlier — the brand-specific form logic has enough edge cases that manual testing became a bottleneck.