Skip to content

nocoo/dove

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

330 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

dove

Self-hosted email relay service
Webhook ่งฆๅ‘ ยท ๆจกๆฟ็ฎก็† ยท ้…้ขๆŽงๅˆถ ยท ๅฎŒๆ•ดๆ—ฅๅฟ—

TypeScript Cloudflare Workers Tests License


่ฟ™ๆ˜ฏไป€ไนˆ

Dove ๆ˜ฏไธ€ไธช่‡ชๆ‰˜็ฎก็š„้‚ฎไปถไธญ็ปงๆœๅŠก๏ผŒ่ฟ่กŒๅœจ Cloudflare Workers ไธŠใ€‚ไธชไบบ้กน็›ฎ้€š่ฟ‡ Webhook ๅ‘้€้‚ฎไปถ๏ผŒDove ่ดŸ่ดฃ็ฎก็†้‚ฎไปถๆจกๆฟใ€ๆ”ถไปถไบบ็™ฝๅๅ•ใ€ๅ‘้€้…้ขๅ’ŒๅฎŒๆ•ดๆ—ฅๅฟ—๏ผŒ้€š่ฟ‡ๅฏ้…็ฝฎ็š„้‚ฎไปถๆœๅŠกๅ•†๏ผˆResend / Cloudflare Email Routing๏ผ‰ๆŠ•้€’ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Your Projects                                        โ”‚
โ”‚  SaaS App ยท CLI Tool ยท Cron Job ยท ...                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚  POST /api/webhook/send (Bearer token)
                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Dove (Cloudflare Workers)                            โ”‚
โ”‚  Auth โ†’ Quota Check โ†’ Template Render โ†’ Send Log      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚  Resend API / Cloudflare Email Routing
                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Recipient Inbox                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆŠ€ๆœฏๆ ˆ

ๅฑ‚ ๆŠ€ๆœฏ
่ฟ่กŒๆ—ถ Cloudflare Workers
API ๆก†ๆžถ Hono
่ฏญ่จ€ TypeScript (strict mode)
ๆ•ฐๆฎๅบ“ Cloudflare D1 (native binding)
ไผš่ฏๅญ˜ๅ‚จ Cloudflare KV
่ฎค่ฏ Google OAuth + KV sessions + email whitelist
ๅ‰็ซฏ React 19 SPA (Vite + React Router)
UI Tailwind CSS v4 + shadcn/ui
ๅ›พ่กจ Recharts
ๆ ก้ชŒ Zod v4
้‚ฎไปถ Resend API / Cloudflare Email Routing
้ƒจ็ฝฒ wrangler deploy (single command)

ๅผ€ๅ‘

็Žฏๅขƒ่ฆๆฑ‚๏ผšBun โ‰ฅ 1.3

git clone https://github.com/nocoo/dove.git
cd dove
bun install
bun dev  # http://localhost:7034
ๅ‘ฝไปค ่ฏดๆ˜Ž
bun dev ๅฏๅŠจๅผ€ๅ‘ๆœๅŠกๅ™จ (port 7034)
bun run build ็”Ÿไบงๆž„ๅปบ
bun test ่ฟ่กŒๅ•ๅ…ƒๆต‹่ฏ•
bun run test:coverage ๅ•ๅ…ƒๆต‹่ฏ• + 90% ่ฆ†็›–็އ้—จๆŽง
bun run typecheck TypeScript ็ฑปๅž‹ๆฃ€ๆŸฅ
bun run lint ESLint (strict, 0 warnings)
bun run test:e2e:api L2 API E2E ๆต‹่ฏ• (port 17034)
bun run test:e2e:bdd L3 Playwright BDD E2E (port 27034)
bun run gate:security ๅฎ‰ๅ…จๆ‰ซๆ (osv-scanner + gitleaks)
bun run release ๅ‘็‰ˆ (SemVer bump + CHANGELOG + tag + GH release)

ๆต‹่ฏ•

ๅฑ‚ ๅ†…ๅฎน ่งฆๅ‘ๆ—ถๆœบ
L1 Unit โ‰ฅ90% coverage (bun test) pre-commit
G1 Static tsc strict + ESLint strict + max-warnings=0 pre-commit
L2 API E2E REST endpoint coverage (port 17034) pre-push
G2 Security osv-scanner + gitleaks pre-push
L3 BDD E2E Playwright ๆ ธๅฟƒๆต็จ‹ (port 27034) on-demand

MIT ยฉ 2026

About

๐Ÿ•Š๏ธ Self-hosted email relay service with webhook triggers, template management, and a usage dashboard

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages