📌 项目地址:calcom/cal.diy | ⭐ 43,465 颗星 | 🔧 TypeScript | 📜 未标注
这项目是什么
Cal.diy 是 Cal.com 的一个分支。Cal.com 本身走“开放核心”路线:基础功能 MIT 协议公开,Teams、Organizations、Insights、SSO 这些功能锁在付费的 Enterprise Edition 里。Cal.diy 的做法很直接——把所有非 MIT 的文件删干净,只留纯开源部分。不需要 license key,不需要注册 Cal.com 账号,克隆下来就能跑。
两个数字能说明它的热度:GitHub 上 43465 个 star,Fork 数超过 5000。在开源日程管理领域,这个体量算头部。
它拿掉了什么
对照 Cal.com 的 Enterprise Edition,Cal.diy 删掉的模块有这些:
- Teams 和 Organizations:多人共享日程、层级管理、角色权限体系
- Insights:数据分析面板,显示预约趋势、团队负载、转化率
- Workflows:自动化规则,比如预约后自动发邮件、发提醒
- SSO/SAML:企业级单点登录和身份认证
- 其他 Enterprise-only 的模块:比如自定义品牌、高级报告等
删除的逻辑很清楚:凡是需要 Cal.com 后台服务支撑的功能,一概不留。结果是单用户场景下功能完整,多用户协作场景直接不能用。
部署需要什么
README 开头有两个警告,不是摆设:
Use at your own risk. Cal.diy is intended for users who want to self-host. It is strictly recommended for personal, non-production use.
For any commercial and enterprise-ready scheduling infrastructure, use Cal.com.
翻译:出了问题没人管,生产环境别用。商业需求请买 Cal.com。
硬件和软件要求
- Node.js >= 18.x
- PostgreSQL >= 13.x
- yarn(用 npm 会出符号链接问题)
安装步骤
git clone https://github.com/calcom/cal.diy.git
cd cal.diy
yarn
Windows 用户必须用 Git Bash 并提权:
git clone -c core.symlinks=true https://github.com/calcom/cal.diy.git
环境变量
复制 .env.example 为 .env。必须填的字段:
DATABASE_URL:PostgreSQL 连接串NEXTAUTH_SECRET:JWT 加密密钥NEXT_PUBLIC_WEBAPP_URL:你的应用访问地址(开发环境用http://localhost:3000)
填错任意一个,yarn dev 启动时直接报错退出。
数据库初始化
yarn db:deploy
yarn db:seed
db:deploy 用 Prisma 生成表结构。db:seed 插入一条默认管理员账号。之后在登录页用 seed 账号才能进后台。
启动
yarn dev
打开 http://localhost:3000,后台界面和 Cal.com 几乎一样,只是导航栏少了“团队”、“洞察”等入口。
集成外部服务需要踩的坑
Cal.diy 支持 Google Calendar、Outlook、Zoom、Daily.co 等。每个集成在 .env 里有对应的配置项。问题是——你必须在 Google Cloud Console、Zoom App Marketplace 之类的地方自己创建应用,申请 API 密钥,配置回调 URL。
回调 URL 的问题最隐蔽。OAuth 认证要求外部回调必须通过公网可达的 HTTPS 地址。如果你的机器只有 localhost,Google OAuth 直接拒绝。这意味着要么你有公网服务器,要么用 ngrok 之类的工具做隧道转发。README 没提到这点,但我试了几次才跑通。
这项目的实质价值
我读了几个月 Cal.diy 的代码。它的架构质量确实高:
- Next.js 做全栈框架,页面路由和 API 路由混用
- tRPC 做类型安全的 RPC,前后端接口定义在同一个文件里
- Prisma schema 设计规整,表关系清晰,迁移脚本完整
- Tailwind CSS 做样式,组件粒度细,可复用的 UI 库抽离得干净
如果你正在学 Next.js + tRPC + Prisma 的技术组合,这个项目是很好的参考样本。4 万 star 不只是靠 Cal.com 的品牌带来的——代码本身的质量能撑住这个量级。
它的另一个价值是数据自主权。所有预约数据存在你自己的 PostgreSQL 里,不需要任何第三方服务。不会有数据被锁在 SaaS 平台里的问题,也不会因为服务商涨价被迫迁移。
谁该用,谁不该用
适合
- 想研究现代 TypeScript 全栈项目代码的人。单看 tRPC 的 router 组织方式就能学到不少
- 需要私人预约系统且愿意自己运维的个人开发者。数据在自己手里,没有厂商锁定
- 有定制需求的团队,但必须能接受缺少协作功能——不能共享日程、没有团队管理
不适合
- 需要多用户协作的小组。Cal.diy 砍掉了 Teams 模块,两个人也不能共用一套系统。想共享日程请直接买 Cal.com
- 对稳定性有要求的企业。没有 SLA,没有技术支持,半夜数据库挂了只能自己修
- 没碰过服务器管理的人。配置 OAuth、管理 SSL 证书、处理 PostgreSQL 升级,每项都可能卡住半天
和 Cal.com 的取舍
Cal.diy 把“开放核心”的灰色地带清干净了:你拿到手的是纯 MIT 代码,没有任何隐藏的付费墙。代价是失去了一组实用的协作功能。这个取舍很诚实——README 在开头就说清楚了,如果你需要商业级功能,去用 Cal.com。
如果你能接受个人工具级别的功能边界,愿意承担自运维的责任,Cal.diy 能给你一个功能完整、代码透明的日程系统。除此之外,我不建议抱着“反正是免费的开源软件”的心态去尝试。