Skip to main content

firebase-integration

Standardize Firebase integration for this project across client SDK, Admin SDK, auth/session flows, Firestore usage, and environment variables. Use when adding or modifying Firebase auth, Firestore reads/writes, API routes touching Firebase, or Firebase-related setup.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
khorzhenwin/tenxeng
آخر نشاط في المصدر
١٠ مارس ٢٠٢٦ في ٠٥:٣٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
firebase-integration
description
Standardize Firebase integration for this project across client SDK, Admin SDK, auth/session flows, Firestore usage, and environment variables. Use when adding or modifying Firebase auth, Firestore reads/writes, API routes touching Firebase, or Firebase-related setup.
# Firebase Integration ## When To Use Use this skill when work involves: - Firebase Auth sign-in/session behavior - Firestore reads/writes in API routes - Firebase client/admin SDK initialization - Environment variable setup for Firebase - Rate limiting that persists in Firestore ## Quick Start Workflow 1. Identify runtime context: - Browser/client component -> use `@/lib/firebase/client`. - Server/API route -> use `@/lib/firebase/admin`. 2. Verify API route shape: - `export const runtime = "nodejs"` - `export const dynamic = "force-dynamic"` (for dynamic routes) 3. Enforce auth first for protected endpoints: - Use `getSessionUser()` from `@/lib/auth/server`. 4. Apply rate limits before expensive work: - `consumeRateLimit()` for standard writes/actions. - `consumeSlidingWindowRateLimit()` for polling endpoints. 5. Return consistent errors: - `401` unauthorized, `403` forbidden, `404` not found, `409` invalid state, `429` rate-limited. ## Project Defaults - Client SDK initialization is centralized in `lib/firebase/client.ts`. - Admin SDK initialization is centralized in `lib/firebase/admin.ts`. - Session verification lives in `lib/auth/server.ts`. - Firestore-backed rate limiting uses `__rateLimits` via `lib/server/rate-limit.ts`. - API contract expectations are documented in `docs/social/API_CONTRACTS.md`. ## Environment Variables Required client variables: - `NEXT_PUBLIC_FIREBASE_API_KEY` - `NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN` - `NEXT_PUBLIC_FIREBASE_PROJECT_ID` - `NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET` - `NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID` - `NEXT_PUBLIC_FIREBASE_APP_ID` Required server variables: - `FIREBASE_PROJECT_ID` - `FIREBASE_CLIENT_EMAIL` - `FIREBASE_PRIVATE_KEY` (newline-safe with `\n`) Reference: - `.env.example` - `README.md` ## Integration Standards - Import Firebase client SDK only from `@/lib/firebase/client` in browser code. - Import Admin SDK only from `@/lib/firebase/admin` in server code. - Do not initialize Firebase app in feature files; reuse shared module exports. - Use `FieldValue.serverTimestamp()` for server-side timestamp writes. - Prefer transaction semantics (`adminDb.runTransaction`) for state transitions with contention. ## API Route Checklist - [ ] Exports `runtime = "nodejs"`. - [ ] Uses `getSessionUser()` before protected logic. - [ ] Applies appropriate limiter for endpoint behavior. - [ ] Validates input before DB writes (for example via `zod`). - [ ] Uses status codes aligned with `docs/social/API_CONTRACTS.md`. - [ ] Writes are scoped to authorized user and ownership checks. ## Guardrails Do: - Keep Firebase initialization and credential parsing centralized. - Use per-user limiter keys (`${uid}:<endpoint_key>`). - Use merge writes intentionally and explicitly. Do not: - Import `firebase-admin/*` in client components. - Bypass auth checks on social/chat/pvp protected routes. - Introduce new Firestore collections without checking rule/index implications. - Add endpoint-specific status code semantics that conflict with existing contracts. ## Repo References - `lib/firebase/client.ts` - `lib/firebase/admin.ts` - `lib/auth/server.ts` - `lib/server/rate-limit.ts` - `app/api/session/route.ts` - `app/api/chat/conversations/route.ts` - `docs/social/API_CONTRACTS.md` - `README.md` - `.env.example` ## Validation Before Finishing - Run lint and ensure route-level imports are context-correct (client vs admin). - Ensure auth and rate limiting are placed before expensive operations. - Confirm response codes and error messages match established endpoint patterns.
عرض على GitHub