Learn-skills.dev firebase-platform
Firebase services, platform guides, and tips for integration with Angular projects.
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/firebase-platform" ~/.claude/skills/neversight-learn-skills-dev-firebase-platform && rm -rf "$T"
manifest:
data/skills-md/7spade/black-tortoise/firebase-platform/SKILL.mdsource content
SKILL: Firebase Platform Master Guide
Consolidated reference for AngularFire SDK and Firebase Data Connect (GQL + PostgreSQL).
🔥 1. AngularFire Core (SDK)
Real-time Database & Firestore
- Reactive Pattern: Use
,collectionData
and convert to signals usingdocData
.toSignal() - Dependency Injection: Use
,inject(Firestore)
, etc.inject(Auth) - Security: Security rules are the primary defense. Never trust the client.
Authentication
- State management: Track
status in anuser
.AuthStore - Guards: Use functional
guards withcanActivate
service.Auth
⚡ 2. Firebase Data Connect (GQL + PostgreSQL)
Schema Workflow
- Schema First: Define
in@table
.schema.gql - Generation: Run
after schema changes.firebase dataconnect:sdk:generate - Strict Types: Use the generated SDK; never edit
.dataconnect-generated/
Directive Rules
: Required for all database entities.@table
: Required for all types (No public access allowed).@auth
: Use for UUIDs (@default
) and timestamps (uuidV4()
).request.time
: Map JSON keys to DB columns if different.@col(name: "...")
🏗️ 3. Integration with NgRx Signals
- Query Wrapping:
export const MyStore = signalStore( withMethods((store, dc = inject(DataConnectService)) => ({ loadData: rxMethod<void>( pipe( switchMap(() => dc.myDataQuery()), tapResponse({ next: (res) => patchState(store, { data: res.data }), error: console.error, }), ), ), })), );
🔒 4. Security & Performance
- Secrets: Store Firebase API keys and config in
.environment.ts - Query Design: Fetch only required fields in GraphQL.
- Auth Pattern:
.@auth(rules: [{ allow: OWNER, ownerField: "userId" }]) - No Hardcoded Secrets: Secrets must stay in environment variables or GCP Secret Manager.
Law: After any schema change, the SDK MUST be regenerated before editing application logic.