# KodeKloud: Beta Courses CDK for Terraform with TypeScript

## CDK for Terraform with TypeScript

### Course Introduction

- [Introduction](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Introduction/page.md): A hands on course teaching TypeScript and CDK for Terraform to author, structure, and deploy AWS infrastructure including Lambda and IAM with practical labs and Terraform migration guidance.
- [Course Introduction and Objectives](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Course-Introduction-and-Objectives/page.md): Introduction to using TypeScript with CDK for Terraform to define, test, and deploy AWS infrastructure through hands-on labs and best practices for maintainable IaC.
- [Understanding Infrastructure](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Understanding-Infrastructure/page.md): Explains software and cloud infrastructure using an office building analogy, detailing compute, storage, networking, security, observability, resilience, and why distinguishing infrastructure from applications matters.
- [Click Ops](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Click-Ops/page.md): Compares manual cloud console ClickOps with Infrastructure as Code, highlighting risks of manual provisioning and benefits of IaC for reproducible, auditable, and automated deployments.
- [Infrastructure as Code IaC Introduction](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Infrastructure-as-Code-IaC-Introduction/page.md): Introduction to Infrastructure as Code explaining benefits, history, and using tools like Terraform and CDK for Terraform with TypeScript for reproducible automated cloud infrastructure.
- [Terraform Demo S3 Deployment](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Terraform-Demo-S3-Deployment/page.md): Demo repository showing how to deploy AWS S3 buckets with Terraform using a reusable module, random unique names, and object lock considerations
- [Terraform Overview Benefits and Limitations](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/Terraform-Overview-Benefits-and-Limitations/page.md): Overview of Terraform, highlighting benefits like reproducibility, automation, modularity, and limitations such as HCL learning curve, limited type safety, and comparison with CDK for Terraform.
- [CDKTF A Better Way Forward](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/CDKTF-A-Better-Way-Forward/page.md): Introduces CDKTF, using general-purpose languages to generate Terraform configuration for reusable, testable infrastructure while preserving Terraform providers, state, and CLI workflows.
- [CDKTF Demo S3 Deployment](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/CDKTF-Demo-S3-Deployment/page.md): Guide to deploying AWS S3 buckets using CDK for Terraform with TypeScript, including reusable constructs, provider setup, random suffixes, synth and deploy steps
- [CDKTF Overview and Benefits](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Course-Introduction/CDKTF-Overview-and-Benefits/page.md): Overview of CDK for Terraform explaining benefits of using programming languages like TypeScript for type safe, reusable infrastructure definitions compatible with Terraform and OpenTofu.

### Introduction to TypeScript

- [Typescript Introduction](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Typescript-Introduction/page.md): Introduction to using TypeScript for infrastructure as code, covering setup, tooling, typing benefits, project initialization, and running a Hello World with ts-node and Yarn
- [Syntax Variables and Primitives in TypeScript](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Syntax-Variables-and-Primitives-in-TypeScript/page.md): Overview of TypeScript variable declarations, primitive types, explicit typing, and type inference demonstrated via a simple duck pond example
- [Arrays and Objects](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Arrays-and-Objects/page.md): Guide to arrays and objects in TypeScript, showing how to type lists and objects, combine them into arrays of typed items, and handle mutability and readonly usage
- [Types and Interfaces](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Types-and-Interfaces/page.md): Overview of TypeScript types and interfaces, defining object shapes, optional properties, differences and examples for declaring and using them
- [Functions](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Functions/page.md): Explains TypeScript function parameters including optional and default parameters, nullish coalescing versus logical OR, and arrow function equivalents using a duck quack example.
- [Classes](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Classes/page.md): Explains TypeScript classes using a PondDuck example to demonstrate encapsulation, properties, methods, and independent instance state
- [Union Types and Enums](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Union-Types-and-Enums/page.md): Explains TypeScript union literal types and enums, comparing use cases and trade offs to improve type safety and prevent invalid values with duck examples.
- [Putting It All Together](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Putting-It-All-Together/page.md): Demonstrates TypeScript fundamentals using a duck pond example, covering enums, union types, interfaces, classes, pure versus impure functions, and coding best practices.
- [Importing in TypeScript](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Importing-in-TypeScript/page.md): Guide to importing and exporting in TypeScript, module structuring, ESM import syntaxes, export strategies, and project best practices for readable reusable code
- [Configuring TypeScript](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/Configuring-TypeScript/page.md): How to configure TypeScript using tsconfig.json, explaining compilerOptions, include and exclude patterns, common settings and stricter checks to catch errors.
- [TypeScript Development Best Practices](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-TypeScript/TypeScript-Development-Best-Practices/page.md): Practical project-level best practices for organizing, linting, typing, naming, and testing TypeScript codebases to improve consistency, maintainability, and automation.

### Introduction to CDKTF

- [CDKTF Introduction](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-CDKTF/CDKTF-Introduction/page.md): Guide to using CDKTF with TypeScript to scaffold local project files, covering prerequisites, init, synth and deploy workflows, CLI usage, and applying patterns to cloud providers.
- [Providers and Resources](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-CDKTF/Providers-and-Resources/page.md): Explains using CDKTF with TypeScript to create and manage local files via the local provider, including setup, file resources, lifecycle, state, and workflow.
- [Outputs](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-CDKTF/Outputs/page.md): Explains how to define and use Terraform outputs in CDK for Terraform to expose resource values, share between stacks, and provide data for automation.
- [Constructs](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-CDKTF/Constructs/page.md): Explains building reusable CDKTF constructs in TypeScript using a ProjectFolder example to encapsulate resources, enable reuse, and expose resource properties for stacks
- [Key Takeaways](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Introduction-to-CDKTF/Key-Takeaways/page.md): Guide to using CDK for Terraform with TypeScript to build reusable constructs that automate project folder and file creation, synthesize Terraform configuration, and follow best practices.

### AWS With CDKTF

- [AWS With CDKTF](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/AWS-With-CDKTF/page.md): Tutorial for automating AWS Lambda and API Gateway deployment with CDK for Terraform in TypeScript for a NamePicker sample app.
- [Deploy and Configure IAM Role](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/Deploy-and-Configure-IAM-Role/page.md): Instructions to create and configure an AWS Lambda IAM execution role including trust policy, permissions for logging, and verification steps while following least privilege
- [Lambda Function Construct](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/Lambda-Function-Construct/page.md): Guide to building a reusable CDKTF construct that packages and deploys AWS Lambda functions using TerraformAsset and manages IAM role and logging policy
- [API Gateway Construct](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/API-Gateway-Construct/page.md): Guide to a reusable CDKTF construct that exposes an AWS Lambda via API Gateway using Lambda proxy integration.
- [Backend Strategies in CDKTF](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/Backend-Strategies-in-CDKTF/page.md): Best practices for managing Terraform state with CDKTF, migrating from local to remote S3 backend with DynamoDB locking and using a two-app pattern to avoid circular dependencies
- [Adding More Functionality](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/AWS-With-CDKTF/Adding-More-Functionality/page.md): Guide to extending a CDK for Terraform AWS project with reusable Lambda constructs, multiple stacks and environments, deterministic packaging, remote state backend, environment variable configuration, and deployment workflows

### Conclusion

- [Key Concepts Summary](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Conclusion/Key-Concepts-Summary/page.md): Final course recap on using TypeScript with CDK for Terraform to build reusable, maintainable AWS infrastructure as code, covering projects, constructs, state management, and best practices.
- [CDKTF Development Best Practices](https://notes.kodekloud.com/docs/CDK-for-Terraform-with-TypeScript/Conclusion/CDKTF-Development-Best-Practices/page.md): Practical best practices for CDK for Terraform covering when to import modules versus write constructs, incremental migration from Terraform, examples, design guidance, and learning resources
