ThreadCount Community edition

Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from a113353 on 2026-09-15. Licensed under the Functional Source License (FSL-1.1-ALv2).
This commit is contained in:
ThreadCount
2026-09-15 22:54:09 +10:00
commit a6f1059ddf
424 changed files with 53535 additions and 0 deletions
@@ -0,0 +1,22 @@
-- Plans, phase 1: the columns lib/plan.ts reads, and the promise kept before anything reads them.
ALTER TABLE "Facility" ADD COLUMN "planStatus" TEXT NOT NULL DEFAULT 'free',
ADD COLUMN "trialEndsAt" TIMESTAMP(3),
ADD COLUMN "paidUntil" TIMESTAMP(3),
ADD COLUMN "billingEmail" TEXT NOT NULL DEFAULT '',
ADD COLUMN "grandfathered" BOOLEAN NOT NULL DEFAULT false;
-- Every facility that exists when this runs was created while the pricing page said "free, and the
-- rooms using it will hear before the website does". They keep everything, for good. The demo is
-- not a customer and is left out so it never shows a plan.
UPDATE "Facility" SET "grandfathered" = true, "planStatus" = 'free' WHERE "isDemo" = false;
ALTER TABLE "PlatformSwitch" ADD COLUMN "plansLive" BOOLEAN NOT NULL DEFAULT false;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'ops_ro') THEN
RAISE NOTICE 'ops_ro does not exist — plan grants skipped';
RETURN;
END IF;
GRANT SELECT ("planStatus", "trialEndsAt", "paidUntil", "grandfathered") ON "Facility" TO ops_ro;
END $$;