Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A loyalty-card platform any business can run under its own name: a Wallet card for guests (Apple Wallet and Google Wallet, nothing to install), a staff app for the till, and an owner dashboard. Built by LOYALTY, the digital partner for businesses in Bahrain (websites, apps, loyalty software and more).
This folder is the white-label copy of the platform first built for KAYA. Same back end, same code, same developers. Everything that was KAYA-specific is now a setting, so a new client is a few commands and an afternoon of branding, not a rebuild.
The KAYA project itself is separate and untouched:
workspace/loyalty-repo(GitHub: Monaim-eng/loyalty). Nothing here connects to KAYA's database, keys or hosting. Seedocs/UPSTREAM.md.
| Face | What it is |
|---|---|
| Guest card | Scan a QR, join, get a card in Apple or Google Wallet. Points update by themselves. A web version of the card too. |
| Staff app | Installable web app (PWA). Find a guest, add points from the bill, give a reward, undo within 10 minutes. |
| Owner app | Overview and chart, guests (search, CSV, erase), rules, offers pushed to Wallet cards, team, privacy and terms. |
One deployment = one client. The client's identity comes from environment variables (web/.env.example) and a folder of pictures:
| What | Where |
|---|---|
| Name, colours, "Powered by" line | BRAND_NAME, BRAND_BG, BRAND_TEXT, BRAND_ACCENT, BRAND_POWERED_BY |
| Logo mark, card textures, Apple Wallet images | web/public/venues/<slug>/ and web/passes/<slug>/ |
| The venue row (name, points rule, reward) | supabase/seeds/<slug>.sql |
The colour system derives every shade from three colours (background, text, accent), see web/src/lib/brand.ts. With no settings the app looks like the template: warm black and gold.
cd web
node scripts/new-client.mjs --name "Acme Cafe" --slug acme --accent "#3fa7a0" --bg "#0f1a1c" --text "#e8f1f0" --logo ../acme-logo.png
It writes all pictures, the SQL row and prints the settings to paste. The full checklist (own database, hosting, Wallet accounts, staff logins, handover) is docs/NEW-CLIENT.md.
cd web
cp .env.example .env.local # fill in the client's OWN values
npm run dev # http://localhost:3000/join/<slug>
No database yet? LOYALTY_FAKE_DB=1 npm run dev runs the screens on in-memory data (development only). Owner screens: /owner?mock=1.
Checks before every commit (all must pass): npm run lint, npm run typecheck, npm test (265 tests). (typecheck first generates Next's route types, which a fresh checkout does not have.)
web/ the app (Next.js, TypeScript). web/scripts/new-client.mjs the client generator.supabase/migrations/ the database (run in order on each client's own project). supabase/seeds/ one venue row per client.design/templates/ clickable HTML prototypes of every screen, design/DESIGN-GUIDE.md the look.docs/ API contract, new-client guide, upstream notes, quotation template.