# lm-academy/terraform-course architecture

> Architecture diagram of the GitHub repository lm-academy/terraform-course, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lm-academy/terraform-course
- Repository: https://github.com/lm-academy/terraform-course

## Overview

This repository is a self-paced Terraform course: learners work through exercises, study the corresponding example configurations, and take on larger projects. Its content spans Terraform basics, AWS resources and configuration, modules, state and workspaces, and Terraform Cloud. The README describes these folders as roughly following the course, but does not specify runtime calls or precise dependencies between examples; the graph therefore shows only documented learning relationships.

Main entry points: [`projects`](https://github.com/lm-academy/terraform-course/tree/main/projects) (Project challenges), [`exercises`](https://github.com/lm-academy/terraform-course/tree/main/exercises) (Guided exercises), [`02-hcl`](https://github.com/lm-academy/terraform-course/tree/main/02-hcl) (HCL and setup), [`06-resources`](https://github.com/lm-academy/terraform-course/tree/main/06-resources) (AWS resources)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fundamentals["Terraform fundamentals"]
  node_basics["HCL and setup"]
  node_first_project["First project"]
  node_backends["State backends"]
  node_providers["Providers"]
  node_resources["AWS resources"]
end

subgraph group_configuration["Infrastructure configuration"]
  node_data_sources["Data sources"]
  node_inputs_outputs["Inputs and outputs"]
  node_expressions["Expressions"]
  node_functions["Functions"]
  node_multiple_resources["Repeated resources"]
  node_public_modules["Public modules"]
  node_local_modules["Local modules"]
  node_own_module["Own module"]
  node_validation["Object validation"]
end

subgraph group_advanced["Advanced workflows"]
  node_state["State manipulation"]
  node_workspaces["Workspaces"]
  node_terraform_cloud["Terraform Cloud"]
end

subgraph group_projects["Applied projects"]
  node_website_project["Static website"]
  node_iam_project["IAM users"]
  node_lambda_project["Imported Lambda"]
  node_rds_project["RDS module"]
  node_oidc_project["Cloud OIDC"]
end

subgraph group_practice["Learning materials"]
  node_exercises["Guided exercises"]
  node_project_challenges["Project challenges"]
end

node_learner(("Learner"))

node_learner -->|"works through"| node_exercises
node_exercises -->|"guides practice"| node_basics
node_learner -->|"takes on"| node_project_challenges
node_project_challenges -->|"solutions in"| node_website_project
node_project_challenges -->|"solutions in"| node_iam_project
node_project_challenges -->|"solutions in"| node_lambda_project
node_project_challenges -->|"solutions in"| node_rds_project
node_project_challenges -->|"solutions in"| node_oidc_project
node_project_challenges -->|"project 00 in"| node_resources

click node_basics "https://github.com/lm-academy/terraform-course/tree/main/02-hcl"
click node_first_project "https://github.com/lm-academy/terraform-course/tree/main/03-first-tf-project"
click node_backends "https://github.com/lm-academy/terraform-course/tree/main/04-backends"
click node_providers "https://github.com/lm-academy/terraform-course/tree/main/05-providers"
click node_resources "https://github.com/lm-academy/terraform-course/tree/main/06-resources"
click node_data_sources "https://github.com/lm-academy/terraform-course/tree/main/07-data-sources"
click node_inputs_outputs "https://github.com/lm-academy/terraform-course/tree/main/08-input-vars-locals-outputs"
click node_expressions "https://github.com/lm-academy/terraform-course/tree/main/09-expressions"
click node_functions "https://github.com/lm-academy/terraform-course/tree/main/10-functions"
click node_multiple_resources "https://github.com/lm-academy/terraform-course/tree/main/11-multiple-resources"
click node_public_modules "https://github.com/lm-academy/terraform-course/tree/main/12-public-modules"
click node_local_modules "https://github.com/lm-academy/terraform-course/tree/main/13-local-modules"
click node_own_module "https://github.com/lm-academy/terraform-course/tree/main/14-use-own-module"
click node_validation "https://github.com/lm-academy/terraform-course/tree/main/15-object-validation"
click node_state "https://github.com/lm-academy/terraform-course/tree/main/16-state-manipulation"
click node_workspaces "https://github.com/lm-academy/terraform-course/tree/main/17-workspaces"
click node_terraform_cloud "https://github.com/lm-academy/terraform-course/tree/main/18-terraform-cloud"
click node_exercises "https://github.com/lm-academy/terraform-course/tree/main/exercises"
click node_project_challenges "https://github.com/lm-academy/terraform-course/tree/main/projects"
click node_website_project "https://github.com/lm-academy/terraform-course/tree/main/proj01-s3-static-website"
click node_iam_project "https://github.com/lm-academy/terraform-course/tree/main/proj02-iam-users"
click node_lambda_project "https://github.com/lm-academy/terraform-course/tree/main/proj03-import-lambda"
click node_rds_project "https://github.com/lm-academy/terraform-course/tree/main/proj04-rds-module"
click node_oidc_project "https://github.com/lm-academy/terraform-course/tree/main/proj05-tf-cloud-oidc"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_basics,node_first_project,node_backends,node_providers,node_resources toneBlue
class node_data_sources,node_inputs_outputs,node_expressions,node_functions,node_multiple_resources,node_public_modules,node_local_modules,node_own_module,node_validation toneAmber
class node_state,node_workspaces,node_terraform_cloud toneMint
class node_website_project,node_iam_project,node_lambda_project,node_rds_project,node_oidc_project toneRose
class node_exercises,node_project_challenges,node_learner toneIndigo
```

## Components

### Terraform fundamentals

- [HCL and setup](https://github.com/lm-academy/terraform-course/tree/main/02-hcl): `02-hcl`
- [First project](https://github.com/lm-academy/terraform-course/tree/main/03-first-tf-project): `03-first-tf-project`
- [State backends](https://github.com/lm-academy/terraform-course/tree/main/04-backends): `04-backends`
- [Providers](https://github.com/lm-academy/terraform-course/tree/main/05-providers): `05-providers`
- [AWS resources](https://github.com/lm-academy/terraform-course/tree/main/06-resources): `06-resources`

### Infrastructure configuration

- [Data sources](https://github.com/lm-academy/terraform-course/tree/main/07-data-sources): `07-data-sources`
- [Inputs and outputs](https://github.com/lm-academy/terraform-course/tree/main/08-input-vars-locals-outputs): `08-input-vars-locals-outputs`
- [Expressions](https://github.com/lm-academy/terraform-course/tree/main/09-expressions): `09-expressions`
- [Functions](https://github.com/lm-academy/terraform-course/tree/main/10-functions): `10-functions`
- [Repeated resources](https://github.com/lm-academy/terraform-course/tree/main/11-multiple-resources): `11-multiple-resources`
- [Public modules](https://github.com/lm-academy/terraform-course/tree/main/12-public-modules): `12-public-modules`
- [Local modules](https://github.com/lm-academy/terraform-course/tree/main/13-local-modules): `13-local-modules`
- [Own module](https://github.com/lm-academy/terraform-course/tree/main/14-use-own-module): `14-use-own-module`
- [Object validation](https://github.com/lm-academy/terraform-course/tree/main/15-object-validation): `15-object-validation`

### Advanced workflows

- [State manipulation](https://github.com/lm-academy/terraform-course/tree/main/16-state-manipulation): `16-state-manipulation`
- [Workspaces](https://github.com/lm-academy/terraform-course/tree/main/17-workspaces): `17-workspaces`
- [Terraform Cloud](https://github.com/lm-academy/terraform-course/tree/main/18-terraform-cloud): `18-terraform-cloud`

### Applied projects

- [Static website](https://github.com/lm-academy/terraform-course/tree/main/proj01-s3-static-website): `proj01-s3-static-website`
- [IAM users](https://github.com/lm-academy/terraform-course/tree/main/proj02-iam-users): `proj02-iam-users`
- [Imported Lambda](https://github.com/lm-academy/terraform-course/tree/main/proj03-import-lambda): `proj03-import-lambda`
- [RDS module](https://github.com/lm-academy/terraform-course/tree/main/proj04-rds-module): `proj04-rds-module`
- [Cloud OIDC](https://github.com/lm-academy/terraform-course/tree/main/proj05-tf-cloud-oidc): `proj05-tf-cloud-oidc`

### Learning materials

- [Guided exercises](https://github.com/lm-academy/terraform-course/tree/main/exercises): `exercises`
- [Project challenges](https://github.com/lm-academy/terraform-course/tree/main/projects): `projects`

### Other components

- **Learner**

## Connections

- Learner → Guided exercises: works through (evidence: `README.md`)
- Guided exercises → HCL and setup: guides practice (evidence: `README.md`)
- Learner → Project challenges: takes on (evidence: `README.md`)
- Project challenges → Static website: solutions in (evidence: `README.md`)
- Project challenges → IAM users: solutions in (evidence: `README.md`)
- Project challenges → Imported Lambda: solutions in (evidence: `README.md`)
- Project challenges → RDS module: solutions in (evidence: `README.md`)
- Project challenges → Cloud OIDC: solutions in (evidence: `README.md`)
- Project challenges → AWS resources: project 00 in (evidence: `README.md`)
