Skip to content

Repository Structure

Complete reference for the repository layout and file organization.

Directory Tree

.
├── .github/
│   └── workflows/
│       ├── checkov.yaml           # Security scanning
│       ├── deploy-eks.yml         # Terraform EKS deployment
│       ├── deploy-k8s-app.yml     # Kubernetes app deployment
│       ├── docs-deploy.yaml       # Documentation deployment
│       ├── gitleaks.yaml          # Secret detection
│       ├── infracost.yaml         # Cost estimation
│       ├── lint-pr.yaml           # PR title validation
│       ├── pre-commit-ci.yaml     # Pre-commit hooks CI
│       ├── release.yaml           # Semantic release
│       └── tf-docs.yaml           # Terraform docs generation
├── docs/                          # MkDocs documentation source
│   ├── stylesheets/
│   │   └── extra.css              # Custom CSS
│   ├── getting-started/
│   │   ├── quick-start.md         # Quick start guide
│   │   └── usage.md               # Detailed usage guide
│   ├── user-guide/
│   │   ├── contributing.md        # Contributing guidelines
│   │   ├── commit-conventions.md  # Conventional commits guide
│   │   ├── security.md            # Security documentation
│   │   └── workflows.md           # CI/CD workflows reference
│   ├── reference/
│   │   ├── repository-structure.md # This file
│   │   ├── configuration.md       # Configuration reference
│   │   └── changelog.md           # Changelog
│   └── index.md                   # Documentation home
├── environments/
│   ├── dev/
│   │   └── dev.tfvars             # Dev environment variables
│   ├── qa/
│   │   └── qa.tfvars              # QA environment variables
│   └── prod/
│       └── prod.tfvars            # Prod environment variables
├── k8s/
│   └── apps/
│       └── nginx/                 # Example nginx application
│           ├── base/              # Shared base manifests
│           │   ├── kustomization.yaml
│           │   ├── namespace.yaml
│           │   ├── deployment.yaml
│           │   ├── service.yaml
│           │   └── configmap.yaml
│           └── overlays/          # Environment overrides
│               ├── dev/
│               │   ├── kustomization.yaml
│               │   └── deployment-patch.yaml
│               ├── qa/
│               │   ├── kustomization.yaml
│               │   └── deployment-patch.yaml
│               └── prod/
│                   ├── kustomization.yaml
│                   └── deployment-patch.yaml
├── modules/
│   ├── eks/                       # EKS + VPC module
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   └── outputs.tf
│   └── aws-load-balancer-controller/
│       ├── main.tf
│       ├── variables.tf
│       └── outputs.tf
├── .checkov.yml                   # Checkov security scan config
├── .gitignore                     # Git ignore rules
├── .pre-commit-config.yaml        # Pre-commit hooks
├── .releaserc.json                # Semantic release config
├── .terraform-docs.yml            # terraform-docs config
├── .terraform-version             # Pinned Terraform version
├── .tflint.hcl                    # TFLint configuration
├── .templatesyncignore            # Template sync exclusions
├── CHANGELOG.md                   # Auto-generated changelog
├── CLAUDE.md                      # AI assistant context
├── README.md                      # Project documentation
├── locals.tf                      # Local values
├── main.tf                        # Root orchestration
├── mkdocs.yml                     # MkDocs configuration
├── outputs.tf                     # Terraform outputs
├── providers.tf                   # Provider configuration
├── requirements.txt               # Python dependencies (MkDocs)
├── variables.tf                   # Input variables
└── versions.tf                    # Provider version constraints

Key Files

Root Terraform Files

File Purpose
main.tf Orchestrates EKS and ALB Controller modules
variables.tf All input variable definitions
outputs.tf Exported values (cluster endpoint, VPC ID, etc.)
locals.tf Computed values and naming conventions
providers.tf AWS, Helm, and Kubernetes provider config
versions.tf Terraform and provider version constraints

Configuration Files

File Purpose
.checkov.yml Checkov skip list and scan options
.tflint.hcl TFLint rules and AWS plugin config
.terraform-docs.yml terraform-docs output format
.pre-commit-config.yaml Pre-commit hook definitions
.releaserc.json Semantic release plugins and config
mkdocs.yml Documentation site configuration
requirements.txt Python packages for documentation

Modules

Module Purpose
modules/eks VPC + EKS cluster with managed node groups
modules/aws-load-balancer-controller ALB Controller IAM + Helm release

Naming Conventions

Resources follow the {prefix}-{env}-{resource} pattern:

my-project-dev-cluster        # EKS cluster
my-project-dev-vpc            # VPC
my-project-dev-eks-node-role  # IAM role

All Terraform variables and locals use snake_case.