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.

Ir para a instalação

Informações da origem

Repositório
khorzhenwin/tenxeng
Última atividade na origem
10 de março de 2026 às 05:37
Idioma detectado do SKILL.md
inglês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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.
Ver no GitHub