Files
rothbard/main.tf
Bryce 3678869c26 feat: Add Terraform configuration for Google Cloud project
This commit introduces the complete Terraform infrastructure configuration for setting up the Rothbard Law Group client portal on Google Cloud. The changes include:

- Added google-beta provider for Firebase resources
- Created new Google Cloud Project with proper service enabling
- Enabled required Firebase APIs (firebase.googleapis.com)
- Enabled Firestore API (firestore.googleapis.com)
- Created Firebase Web App for the project
- Created Firestore database in native mode
- Added billing account configuration
- Updated project name and ID variables
- Added output values for Firebase app ID and Firestore database name

This infrastructure setup supports the application's authentication, session management, and data storage needs using Firebase Authentication, Firestore, and Filevine API integration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 08:09:45 -07:00

96 lines
2.7 KiB
HCL

# 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
}