All work
Case study · Internal product · Storm Reply

Software Toolkit

A Terraform scaffold that provisions serverless infrastructure, mocks APIs locally with AWS SAM and gives every developer their own sandbox per branch.

Role
Built it, lead the guild that owns it
Where
Storm Reply UK
Stack
Terraform, AWS SAM, Python, GitHub Actions
Used by
20+ engineers
Clay model of an open cantilever toolbox holding a stack of birdhouse wall panels, gable pieces and two teal roof slabs, beside a row of four small birdhouses, the last one still waiting for its roof

The problem

Setting up a new project used to take about two weeks before anyone wrote a feature: infrastructure, pipelines, environments and a way to test the API locally.

Every project started it again from scratch. Someone copied the Terraform from the last engagement, pulled out the parts that belonged to that client, and spent the first sprint getting a pipeline to deploy anything at all. By the end of it no two projects looked alike, so nothing learned on one of them moved to the next.

Testing infrastructure was the worse half. A Lambda behind API Gateway is awkward to exercise on a laptop, so the loop was to push a change, wait for the pipeline, and read CloudWatch. That is minutes of waiting to find a typo. And because everyone shared the same deployed environment, two people changing infrastructure at the same time meant one apply landing on top of the other, or a state lock held by whoever started first. The workaround was to take turns, which is a queue rather than a fix.

The toolkit makes the fixes the default. One scaffold, SAM for the local loop, and a stack per branch so nobody waits on anyone.

How it works

Scaffold the serverless basics

Twelve Terraform modules cover the building blocks of a serverless app, and a wizard scaffolds each new API endpoint so every project starts from the same shape.

Run the API locally

AWS SAM runs the API on your machine against the same Terraform code that deploys it.

A sandbox for every branch

The branch name is hashed into its own Terraform state, so anyone can run terraform apply from their laptop without touching anyone else's stack.

git branchfeature/login
sha256, first 6a3f9c1
state filesandbox-a3f9c1.tfstate
your stack isolated sandbox
The branch and hash above are illustrative, not a real sandbox.

Keep it tidy

aws-nuke clears out abandoned sandboxes, and Checkov, tflint and pre-commit hooks run on every change.

Results

to set up a new project
2 weeks → hours
engineers use it
20+
internal tool at Storm Reply UK
Most used

It's also what the company's internal Promotion App, for goals and feedback, was built on.

Next case studyAgentic delivery platform