masamune_model_firestore_builder 3.2.2 copy "masamune_model_firestore_builder: ^3.2.2" to clipboard
masamune_model_firestore_builder: ^3.2.2 copied to clipboard

Define a builder to describe Firestore rules; build using the masamune_annotation annotation.

Masamune logo

Masamune Model Firestore

Follow on GitHub Follow on X Follow on YouTube Maintained with Melos

GitHub Sponsor


[GitHub] | [YouTube] | [Packages] | [X] | [LinkedIn] | [mathru.net]


Masamune Model Firestore Builder #

Usage #

Installation #

  1. Add the builder as a development dependency alongside the runtime package.
flutter pub add katana_model_firestore
flutter pub add --dev masamune_model_firestore_builder
flutter pub add --dev build_runner

Generate Firestore Rules and Indexes #

  1. Annotate your models with @CollectionModelPath and/or @DocumentModelPath:
// lib/models/user.dart

@freezed
@formValue
@immutable
@CollectionModelPath('user')
class UserModel with _$UserModel {
  const factory UserModel({
    required String name,
    @Default('') String email,
    @Default(ModelTimestamp.now()) ModelTimestamp createdAt,
  }) = _UserModel;
  // ... rest of the model
}
  1. Run the code generator:
katana code generate

This generates:

  • firebase/firestore.rules - Security rules based on your model structure
  • firebase/firestore.indexes.json - Composite indexes for your queries

Generated Files #

firestore.rules: Contains security rules like:

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

firestore.indexes.json: Contains index definitions for complex queries:

{
  "indexes": [
    {
      "collectionGroup": "user",
      "queryScope": "COLLECTION",
      "fields": [
        {"fieldPath": "createdAt", "order": "DESCENDING"},
        {"fieldPath": "name", "order": "ASCENDING"}
      ]
    }
  ]
}

Deploy to Firebase #

  1. Deploy the generated rules and indexes to your Firebase project:
# Deploy both rules and indexes
firebase deploy --only firestore:rules,firestore:indexes

# Or deploy individually
firebase deploy --only firestore:rules
firebase deploy --only firestore:indexes

Customize Generation #

Configure output paths in build.yaml:

targets:
  $default:
    builders:
      masamune_model_firestore_builder:
        options:
          output_dir: "firebase"  # Default output directory

Tips #

  • Run katana code generate after any model changes to keep rules synchronized
  • Review generated rules before deploying to production
  • Add custom rules in the Firebase Console if needed (they won't be overwritten)
  • Use firebase deploy --only firestore:rules for quick rule updates during development

GitHub Sponsors #

Sponsors are always welcome. Thank you for your support!

https://github.com/sponsors/mathrunet

2
likes
140
points
646
downloads

Publisher

verified publishermathru.net

Weekly Downloads

Define a builder to describe Firestore rules; build using the masamune_annotation annotation.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, build, code_builder, dart_style, glob, http, katana, katana_builder, masamune_annotation, masamune_builder, meta, source_gen

More

Packages that depend on masamune_model_firestore_builder