https://github.com/jetbridge/generator-jkv2
Opinionated Yeoman generator for full-stack mono-repo TypeScript projects
https://github.com/jetbridge/generator-jkv2
Last synced: 10 months ago
JSON representation
Opinionated Yeoman generator for full-stack mono-repo TypeScript projects
- Host: GitHub
- URL: https://github.com/jetbridge/generator-jkv2
- Owner: jetbridge
- Created: 2020-12-27T21:23:09.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-04-24T19:23:15.000Z (about 3 years ago)
- Last Synced: 2025-07-18T02:34:42.250Z (11 months ago)
- Language: TypeScript
- Size: 947 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JKv2 Yeoman generator
Opinionated generator for mono-repo web apps.
Features:
- Monorepo with npm7 workspaces (backend, core, frontend)
- No framework. Plain Typescript functions and API Gateway routing to Lambdas running in VPC
- TypeORM & Postgres
- Cognito
## Quickstart
### Pre-requisites
* npm 7
* yeoman
* jkv2 generator
```shell
npm i -g npm@7 yo generator-jkv2
yo jkv2
```
### Useful commands
- `yo jkv2:model` # Create a new TypeORM model and CRUD for it
- `yo jkv2:api` # Create a new API endpoint for a model
- `npm run db:init:local` # Re-creates local DB, migrates and seeds it
- `npm run db:migrate:generate -n $name` # Create a new migrations
- `npm run sls:deploy:dev` # Deploy to the dev environment
### AWS services schema

### VPC/Aurora Data API
Currently VPC connection is recommended.
It offers DB driver that doesn’t have problems with types unlike the one used by Aurora Data API. However using it is a bit more pricy and there are problems with Lambda timeouts after hitting 10 requests per second on a Lambda.
Once the Data API is somewhat more mature we should consider switching to it.
### API validation/serialization
[lambda-middleware](https://dbartholomae.github.io/lambda-middleware/) and [class-validator](https://github.com/typestack/class-validator) packages are used for incoming request body validation.
Currently when serializing responses there’s no option to exclude unwanted fields.
### Setting up Cognito
In your `.env.local` or in your env variables config on e.g. Netlify you'll have to assign the following env variables:
```shell
REACT_APP_COGNITO_IDENTITY_POOL_ID,
REACT_APP_COGNITO_REGION,
REACT_APP_COGNITO_IDENTITY_POOL_REGION,
REACT_APP_COGNITO_USER_POOL_ID,
REACT_APP_COGNITO_USER_POOL_APP_CLIENT_ID,
REACT_APP_API_REGION
```
To find some of the values you should login to your aws account
`REACT_APP_COGNITO_USER_POOL_ID`

`REACT_APP_COGNITO_USER_POOL_APP_CLIENT_ID`

`REACT_APP_IDENTITY_POOL_ID`
