For an in-house property-management venture: three roles, one database, and no way for a tenant to see another tenant's file. A working system where the three roles are enforced by the database itself, using row-level security rather than filtering in the page.
We built this one for ourselves: an in-house property-management venture. It earns its place here on the same evidence as any client project.
Most small property software separates what an operator, an owner and a tenant can see by hiding things in the interface. Anyone who opens the browser tools can read the rest, which means a tool holding tenant records is one curious person away from a problem the landlord has to answer for.
A working system where the three roles are enforced by the database itself, using row-level security rather than filtering in the page. A tenant asking the database for another tenant's record gets nothing back, because the rule lives underneath the application instead of on top of it. It runs locally and moves to production by changing configuration, not code, and no regulated personal information is stored in any table.
This one is built but not live yet, so there is no result to measure. The day it launches and the numbers come in, they go here, dated.
Build record: 33 tracked changes over 4 days, 12,794 lines of working code. Every number here comes straight from the project's build history.