我在一个周末搭建了表单后端,因为每月支付 $20 的联系表单太蠢了
Source: Dev.to
So here’s the thing
我上周末在帮朋友搭建他的作品集网站。设计不错,站点快速,使用 Vercel 免费层托管——完美。随后他想要一个联系表单。常见的建议是使用表单后端服务,但价格是“每月 20 美元?!只为保存一些文字?”
仔细想想,我们其实只是在为一次数据库插入和一封邮件通知付费。我决定自己动手实现。
What I built
FormRelay 的使用方式很直接:把你的 HTML 表单指向它,它会保存数据、发送邮件给你,并在仪表盘中展示所有内容。不同之处在于你自己托管——使用自己的 Supabase 数据库、自己的 Vercel 部署、自己的数据。
Cost comparison
- Supabase 免费层: 5 万用户
- Vercel hobby 计划: 免费
- Resend 免费层: 3 千封邮件/每月
结果:0 美元/每月 对比 20 美元/每月。
“But isn’t self‑hosting complicated?”
十年前这确实是事实。今天,借助 Vercel 和 Supabase,操作简直和下面一样:
- Fork 代码仓库
- 点击 Deploy
- 添加几个环境变量
就这么简单。README 的编写时间比实际部署还长。
Here’s where I might lose some of you
我们已经习惯了把一切都租出去。独立网页的精神是拥有自己的东西,即使会更麻烦。现在我们对所有东西都订阅。并不是每个人都想管理基础设施,但在“自己运营服务器机柜”和“为联系表单服务每年付 300 美元”之间有巨大的鸿沟。FormRelay 正是为填补这段鸿沟而生。
Random things I learned
- Next.js 15 在 App Router 风波后感觉很稳;服务器动作直接可用。
- Supabase 提供实时更新、认证以及优秀的文档。
- 最难的部分不是代码,而是编写清晰的安装说明。
About the email thing
我使用 Resend 是因为我的域名没有邮件托管。它的免费层(3 千封邮件/每月)正好合适。如果你已经为域名配置了邮件服务,可以用任何 SMTP 服务器替代 Resend——只需填入凭证即可。
Tech stack (if you care)
- Next.js 15(App Router)
- Supabase(PostgreSQL + Realtime + Auth)
- Tailwind CSS
- Radix UI
- Resend 负责邮件(或任意 SMTP)
- Lucide 图标
没有花哨的东西,只有可靠的工具。
You can use it
- GitHub:
- Live demo:
项目采用 MIT 许可证。欢迎 Fork、提交 bug 报告或 Pull Request。
The actual point
这不仅仅是为了省下 20 美元/每月,更是提醒我们可以自行构建许多依赖的工具。SaaS 产品提供价值——支持、维护、功能——但对于像表单处理这样基础的需求,一个周末的项目就能取代昂贵的订阅。
