全栈SaaS平台

一个基于TypeScript的全栈SaaS平台,集成了NextJS、AuthJS、React等技术,支持AWS部署和GitHub Actions自动化。

  • by 231waa
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 231waa/full-stack-saas-mcp

使用说明

示例TypeScript全栈SaaS Web应用程序,带MCP

我是一名软件开发人员,在SaaS平台上工作了15年多。这个示例项目将我多年的知识压缩成一个功能齐全的软件即服务(SaaS)平台,可以使用IaC和GitHub Actions部署到AWS。这当然不是完美的,但我希望这将帮助一些有前途的SaaS企业家看到一个可扩展的、生产级的构建。

现场演示| chipgp.biz

堆栈:

架构:

它使用基础设施即代码(IaC),使用 海表温度。它使用GitHub Actions部署到AWS。这是现场演示的当前架构:

AWS成本:

没有太多活动的生产云部署每天在AWS上运行1-2美元。任何真正投入使用的产品和客户都必须扩大MCP集群,但这通常是一个很好的问题。

要求:

  • 在中设置了SSO的AWS帐户 ~/.aws/config 安装指南
  • AWS-CLI 安装
  • Docker用于本地postgres数据库 安装Docker
  • 您还必须携带自己的生产postgres数据库,或者需要将RDS添加到SST堆栈中。我用 数字海洋管理数据库.
  • 您的域应在Route 53中设置,云部署需要托管区域ID(本地部署不需要)。
  • IAM用户访问密钥/秘密 安装指南 和 权限指南
  • Mailgun帐户 获取API密钥
  • 条带帐户[获取API密钥](https://docs.stripe.com/keys)

您可以进行全球查找 chipgpt (不区分大小写),并使用您自己的项目名称和描述查找需要更新的大多数内容。

如何设置项目:

登录AWS SSO:

npm run sso

复制 .env.example 文件并填充它们。你不需要开发云部署,但如果你最终想要一个临时服务器,它支持它:

cp .env .env.{{username}}
cp .env .env.development
cp .env .env.production

安装依赖项:

npm install

启动本地postgresql数据库:

npm run docker:up

启动本地部署:

npx sst dev

注: 如果您在尝试执行以下操作时遇到此错误 npx sst dev,这通常意味着你需要 npm run sso 通过AWS重新授权。

✕  Unexpected error occurred. Please run with --print-logs or check .sst/log/sst.log if available.

首次启动新环境后,您需要在AWS控制台中更新新的Amazon Cognito Pool域。

登录AWS控制台 > 亚马逊干邑 > 用户池 > 选择用户池 > 领域 > 为您的cognito池设置一个域,并确保设置“托管UI(经典)”

注: 如果你设置好了所有内容,你可能可以使用新的UI,但我还没有这样做。因此,如果你只是想启动并运行它,那么你现在应该使用Hosted,并计划稍后尝试更新。

此时,您应该让堆栈在本地运行。部分资源位于AWS中,但您的代码全部在本地执行,未部署到AWS。SST有一个很酷的多路复用器,您也可以使用它在本地监控应用程序。保存文件时,所有内容都会实时更新。

  • 默认Web URL为:http://localhost:3000
  • 默认Web仪表板为:http://localhost:3000/dashboard
  • 默认API URL为:http://localhost:3000/api
  • 默认OAuth URL为:http://localhost:3000/api/oauth
  • 默认MCP服务器URL为:http://localhost:3333/mcp

本地实时部署:

确保docker数据库正在运行:

npm run docker:up

请确保您已登录:

npm run sso

启动本地部署:

npx sst dev

MCP检查员:

npx @modelcontextprotocol/inspector

云部署:

npm run deploy:production

如果这是第一次部署,则需要在部署后在AWS控制台中更新Amazon Cognito Pool的域。

登录AWS控制台 > 亚马逊干邑 > 用户池 > 选择用户池 > 领域 > 为您的cognito池设置一个域,并确保设置“托管UI(经典)”

注: 如果你设置好了所有内容,你可能可以使用新的UI,但我还没有这样做。因此,如果你只是想启动并运行它,那么你现在应该使用Hosted,并计划稍后尝试更新。

GitHub操作设置:

要使GitHub操作部署正常工作,您需要一个具有访问/密钥的IAM用户,并将密钥添加到您的仓库中(请参阅 需求).

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • 授权密码
  • 数据库URL
  • AWS_HOSTED_ZONE_ID
  • 邮件_API_KEY
  • 条纹_ API_键
  • NEXT_PUBLIC_POSTHOG_KEY(不是真正的“秘密”,它可以是一个变量)

当我将它们添加到我自己的SaaS中时,我打算添加的东西:

  • [x] 添加SES电子邮件管理用于生产SES访问添加Mailgun电子邮件用于发送电子邮件
  • [x] 添加付费帐户层(最有可能使用Stripe作为支付网关)
  • []添加一个与AWS CloudWatch配合得更好的propper日志记录实用程序。
  • []为云部署添加警报/警示,以主动应对问题。
  • []自动生成REST API文档。
  • []支持亚马逊RDS+代理(在使用Sequelize时遇到问题,不想找到新的ORM)
  • []添加适当的Sequelize迁移。
  • []更新以使用新的Cognito UI模式。
  • []切换到官方 @auth/sequelize-adapter 包装后 产品编号13120 合并。

反馈和问题:

我很乐意尽我所能接受反馈或回答问题。向存储库提交问题,我将尽最大努力及时回复。

在TikTok上关注我:

如果你觉得这很有帮助,请在这个repo上加星,并在TikTok上关注我: @芯片。GPT

商务咨询