Firebase Configuration

Firebase is the application layer — hosting, functions, database, auth, and storage. Configuration lives in firebase.json and .firebaserc at the workspace root.

Hosting Targets

Target Public Directory Domain Notes
blog dist/frontend/browser jjk.engineer Angular SPA with full CSP
sludge-report sludge-report/ thesludge.report Static site, minimal CSP
docs-site docs-site/_build docs.jjk.engineer Quarto static site

Security Headers

All hosting targets enforce:

  • Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • X-Frame-Options: DENY
  • X-Content-Type-Options: nosniff
  • Cross-Origin-Opener-Policy: same-origin
  • Cross-Origin-Resource-Policy: same-origin

The blog target has the most complex CSP (Google Analytics, reCAPTCHA, Sentry, Font Awesome). The docs site CSP is minimal — static HTML with Quarto’s default assets.

Emulators

Local development uses the Firebase emulator suite:

Emulator Port
Firestore 8080
Auth 9099
Functions 5001
Storage 9199
Emulator UI 4000

Firebase CLI Ownership

The Firebase CLI manages app-layer concerns (invoked by Cloud Build, not manually in production):

  • Hosting deploys
  • Function code deployment
  • Firestore rules and indexes
  • Storage rules
  • Remote Config templates
  • App Check configuration

Infrastructure concerns (APIs, IAM, service accounts) belong to Terraform.