Skip to content

Engineering Standards

Our principle here is “the linter is the standard.” Rules live as committed config enforced in CI, not as prose that rots. Humans and AI agents read the same enforced rules.

flowchart LR
  Config["Committed config<br/>EditorConfig · analyzers · ESLint · detekt · SwiftLint"] --> CI["Enforced in CI"]
  CI --> Human["Developers"]
  CI --> Agent["AI coding agents"]

A page here states a principle and points at the config that enforces it. If a rule could be enforced by a linter, a test, or a branch policy, that is where it belongs — not in a paragraph.

Who these apply to: a new repo complies on day one. An existing repo complies at its next major-version bump. The gap is a ticket, not an exception.

Each standard is a thin page plus an Examples subpage holding the code that would otherwise bloat it.

Page What it covers Code
.NET backend The four committed config files, vertical slices, migration discipline, xUnit v3 Examples
Angular + PrimeNG Signals, one component library per app, RTL-first, Vitest, bundle budgets Examples
Native mobile Kotlin/Compose + Swift/SwiftUI, signing, versioning, Arabic-first layout Examples
API design One error shape, versioning, paging, idempotency, OpenAPI as the contract Examples
Testing strategy CI lanes, the diff-coverage gate, determinism, who writes which tests Examples
ADRs When a decision earns one; the template. ADRs live in each repo /docs/adr Examples
AI agent context The per-build-unit AGENTS.md convention, size budget, human-drives boundary Examples
Page What it covers
Branching & PRs GitHub Flow, branch and commit naming, the review policy
Pipelines & Environments The PR gate list, the environment ladder, secrets
New Project Provisioning The day-one repo checklist
👤 Owner: Wahid Bitar🗓 Last reviewed: 2026-07-25

اقرأ هذه الصفحة بالعربية