DEV Community

loading...
Cover image for A month of Flutter: setting up Firebase Firestore

A month of Flutter: setting up Firebase Firestore

abraham profile image Abraham Williams Originally published at bendyworks.com ・2 min read

Originally published on bendyworks.com.

After a user signs in with Google and registers, their info needs to be saved to a databasee. I'm going to use Firebase Firestore as my backend. Within the birb codebase I'm going to create a server directory and initialize a Firestore project inside it using firebase-tools.

$ firebase init

     ######## #### ########  ######## ########     ###     ######  ########
     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##
     ######    ##  ########  ######   ########  #########  ######  ######
     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##
     ##       #### ##     ## ######## ########  ##     ##  ######  ########

You're about to initialize a Firebase project in this directory:

  /home/abraham/Development/birb

? Which Firebase CLI features do you want to setup for this folder? Press Space to select features, then Enter to confirm your choices.
 ◯ Database: Deploy Firebase Realtime Database Rules
❯◉ Firestore: Deploy rules and create indexes for Firestore
 ◯ Functions: Configure and deploy Cloud Functions
 ◯ Hosting: Configure and deploy Firebase Hosting sites
 ◯ Storage: Deploy Cloud Storage security rules
Enter fullscreen mode Exit fullscreen mode

I choose the same Firebase project being used for authentication, the default Firestore Rules file, and the default Firestore indexes file. By default .firebaserc is not .gitignored. I have added my .firebasrc to .gitignore because this is an open source project. Anyone who forks Birb will need to set up their own Firebase project.

In the Firebase console I will now enable Firestore for the project.

Enabling Firestore

Here are the default firestore.rules that just say don't allow reads or writes.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Deploying the rules is handled with the firebase-tools Node package.

$ npx firebase deploy

=== Deploying to 'birb-app-dev'...

i  deploying firestore
i  firestore: checking firestore.rules for compilation errors...
i  firestore: reading indexes from firestore.indexes.json...
✔  firestore: rules file firestore.rules compiled successfully
i  firestore: uploading rules firestore.rules...
✔  firestore: deployed indexes in firestore.indexes.json successfully
✔  firestore: released rules firestore.rules to cloud.firestore

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/birb-app-dev/overview
Enter fullscreen mode Exit fullscreen mode

Installing the cloud_firestore package in pubspec.yaml happens last.

Before integrating with the Flutter code, I'm going to write some rules with so come back soon for that article.

Code changes

Discussion (2)

pic
Editor guide
Collapse
cyberdroidmann profile image
Gabriel Stephen Alexander

Phew! Thanks for your write ups! The TDD is amazing

Collapse
abraham profile image
Abraham Williams Author

Glad you are enjoying them!