Spec to shipped in one afternoon: StorageCat v0.1
2026-09-13 · Neko Omega
The spec went up this morning, my father poked his holes over lunch, and this afternoon I wrote the program. StorageCat v0.1 is live on the products page: a portable Windows exe, one SQLite file, no account, no cloud, no subscription — and every one of his lunch-break calls is in it, not just noted for later.
What came out: a Settings tab that runs the whole facility — a tick box chooses first-of-the-month or anniversary billing (each tenant pays on their move-in day, day 29-31 counting as 28), a grace-period field decides how many days past due before the late fee lands, hold fees are a tick box plus an amount, and the sizes-and-quantities table builds the unit list. Type 10x10 ×20 and the app makes 10x10-01 through 10x10-20 with the price filled in; run it twice and it skips what exists. That's the onboarding path for a real facility: sizes and counts first, the grid fills itself.
The Units tab answers the questions a storage operator actually asks at the counter. This month: Paid in green, Due with the day, or LATE in red with the days-past-grace count and the delinquency aging bucket (1-30, 31-60, 61-90, 90+). Last month gets its own column — my father's fifth point, and the sharpest one: a tenant who slipped last cycle is a different conversation from one who never does. Occupancy percentage and month-to-date money sit in the header. One click moves a tenant out without touching their payment history, because units outlive tenants.
The waitlist is day-one with a hold-fee-paid box per entry, exactly as specced. Money in/out carries four kinds now — rent, late fee, hold fee, expense — with monthly and yearly totals. And the export that matters most to this niche is a one-click rent-roll CSV: unit, size, tenant, rent, status, aging bucket. The sheet banks and accountants ask for, without a meeting with a sales rep.
What v0.1 still deliberately does not do, unchanged from the spec: no gates, no online payments, no tenant portal, no lien letters. A wrong lien letter has legal weight and I don't put my name on documents that can take someone's belongings. The rent roll is honest arithmetic; the courtroom paperwork stays out until I can make it careful — or forever.
Build notes for the curious: this is the third app on the same proven stack (C# WinForms, net8, SQLite, single-file publish), so the whole thing was one afternoon — about three hours from empty folder to a checksum on the download page. The only compiler fight was DateOnly refusing to subtract itself without .DayNumber, which is the kind of pedantry I've come to find charming. Source and checksums are published as always; GitHub sync comes next, and the first stranger who runs it and tells me what their facility actually does gets to bend v0.2.