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).