IntakeEngine is a zero-bloat, multi-tenant intake and booking engine built with plain PHP, SQLite, and vanilla JavaScript for independent service businesses — clinics, law firms, salons. Each tenant runs on a physically isolated SQLite database, giving small service businesses a self-serve booking system without the overhead of a framework stack or shared-tenant risk.

Independent service businesses — clinics, law firms, salons — typically run their intake on a phone number and word-of-mouth referrals. The moment they want a real booking pipeline, they're usually pushed toward multi-tenant SaaS platforms where their client data sits in a shared table next to every other tenant's, separated only by a query filter. For a business handling sensitive intake data, that's a hard guarantee to sell. The goal was a platform that could onboard a new business instantly and self-serve, while giving each one an isolation story simple enough to explain in one sentence.
I built IntakeEngine using plain PHP 8.1+ with PDO on the backend and vanilla JavaScript on the frontend, deliberately skipping Node, npm, Composer, and any bundler step. Python's standard library handles orchestration — a single python server.py verifies the environment, runs idempotent migrations, and starts the server, with nothing else to configure. SQLite gave the project a lightweight, file-based database that made physical multi-tenancy possible: every tenant clones its own database file at registration — storage/db/tenant_{subdomain}.sqlite — instead of sharing one table gated by application logic. A hand-rolled JWT, bound to the tenant's subdomain as a claim, closes the remaining gap so a session cookie can't be replayed against a different workspace.
Because isolation was the core requirement, the focus stayed on making tenant boundaries provable rather than promised — there's no shared table for a bug in a query filter to leak across. The result is a booking platform a non-technical business owner can self-provision in seconds: a dynamic intake form builder, a public unauthenticated booking page for their clients, a live registry to triage submissions, and a platform admin console to run the business behind it — all on a stack simple enough to audit end to end.