AuditFlow

Platform structure

Five repositories, one set of contracts.

AuditFlow is not a single codebase. Splitting it up was the point: the field app has to survive no connectivity, the office workbench has to survive being late, and the contracts both of them agree on should not be re-implemented three times.

Every repository below is private and is not linked from this site. The names are published because the split is part of how the product works, not because the code is public.

konstrainc/core

No runtime

Shared audit-domain contracts: the taxonomy, industry templates, schemas, and the generated types that all of the other pieces agree on.

Not an application. Nothing here executes.

konstrainc/data-engine

Python / FastAPI

The backend service. File and evidence storage, document extraction and AI analysis, the audit record, site leases, validation.

The only piece that holds data. The others sync with it.

konstrainc/android

Kotlin, offline-first

The field capture app. This is the working product: an auditor captures on site with no connectivity at all.

Written for intermittent and absent signal, not for fast signal.

konstrainc/desktop

Electron, offline-first

The office workbench. Import a capture, validate it, review it, produce the report.

Runs in the office, on the same captured data.

konstrainc/site

TanStack Start, static output

This site. It explains what AuditFlow is and how the platform is split up.

No backend. Every page is generated at build time.

How the pieces meet

core defines the taxonomy, the industry templates, the schemas, and the generated types. It has no runtime. The other pieces consume those contracts rather than restating them.

android and desktop are both offline-first, because an auditor has no signal and a reviewer should not need one. Both sync with data-engine, which is the only piece that holds data — files, evidence, the audit record, site leases.

site depends on none of them. It reads no data at runtime, because it has none to read — see the overview for what it publishes.