An open API service indexing awesome lists of open source software.

https://github.com/yerinadler/typescript-serverless-boilerplate

A Typescript boilerplate with Ioc Container for Serverless framework
https://github.com/yerinadler/typescript-serverless-boilerplate

aws aws-lambda lambda serverless typescript

Last synced: about 1 month ago
JSON representation

A Typescript boilerplate with Ioc Container for Serverless framework

Awesome Lists containing this project

README

          

# TypeScript Serverless Boilerplate
A TypeScript boilerplate designed for AWS Lambda via Serverless framework

## Description
The boilerplate comes with 2 functions that can be used as an example. One for GET request and another one for POST request. The latter incorporates Middy as a middleware to validate the request body

## Setup
Make sure you have `NodeJS 14` or later installed along with `npm` or `yarn`. And follow below steps to get started.

You also need `serverless` command to be available which could be accomplished using below command

```bash
# With yarn
yarn global add serverless
# With npm
npm install -g serverless
```

Then perform the below steps to spin up the local development environment

1. Copy the `.env_example` into `.env` file for managing environment variables for local development or create one your own
2. Run `yarn` or `npm install` to install dependencies
3. Run the command `yarn start:dev` to start the local development server (via serverless-offline plugin)

## Packages & Dependencies
| Tool | Library | Version |
| ----------- | ----------- | ------- |
| IoC Container| Inversify | 5.1.1+ |
| Environment Management | serverless-dotenv-plugin | 3.9.0+ |
| Middleware | Middy | 2.4.3+ |
| Local Development | serverless-offline | 7.0.0+ |
| Test Runner | Jest | 27.0.6+ |
| Code Bundler | Webpack | 5.44.0+ |
| Linter | EsLint | 7.30.0+ |

## Project Structure
The project code is primarily stored in the `src` folder except some of the setup files e.g. Jest config, Webpack config, EsLine config, etc.

The Lambda handlers are in the `interfaces/handlers` directory along with `middlewares` and other `utils`

The overall project structure is shown below
````
├── src
│ ├── services
│ ├── data
│ ├── interfaces
│ │ ├── handlers
│ │ ├── middlewares
│ │ └── utils
│ ├── configuration.ts
│ ├── inversify.config.ts
│ └── types.ts
├── jest.config.js
├── jest.setup.ts
├── package.json
├── serverless.yml
├── tsconfig.json
├── webpack.config.js
````