// the find
rayfeeney/OrchidApp
Self-hosted orchid collection manager with database-enforced lifecycle integrity, deterministic schema management, and production-grade guarantees.
OrchidApp is a self-hosted plant collection manager for orchid hobbyists, built on ASP.NET Core Razor Pages with MariaDB. It takes database integrity seriously — lifecycle rules are enforced via stored procedures, schema changes go through a checksum-verified migration system, and the distinction between rebuild (fresh) and migrate (existing) is a hard contract. This is a personal-scale app meant for Raspberry Pi or Windows home lab use, not a general-purpose plant tracker.
The migration system is well-thought-out: SHA256 checksums on historical migrations prevent silent edits, timestamps enforce ordering, and the rebuild-vs-migrate distinction is explicit rather than assumed. Storing lifecycle invariants in stored procedures rather than application code means a bypassed UI can't corrupt plant history. The image pipeline (libvips, 3072px cap, metadata stripped, originals discarded) is sensible and avoids the usual footgun of storing raw uploads indefinitely. The separation of application files from user data in the Windows installer — ProgramData for data, Program Files for binaries — is the right call and is clearly documented.
The repo commits live MariaDB data files under app/data/mariadb/ including the full system schema and what looks like actual user data — that's a meaningful opsec problem for anyone who forks or shares this publicly. No authentication model at all, even a single shared password, means anyone on the local network can read and modify the collection; the README waves this away as a 'trusted local network' assumption but home labs aren't always that clean. The Windows installer is unsigned, which is genuinely fine for a personal tool but will trigger SmartScreen on every install for every user, and the README treats this as a footnote rather than a setup hurdle to walk through. With 1 star and no forks, there's no community around it — if you run into a setup problem, you're on your own.