If you want to build a serverless app with AWS CDK, Lambda, and Postgres, this is the template for you.
You can click "Use this template" button in GitHub to fork this repo. You can merge in improvements in this repo to your project over time.
Clone your copy of this template, then do a search and replace for "myapp" to give it a name.
Assumes you have Node 20 installed and AWS credentials configured.
Edit sst.config.ts
and set your default AWS profile and region.
npm i -g pnpm # install pnpm globally
pnpm i # install dependencies + generate types from DB and GQL schemas
pnpm commit-hooks # install commit hooks for linting and formatting (optional)
pnpm db:migrate # run DB migrations
pnpm dev # start AWS local dev environment
pnpm dev:web # start NextJS frontend dev server
Set your default AWS profile and region in sst.config.ts
.
Edit .env or .env.$stage to set infrastructure vars.
All features are optional, delete what you don't need.
Click links to learn more and view documentation.
- 🌩 Serverless Stack - powerful CDK developer experience tools
- 🌤 AWS CDK - cloud-native infrastructure as code
- ፨ GraphQL API (optional)
- ⇅ AWS AppSync - serverless GraphQL AWS service
- ✽ Code generation of TypeScript + react client
- 🌐 REST API gateway
- 🖥 NextJS nextjs app router
- 🎨 Tailwind - for styling
- 🔓 NextAuth.js - authentication and session management
- 🔓 AWS Cognito - authentication backend
- 💾 Prisma ORM
- 📚 Prisma engine lambda layer
- 📜 Prisma DB migration CDK script
- 🐳 Database integration test setup with postgres in docker
- 🔋 Aurora Serverless v2 RDS PostgreSQL
- ⚡️ Live local lambda development (
pnpm dev
)- 🐞 Lambda debugging - set breakpoints on your lambda functions and step through in your IDE
- 📦 pnpm - fast and correct package manager
- 🚅 vitest - fast tests
- 🐛 ES Modules
- 🔧 ESBuild - fast code bundling on backend (under the hood) with tree-shaking
- 🫙 Middy - middleware for Lambda functions
- 🛠 AWS Lambda Powertools - for custom metrics, structured logging, and tracing.
Please see package.json scripts
for more.
pnpm dev
pnpm dev:web
pnpm db:migrate
pnpm watch
pnpm deploy
pnpm deploy --region eu-west-1 --profile dev
pnpm exec sst
pnpm exec cdk