Open-Source Cold Email & Warmup Platform
Warmbly 是开源的冷邮件平台:温暖您的邮箱、发送活动、并对每条回复进行分流。可在我们的云端运行,也可自行托管整套系统。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗India-first social media scheduler. Phase 1 (MVP) of the PRD in D:\brainstorming\PRD-India-Social-Scheduler.md: connect Facebook Pages, Instagram, LinkedIn, Telegram, Bluesky and Mastodon; write once in the composer, adjust per platform, and schedule, queue or publish from a shared calendar.
Next.js 16 (App Router, Cache Components) · MongoDB (Mongoose) · Auth.js · Upstash QStash · Tailwind + shadcn/ui (Base UI) · media on Hostinger.
npm install
cp .env.example .env.local # then fill ENCRYPTION_KEY, AUTH_SECRET, UPLOAD_SIGNING_SECRET
npm run db:dev # local MongoDB in .data/mongo, no Docker needed
npm run dev # http://localhost:3000
Without the optional services, local dev falls back to:
| Service | Fallback |
|---|---|
| Resend (email) | Emails print to the server console, links included |
| QStash (queue) | src/instrumentation.ts runs the publish sweep every 15 s |
| Upstash Redis (rate limits) | In-memory counters |
| Hostinger upload service + CDN | Files saved to .storage/ and served by /api/dev-storage |
Instagram and Facebook fetch media by public URL, so posting media to them only works with the real CDN (or a tunnel).
Checks:
npm run typecheck
npm run lint
npm run smoke # publishing engine against a fake Mastodon server (needs db:dev)
npm run build
| Path | What |
|---|---|
src/lib/db/models.ts | All collections (PRD section 5) |
src/lib/session.ts | requireCtx(): user + workspace + role; every service takes this Ctx and filters by workspaceId |
src/lib/services/* | Channels, posts, media, team, accounts. The dashboard calls these; the phase-2 REST API and MCP server will too |
src/lib/platforms/rules.ts | Per-platform limits, shared by the composer (live) and the server (on save) |
src/lib/platforms/<name>.ts | One adapter per platform: publish, check, optional refresh |
src/lib/platforms/connect/* | OAuth (Meta, LinkedIn, Mastodon) and form connects (Telegram, Bluesky) |
src/lib/engine.ts | Atomic lock, publish, retry (1 / 5 / 15 min), failure alerts, safety sweep |
src/lib/storage/ | Storage interface: Hostinger now, R2 later by config |
upload-service/ | Node app for Hostinger: signed direct uploads from the browser |
vercel.json | Mumbai region; daily crons for the safety sweep, token refresh, media cleanup (Hobby plan allows only daily crons; on Pro, set the sweep back to * * * * *) |
These are outside the code and on you:
{APP_URL}/api/connect/meta/callback, data deletion {APP_URL}/api/meta/data-deletion, deauthorize {APP_URL}/api/meta/deauthorize. Submit for review with screen recordings.LINKEDIN_ORG_SCOPES=1./privacy, /terms and /data-deletion are drafts. Fill the contact, grievance officer and address (src/app/(legal)/legal-config.ts or the NEXT_PUBLIC_* env vars) and get them reviewed.upload-service/ and turn off CDN image optimisation (see upload-service/README.md).Approvals, bulk CSV, analytics, REST API, MCP, webhooks, agency client workspaces and billing are phase 2+. The data model already has room for them (approval on post groups, parentAgencyId and planId on workspaces).