This repository is the single monorepo for v1 of a greenfield data platform centered on AWS, Snowflake, dbt, Terraform, GitHub, Python, and SQL.
The v1 design is intentionally opinionated: one cloud, one warehouse platform, one infrastructure toolchain, and one CI/CD system. That keeps the first version interview-ready and practical without inventing premature integrations.
| Capability | v1 choice | Decision |
|---|---|---|
| Primary cloud | AWS | Use AWS as the only cloud boundary in v1. |
| Primary warehouse / lakehouse | Snowflake | Use Snowflake as the primary analytical storage and compute platform in v1. |
| Transformation layer | dbt + SQL | Use dbt for versioned transformations and SQL for warehouse-native logic. |
| Infrastructure as code | Terraform | Use Terraform as the primary IaC tool; defer Pulumi. |
| Source control and CI/CD | GitHub | Use GitHub as the primary repo host and CI/CD system; defer Azure DevOps. |
| Lightweight automation | Python | Use Python for small validation and automation tasks inside the repo. |
- AWS is the primary cloud because the platform goal is AWS-first rather than multi-cloud.
- Snowflake is the primary warehouse and lakehouse decision because v1 should center on one analytical platform instead of splitting between Snowflake and Databricks.
- Terraform is the primary IaC choice because declarative infrastructure is a better fit than introducing Pulumi and application-language abstractions in the first version.
- GitHub is the primary CI/CD choice because the repository already lives in GitHub and GitHub Actions is enough for v1 repository automation.
- dbt, SQL, and Python stay in the stack because they directly support modeling, warehouse administration, and lightweight repo automation in a single-repo workflow.
- Fivetran: defer until the first source systems, ownership boundaries, and ingestion SLAs are defined.
- Pulumi: defer because Terraform is the primary IaC tool for v1.
- Azure DevOps: defer because GitHub is the primary source control and CI/CD platform for v1.
- Databricks: defer from v1 and revisit only if the platform needs a separate Spark-heavy compute layer beyond Snowflake and dbt.
- Sigma: defer until a concrete BI consumption layer is needed.
- Atlan: defer until data governance, catalog, and lineage ownership are defined.
- Slingshot: defer until program or portfolio tracking needs are clear.
AGENTS.mddefines the operating contract for future work.docs/architecture.mdrecords the current target architecture and delivery boundaries.docs/adr/stores architecture decision records for this monorepo.docs/task-log.mdtracks task-by-task changes, remaining work, and validation steps.infra/terraform/contains modular Terraform undermodules/and environment roots underenvs/devandenvs/prod.transform/dbt/contains the dbt project scaffold.snowflake/contains Snowflake-specific SQL boundaries and guidance.scripts/validate_repo.pyvalidates the baseline repository structure..github/workflows/repo-validation.ymlruns repository validation in GitHub Actions.Makefileprovides bootstrap-friendly Terraform format and validate targets.
Run the repository validation script from the repo root for the structural baseline:
python3 scripts/validate_repo.pyFor Terraform changes, run the full local Terraform validation flow as well:
make terraform-fmt
make terraform-validate