This project contains the Google Cloud Platform components of the Sunlight Sensor project, which is described in more detail in my portfolio.
- Terraform, for managing GCP resources
- React, Next.js in the web app
- Python, in a number of utility scripts and Cloud Run Functions
- Go, in the daily Open-Meteo weather information retrieval function
To test all of the Python-based subprojects, like rest_sensor_api_to_pubsub pytest from the root directory:
pytestIn order to configure your GitHub actions, you will need to create some GitHub Actions secrets in your repo.
| GitHub Secret Name | Terraform Output or Source | Purpose |
|---|---|---|
GCP_PROJECT_ID | gcp_project_id in terraform.tfvars | The Google Cloud Project ID. |
GCP_SERVICE_ACCOUNT_EMAIL_BQ_TO_FS_SENSORS_RUNTIME | bq_to_firestore_sensors_sa_email | The runtime service account for the bq-to-fs-sensor-data-exporter function. |
GCP_SERVICE_ACCOUNT_EMAIL_BQ_TO_FS_WEATHER_RUNTIME | bq_to_fs_weather_sa_email | The runtime service account for the bq-to-fs-weather-exporter function. |
GCP_SERVICE_ACCOUNT_EMAIL_FUNCTIONS | function_deployer_email | The email of the primary service account that GitHub Actions uses to deploy all functions. |
GCP_SERVICE_ACCOUNT_EMAIL_OPEN_METEO_RUNTIME | open_meteo_runtime_sa_email | The runtime service account for the daily-open-meteo-importer function. |
GCP_SERVICE_ACCOUNT_EMAIL_RUNTIME | function_runtime_email | A general-purpose or legacy runtime service account. Newer functions use dedicated SAs. |
GCP_SERVICE_ACCOUNT_EMAIL_SENSOR_PROXY_RUNTIME | rest_proxy_runtime_sa_email | The runtime service account for the rest-to-pubsub-proxy-function. |
GCP_SERVICE_ACCOUNT_EMAIL_TEST_PATTERN_RUNTIME | test_pattern_runtime_sa_email | The runtime service account for the daily-test-pattern-generator function. |
GCP_SERVICE_ACCOUNT_EMAIL_WEBAPP | webapp_deployer_email | The service account used by the Next.js web application's backend (defined in webapp-specific Terraform). |
GCP_WORKLOAD_IDENTITY_PROVIDER | workload_identity_provider | The full resource name of the Workload Identity Provider for OIDC. |
REACT_APP_FIREBASE_CONFIG | firebase_web_app_config | The JSON configuration object for connecting the frontend React app to Firebase (from Firebase Console or Terraform). |
SENSOR_API_BEARER_TOKEN | Manual Entry | The secret token used by sensors and the test pattern generator to authenticate with the REST API proxy. |
SENSOR_API_DOMAIN_NAME | sensor_target_api_domain_name in terraform.tfvars | The custom domain for the sensor API (e.g., sensors.example.com). |
Licensing information is in the LICENSE and THIRD_PARTY_LICENSES file.
This project was developed with assistance from ChatGPT 4o (2025), Google Gemini 2.5 Pro (2025), and Claude Sonnet 4 and 4.5 (2025).
