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; preloadX-Frame-Options: DENYX-Content-Type-Options: nosniffCross-Origin-Opener-Policy: same-originCross-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.