# Configure the Google Cloud provider provider "google" { project = var.project_id region = var.region user_project_override = false } # Configure the google-beta provider for Firebase resources provider "google-beta" { project = var.project_id region = var.region user_project_override = false } # Create a new Google Cloud Project resource "google_project" "main_project" { name = var.project_name project_id = var.project_id billing_account = var.billing_account # Enable deletion policy to allow project deletion deletion_policy = "DELETE" } # Enable required APIs for the project resource "google_project_service" "project_services" { project = google_project.main_project.project_id service = "cloudresourcemanager.googleapis.com" # Wait for the project to be created before enabling services depends_on = [google_project.main_project] } # Enable required Firebase APIs resource "google_project_service" "firebase_services" { project = google_project.main_project.project_id service = "firebase.googleapis.com" # Wait for the project to be created before enabling services depends_on = [google_project.main_project] } # Enable Firestore API (required for Firestore database) resource "google_project_service" "firestore_service" { project = google_project.main_project.project_id service = "firestore.googleapis.com" # Wait for Firebase services to be enabled before enabling Firestore depends_on = [google_project_service.firebase_services] } resource "google_firebase_project" "firebase_project" { provider = google-beta project = google_project.main_project.project_id } # Create Firebase Web App resource "google_firebase_web_app" "main_app" { provider = google-beta # project = "${google_project.main_project.name}" display_name = "Rothbard Law Group" # Wait for Firebase services to be enabled before creating app depends_on = [google_project_service.firebase_services] } # Create Firestore Database resource "google_firestore_database" "main_firestore" { provider = google-beta project = google_project.main_project.project_id name = "${google_project.main_project.name}" location_id = var.region type = "FIRESTORE_NATIVE" concurrency_mode = "OPTIMISTIC" # Wait for Firestore API to be enabled before creating database depends_on = [google_project_service.firestore_service] } # Output the project ID and name output "project_id" { value = google_project.main_project.project_id } output "project_name" { value = google_project.main_project.name } output "firebase_app_id" { value = google_firebase_web_app.main_app.app_id } output "firestore_database_name" { value = google_firestore_database.main_firestore.name }