Skip to the content.

← back to home

Contributing

Thanks for your interest in improving this platform. This document explains how to propose changes, the standards we hold the code to, and what reviewers will look for.

By participating in this project you agree to abide by basic norms of respectful, inclusive, professional communication. Be kind, assume good intent, and give constructive feedback.

Ways to contribute

Before you start

Development workflow

Prerequisites

Local validation

Run the same checks CI runs, before you push:

# Format
terraform fmt -recursive terraform/

# Validate every environment
for env in dev staging prod; do
  (cd terraform/environments/$env && terraform init -backend=false && terraform validate)
done

# Security scan — match the per-env split CI uses.
# Prod runs against the strict baseline:
checkov -d terraform/environments/prod --framework terraform --config-file .checkov.yaml
# Dev and staging run against the relaxed baseline (skips 212, 222, 225):
for env in dev staging; do
  checkov -d terraform/environments/$env --framework terraform --config-file .checkov.nonprod.yaml
done

If Checkov reports a finding you believe is a false positive or genuinely not applicable, document the rationale in .checkov.yaml alongside the skip entry. Reviewers will reject blanket skips.

Testing infrastructure changes

There is no automated end-to-end test harness yet. For changes that touch the Terraform modules, please:

  1. Run terraform plan against a real Azure subscription you control.
  2. Attach the relevant excerpt of the plan output to the PR description.
  3. Note any resource replacements (-/+) explicitly — they often hide downtime or data loss.

For changes that only touch documentation, scripts, or workflow YAML, no infrastructure run is required, but explain how you verified the change.

Coding standards

Terraform

Shell scripts

GitHub Actions workflows

Commit messages

We loosely follow Conventional Commits — the type(scope): subject form is helpful but not strictly enforced. Examples:

Write the body in the imperative mood and explain why the change exists, not what it does — the diff already shows the what.

Pull request checklist

Before requesting review:

PRs that change defaults or remove variables must call this out clearly under a Breaking changes heading in the description.

Security

If you believe you’ve found a security issue, do not open a public issue. Email the maintainers privately at security@<your-domain> with reproduction details, and give us a reasonable window to respond before public disclosure.

License

By contributing, you agree that your contributions will be licensed under the project’s MIT license.