Firebase (Cloud Functions and security rules) project structure

Firebase (Cloud Functions and security rules) project structure

Explorer

  • .firebase…, not committed
  • .vscodenew
  • extensions.jsonnew
  • functions
  • lib…, not committed
  • node_modules…, not committed
  • .eslintrc.js
  • .gitignore
  • .envnew
  • .env.stagingnew
  • .env.localnew, not committed
  • .secret.localnew, not committed
  • package.json
  • package-lock.json
  • tsconfig.json
  • tsconfig.dev.json
  • vitest.config.tsnew
  • node_modules…new, not committed
  • scriptsnew
  • seed-emulator.tsnew
  • grant-admin.tsnew
  • seednew
  • firestore_export…new
  • auth_export…new
  • firebase-export-metadata.jsonnew
  • testsnew
  • package.jsonnew
  • vitest.config.tsnew
  • .firebaserc
  • .gitignore
  • lefthook.ymlnew
  • .nvmrcnew
  • AGENTS.mdnew
  • README.md
  • database.rules.json
  • firebase-debug.log, not committed
  • firebase.json
  • firestore.indexes.json
  • firestore.rules
  • package.jsonnew
  • package-lock.jsonnew
  • storage.rules
  1. # Install the Firebase CLI and sign in

    npm install -g firebase-tools && firebase login
  2. # Create the project files: pick Firestore, Functions (TypeScript, ESLint), Storage and Emulators

    mkdir my-firebase-app && cd my-firebase-app && firebase init firestore functions storage emulators
  3. # Add staging and production aliases

    firebase use --add
  4. # Add validation to the functions package

    npm --prefix functions install zod
  5. # Add test tools for functions and rules

    npm --prefix functions install -D vitest firebase-functions-test && mkdir tests && npm --prefix tests install -D @firebase/rules-unit-testing firebase vitest
  6. # Run everything locally with saved seed data

    firebase emulators:start --import=./seed --export-on-exit
  7. # Deploy only what you mean to

    firebase deploy --only firestore,storage,functions --project staging