NodeJS + Typescript + Dependency Injection + inversion of control + SOLID + VSA
This is an example of an app is demonstrating how we can invoke a lambda function which will recieve a user and a city, and based on the user and that city will get the weather for that city.
After that will store that information in DynamoDB (used for caching). On the next request if the user is the same the API call will not occur, but instead a DB call simulating a Cache Hit.
Below is the diagram of the workflow of this code.

See the full code in my github page:
https://github.com/gds03/Typescript/tree/main/Lambda-Node-First
this is how I think is really handy to organize projects, in a VSA architecture. You have high cohesion and make things very simple.

This is the handler of the lambda, you see the features it provides, the infrastucture holds all the pilars of the "house" like your DI configuration and everything is closeby highly cohesive. This way we avoid coupled code and we avoid DRY because everything should be well placed using this architecture.