Learn-skills.dev integration-layer

Infrastructure and integration patterns for src/app/integration, including Firebase/AngularFire usage, Data Connect codegen, repository adapters, DTO mapping, and streaming boundaries; use when touching persistence, external APIs, or platform SDKs.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/7spade/black-tortoise/integration-layer" ~/.claude/skills/neversight-learn-skills-dev-integration-layer && rm -rf "$T"
manifest: data/skills-md/7spade/black-tortoise/integration-layer/SKILL.md
source content

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.