All work

Boundra

Checking TypeScript domain boundaries with a Rust CLI

Context
Personal project
Scope
Rule model, Rust analyzer, TypeScript runtime, diagnostics, benchmarks, and releases
Stack
Rust, TypeScript, Zod, Vite, Static Analysis, NPM, GitHub Actions

An architecture convention needs an enforceable boundary

Client code can import server internals or bypass a domain’s public API while still building successfully. I wanted one model for declared domains, execution environments, and public entry points, with diagnostics that explain how to fix a violation.

Connect static structure with runtime feedback

Stable architecture rule codes

The Rust analyzer uses domain manifests and BR-001 through BR-006 for client and server boundaries, shared-layer dependencies, private domain access, composition roots, and undeclared dependencies. Diagnostics retain stable codes and actionable paths.

Validate requests and results at runtime

Zod contracts derive query and mutation inputs and results from schemas and validate actual transport data. A Vite overlay exposes development violations without changing production interfaces.

Measure repeatable workloads

The release CLI benchmark generates 1,000- and 10,000-file fixtures and records cold and warm medians. A 773-file monorepo comparison checks import-level output against TypeScript preprocessing and helped identify parser exceptions.

Distribute an installable tool

The NPM launcher retrieves a platform-specific native CLI and verifies its checksum. Scaffolding, resource generation, checks, and Vite feedback are part of the tool flow, with native binaries published through GitHub Releases.

A published tool with a recorded regression baseline

Boundra connects the rule documentation, analyzer, runtime contracts, scaffolding, and development feedback in a public NPM package.

The July 3, 2026 benchmark recorded 163.32 ms cold and a 164.20 ms warm median for the 10,000-file fixture on darwin-arm64 with Node 24.14.0. The recorded environment and fixture make this workload a repeatable release regression baseline.

Trace

6 rules
BR-001 through BR-006
10K files
Synthetic TypeScript workspace
164.20 ms
Recorded warm median2026-07-03 · darwin-arm64 · Node 24.14.0
OPEN SOURCE · RUST CLI BOUNDRA

Domain boundaries that fail before architecture drifts.

BR-001BR-002BR-003BR-004BR-005
boundra · check-boundariesRust CLI

$ pnpm exec boundra check-boundaries

Scanning TypeScript domain graph...

BR-004DOMAIN INTERNAL IMPORTERROR
domains/order/client/view.ts:18:7 import { createOrder } from '../payment/internal/create-order';

A domain cannot import another domain internal module.

SUGGESTION · import from domains/payment/public
10,000 files5 stable rules164.20 ms
Boundra · Reconstructed CLI output