Install this agent skill to your local

pnpm dlx add-skill https://github.com/vuralserhat86/antigravity-agentic-skills/tree/HEAD/skills/firestore_patterns

Skill Files

Browse the full folder contents for firestore_patterns.

Download Skill

Loading file tree…

skills/firestore_patterns/SKILL.md

Skill Metadata

Name
firestore_patterns
Description
Firebase Firestore NoSQL patterns, real-time sync ve security rules rehberi.

🔥 Firestore Patterns

Firebase Firestore NoSQL patterns rehberi.


📋 Temel İşlemler

import { 
  collection, doc, getDoc, setDoc, 
  addDoc, updateDoc, deleteDoc, query, where 
} from 'firebase/firestore';

// Read
const docRef = doc(db, 'users', 'userId');
const docSnap = await getDoc(docRef);

// Create
await setDoc(doc(db, 'users', 'userId'), { name: 'John' });
await addDoc(collection(db, 'users'), { name: 'John' }); // Auto ID

// Update
await updateDoc(doc(db, 'users', 'userId'), { name: 'Jane' });

// Delete
await deleteDoc(doc(db, 'users', 'userId'));

🔄 Real-time Listeners

import { onSnapshot } from 'firebase/firestore';

const unsubscribe = onSnapshot(
  doc(db, 'users', 'userId'),
  (doc) => {
    console.log('Data:', doc.data());
  }
);

// Cleanup
unsubscribe();

🔍 Queries

const q = query(
  collection(db, 'users'),
  where('age', '>=', 18),
  where('status', '==', 'active'),
  orderBy('createdAt', 'desc'),
  limit(10)
);

const querySnapshot = await getDocs(q);

🔒 Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read: if request.auth != null;
      allow write: if request.auth.uid == userId;
    }
  }
}

Firestore Patterns v1.1 - Enhanced

🔄 Workflow

Kaynak: Firebase Security Rules Guide

Aşama 1: Data Modeling

  • [ ] Access Patterns: Veriyi nasıl okuyacağına göre modelle (SQL gibi normalize etme).
  • [ ] Subcollections: 1MB döküman limitini aşmamak için alt koleksiyon kullan.
  • [ ] Denormalization: Okuma performansını artırmak için veriyi çoğaltmayı düşün.

Aşama 2: Security Implementation

  • [ ] Auth: request.auth != null kontrolünü her kurala ekle.
  • [ ] Validation: Gelen veriyi (type, length) security rules içinde doğrula.
  • [ ] Testing: Emulator kullanarak kuralları unit test ile sına.

Aşama 3: Optimization

  • [ ] Indexes: Karmaşık sorgular için composite index oluştur.
  • [ ] Offline: Mobil için offline persistence'ı aktif et.

Kontrol Noktaları

| Aşama | Doğrulama | |-------|-----------| | 1 | Bir dökümanı okumak için 100 başka döküman okumak gerekiyor mu? (Kötü) | | 2 | Herkesin yazabildiği (allow write: if true) bir yer kaldı mı? (Kritik) | | 3 | Sorgular index hatası veriyor mu? |