The first open-source SaaS-grade home inspection app. Self-host on Cloudflare for ~$0/month.
π§ͺ Try it in 60 seconds β no install, no credit card. Start a free 30-day trial on inspectorhub.io β
Magic-link signup. Your trial workspace ships pre-loaded with starter templates + canned comments so you can click through a real inspection immediately. Decide to self-host later? Your data exports cleanly β same codebase, same schema.
A complete home inspection software stack: inspector dashboard, public booking widget, mobile field form, professional HTML reports with e-signatures, AI assistance, and PWA offline support β all running on Cloudflare's edge, self-hosted on a single Worker.
- Single Cloudflare Worker (
workers/app.ts) β a Hono entry that mounts the full API in-process and delegates page routes to React Router v7 SSR (the cloudflare/react-router-hono-fullstack-template shape) - API (
server/) β Hono + Drizzle + D1, handles all business logic - Web (
app/) β React Router v7 + React 18 + Tailwind v4, SSR on CF Workers - Shared UI (
packages/shared-ui/) β Design System 0523 token-based components - One deployable; React Router loaders/actions call the API directly through an in-process
API_WORKERself-binding (no network hop, no second worker)
- 3-pane editor with 248 canned comments, slash-trigger snippet picker, AI rewrite
- Keyboard-driven: 1-5 ratings, βK palette,
/snippet picker,?HUD - Offline-capable PWA with photo upload queue
- Migrate from Spectora in under 5 minutes via paste-JSON import
- Company-level public booking widget (
/book/<slug>) with auto-assignment, optional inspector choice, and Turnstile bot protection - E-sign agreements with Ed25519 audit chain β server-rendered signed PDF + Certificate of Completion via Browser Run, evidence-pack zip with email delivery, public verifier URL (
/v/<token>) with QR code on PDFs + offline self-verify (/verify) for court-friendly independence from the server, optional inspector pre-sign - Branded report viewer with print-as-PDF
- Agent CRM with referral tracking
- "Share with buyer" link generation
- Recommendations export
- Runs standalone (single-tenant) by default β one fixed tenant holds all your data, no subdomains to manage
- Branded UI (logo, colors) configurable in Settings
- Tenant-scoped D1 data isolation baked into every table
- Free to run: Cloudflare Workers Free tier covers a solo inspector's full year. Pay only for a domain (~$10).
- Yours: fork it, change templates, add integrations. No vendor lock-in.
- Fast: edge-deployed, < 100 ms response times globally
- Compliant: PBKDF2-SHA256 password hashing, hash-chained Ed25519 audit log on e-signatures (ESIGN Act + UETA), server-rendered PDF + Certificate of Completion via Browser Run, offline-verifiable evidence pack, tenant-scoped data isolation
- Modern: React Router v7 + React 18 + Hono API + Drizzle + Tailwind v4 β small surface, easy to read
There are three ways to run OpenInspection, from zero effort to full control. Pick one.
Want to evaluate the product without running any infrastructure? Register at inspectorhub.io/register with your email, click the activation link, and a workspace is created for you β the app lives at app.inspectorhub.io. This is the managed edition of this exact codebase (30-day free trial, no card), pre-loaded with starter templates so you can click through a real inspection immediately. You can export your data and switch to a self-hosted deploy at any time.
- Click the Deploy to Cloudflare button above and follow the wizard. This was verified end-to-end on the Cloudflare Workers Free plan (2026-05-31). The wizard may surface a "Workers Paid" notice banner β it is non-blocking; the deploy completes on the free plan.
- Cloudflare reads the committed
wrangler.jsonc(which carries placeholder IDs only) and auto-provisions and binds the required resources β D1 (DB), KV (TENANT_CACHE), R2 (PHOTOS), theBROWSERbinding, the Durable Objects and the Workflow β injecting the real resource IDs for you. There is no manual ID editing. - After the deploy finishes, visit
/setupon your new Worker URL and enter yourSETUP_CODEto create the first admin account. For the one-click path, the wizard reads.dev.vars.exampleand surfacesSETUP_CODEas a secret field you fill in during the deploy β that is the value you type at/setup. It must be any value of at least 6 characters./setupis gated solely on this secret: ifSETUP_CODEis unset the endpoint refuses to proceed, so an unprovisioned Worker can't be claimed. You can change it later in the dashboard under Settings β Variables and Secrets.
Deep dive: docs/developers/02_deploy.md.
git clone https://github.com/InspectorHub/OpenInspection
cd OpenInspection
npm install
npm run setup:cloudflare # provisions D1/KV/R2 + writes real IDs to a gitignored wrangler.local.jsonc
npm run deploy # full react-router build, then wrangler deploynpm run setup:cloudflare(scripts/setup-cloudflare.js) provisions the Cloudflare resources and writes their real IDs into a gitignoredwrangler.local.jsonc(bootstrapped from the committed placeholderwrangler.jsonc).- Use
npm run deploy, not rawwrangler deployβ the npm script runs the fullreact-router build(bundlingserver/API +app/SSR into one worker) before deploying. Its tail then runs idempotent ensure-steps that provision the JWT keypair and print theSETUP_CODEin the deploy output if one is not already set (it never overwrites an existing value). Visit/setupwith that code for your first login. - For local development, use
npm run dev:hmr(Vite dev server with hot module replacement, port 5173) for the fast iteration loop, ornpm run dev(build-based βreact-router buildthenwrangler devon port 8788) to run the real bundled worker.
Deep dive: docs/developers/02_deploy.md. Architecture overview: docs/developers/01_architecture.md.
- Deploy β first-time setup on Cloudflare
- Architecture β module map, request flow, cost model
- Contributing β code conventions and PR process
- Community β Discussions categories and where to talk
- Cloudflare Workers: edge runtime (single Worker β Hono entry mounts the API in-process + delegates page routes to React Router SSR)
- React Router v7 + React 18: frontend SSR on Workers
- Hono + Zod OpenAPI: typed API layer
- Drizzle ORM + Cloudflare D1: SQLite at the edge
- Cloudflare R2 / KV: object storage and config cache
- Tailwind CSS: v4 only (via
@tailwindcss/vite, design system tokens + utility CSS) - Optional: Gemini AI, Stripe Connect, Resend email, Google Places
- π¬ Q&A
- π£ Roadmap & releases
- π‘ Ideas & feature requests
- π Issue tracker
If you'd rather skip the infrastructure work, InspectorHub offers a fully-hosted version of this software β same codebase, managed for you.
- 30-day free trial, no credit card required
- Simple per-seat pricing
- 30-day money-back guarantee
- Upgrade to self-hosted at any time β your data, your choice