Skip to main content

L2 — Containers

The runnable / deployable pieces and how they connect. Presentation depends only on the client_sdk facade; the local↔cloud choice is configuration, not code.

Why / changed from the POC: the SDK is pure Dart (no dart:ui) and constructed config-drivencreateClient({config}), never by injecting an adapter — so the same app binary runs fully local or cloud-backed. The design_system has no client_sdk dependency (model-agnostic), and presentation never imports drift/supabase. See the design system decisions and the CLAUDE.md load-bearing rules on the overview.