You’ll design and build a small app or service—anything you like—then deploy it to AWS using Terraform. The only non-negotiable requirements are below. Everything else is up to you.
- Must have at least one route or endpoint serving dynamic data (e.g., JSON, HTML, or specialised output).
- You decide the tech stack, the language, the framework, etc.
- Provide minimal instructions in your README for local setup.
- You must containerise your app if you choose ECS (push to ECR or DockerHub, your call).
- If you choose Lambda, package the function for deployment. You must still store code in some repository.
- Must run behind HTTPS (i.e., must have a domain, certificate and secure endpoint).
- All AWS resources should be created via Terraform, including domain DNS, cert, ECS/LB or API Gateway, etc.
- Use DRY principle (create your own, don’t just stick everything in main.tf).
- Show you know “proper” Terraform structure and best practices.
- Must have an automated pipeline that builds, tests (some minimal test to prove it’s working), and deploys. We recommend using GitHub Actions but you may use GitLab CI/CD, Drone, Concourse, CircleCI or whatever you like (bonus points for Jenkins 💀)
- Keep credentials/secrets out of code. Use parameter store/secrets manager, vault or your own approach. Bonus points for using a self-hosted vault server to store secrets.
- Provide a link or explanation for your pipeline in your README.
- Show us how your pieces fit together. Use any tool (Lucidchart, draw.io, mermaid, ASCII art, etc.).
- Put it in your README.
- Repo with all code (app code + Terraform + pipeline files).
- Running Service accessible at
https://<app>.<your-domain>
orhttps://<whatever>.labs.<your-domain>
- README with a) instructions b) screenshots of the running service c) architecture diagram.
- Security: Keep secrets safe. Use IAM roles, not static keys in code.
- Terraform: Using random providers or modules from the registry is allowed, but you have to figure out how to integrate them.
- Domain/HTTPS: No plain HTTP. Show you can set up domain validation, route traffic properly, etc.
- Advanced: If you want to stand out, consider canary deployments, multi-stage env, or custom logging/monitoring solutions.
Goal: Challenge yourself. This is intentionally open-ended so you can’t just copy/paste from GPT or tutorials. Demonstrate creativity, best practices and mastery of Infrastructure & DevOps.
If you need some inspiration, here are some example apps you may use: