This monorepo full-stack serverless application uses these frameworks and utilities:
- sst: Making it easy to build full-stack serverless apps
- aws-vault: securely store and access AWS credentials in a development environment
- rush: a scalable monorepo manager for the web
- pnpm: Fast, disk space efficient package manager
- knex: A type-safe and autocompletion-friendly typescript SQL query builder
- react: A JavaScript library for building user interfaces
- mui: Comprehensive suite of UI tools for React
- vite: Next generation front end tooling
- infrastructure/
- networking: VPC, VPN and DNS Records
- database: Aurora Serverless Postgres Database Cluster and stage specific database
- communication: SES Email
- authentication: Cognito with Google Sign-on
- apps/
- backend: Database migration, Appsync API
- frontend: Vite React Static Site. The implementation is based on the Mantis Free React Admin Template
We use rush and pnpm to manage our Node.js dependencies.
Packages are downloaded once and symlinked into each project's node_modules directory.
$ rush update
$ rush install
$ rush add -p missing-packageWe use aws-vault to deploy and debug this serverless stack project. You can deploy stages into different accounts, e.g.
$ aws-vault exec dev-account -- rushx deploy --stage=dev
$ aws-vault exec qa-account -- rushx deploy --stage=qa
$ aws-vault exec prod-account -- rushx deploy --stage=productionand also create developer specific stacks in the same account.
$ aws-vault exec dev-account -- rushx deploy --stage=barak # Developer specific stack
$ aws-vault exec dev-account -- rushx deploy --stage=guy # Developer specific stackOur networking and database projects support re-using existing VPCs and database clusters when cost-savings is a concern.
We use seed.run as our CI/CD engine. We take advantage of pnpm workspaces to incrementally deploy only those projects that have changes.
