Build and deploy Firebase Data Connect backends with PostgreSQL. Use for schema design, GraphQL queries/mutations, authorization, and SDK generation for web, Android, iOS, and Flutter apps.
Firebase Data Connect is a relational database service using Cloud SQL for PostgreSQL with GraphQL schema, auto-generated queries/mutations, and type-safe SDKs.
dataconnect/
├── dataconnect.yaml # Service configuration
├── schema/
│ └── schema.gql # Data model (types with @table)
└── connector/
├── connector.yaml # Connector config + SDK generation
├── queries.gql # Queries
└── mutations.gql # Mutations
Follow this strict workflow to build your application. You must read the linked reference files for each step to understand the syntax and available features.
schema/schema.gql)Define your GraphQL types, tables, and relationships.
Read reference/schema.md for:
@table, @col, @default@ref, one-to-many, many-to-many)connector/queries.gql, connector/mutations.gql)Write the queries and mutations your client will use. Data Connect generates the underlying SQL.
Read reference/operations.md for:
- Queries: Filtering (
where), Ordering (orderBy), Pagination (limit/offset).- Mutations: Create (
_insert), Update (_update), Delete (_delete).- Upserts: Use
_upsertto "insert or update" records (CRITICAL for user profiles).- Transactions: use
@transactionfor multi-step atomic operations.
connector/ files)Add authorization logic closely with your operations.
Read reference/security.md for:
@auth(level: ...)for PUBLIC, USER, or NO_ACCESS.@checkand@redactfor row-level security and validation.
Generate type-safe code for your client platform.
Read reference/sdks.md for:
- Android (Kotlin), iOS (Swift), Web (TypeScript), Flutter (Dart).
- How to initialize and call your queries/mutations.
- Nested Data: See how to access related fields (e.g.,
movie.reviews).
If you need to implement a specific feature, consult the mapped reference file:
| Feature | Reference File | Key Concepts |
|---|---|---|
| Data Modeling | reference/schema.md | @table, @unique, @index, Relations |
| Vector Search | reference/advanced.md | Vector, @col(dataType: "vector") |
| Full-Text Search | reference/advanced.md | @searchable |
| Upserting Data | reference/operations.md | _upsert mutations |
| Complex Filters | reference/operations.md | _or, _and, _not, eq, contains |
| Transactions | reference/operations.md | @transaction, response binding |
| Environment Config | reference/config.md | dataconnect.yaml, connector.yaml |
Read reference/config.md for deep dive on configuration.
Common commands (run from project root):
# Initialize Data Connect
npx -y firebase-tools@latest init dataconnect
# Start local emulator
npx -y firebase-tools@latest emulators:start --only dataconnect
# Generate SDK code
npx -y firebase-tools@latest dataconnect:sdk:generate
# Deploy to production
npx -y firebase-tools@latest deploy --only dataconnect
For complete, working code examples of schemas and operations, see examples.md.