Integration Layer
Intent
Implement external integrations (Firebase, Data Connect, HTTP, SDKs) behind stable ports so the rest of the app stays framework-agnostic.
Layer Boundaries
-
Only integration/infrastructure may import Firebase/AngularFire/DataConnect SDKs.
-
Expose interfaces/tokens to Application; never expose platform types.
Repository Adapters
-
Implement repository ports with minimal mapping:
-
DTO <-> Domain mapping happens here (or in dedicated mappers within integration).
-
Keep mapping deterministic; normalize timestamps/IDs.
Streams and Signals
-
Integration may return Observables (streaming) or Promises (commands).
-
Convert to signals at the Application boundary (store/facade), not in templates.
-
Ensure cleanup: avoid manual subscriptions unless lifecycle-bound.
Data Connect
-
Treat generated SDK as read-only output.
-
After schema changes, regenerate before app code changes.
-
Enforce auth directives and least-privilege queries.
Security
-
Never trust client input.
-
Keep secrets in env/secret manager, not in source.
-
Avoid string-concatenated queries; use parameterized APIs.