Self-hosting
Develop
log (default, dev) · mailchannels (keyless) ·
resend (+ RESEND_API_KEY). Inbound arrives through Email Routing
(email() handler) or POST /v0/internal/inbound in dev. Scheduled drafts
drain on the */5 * * * * cron; Miniflare needs --test-scheduled.
Deploy
infra/alchemy.run.ts is the whole data plane as code — bindings, crons
and queue consumers included. Custom domains for sending need real DNS +
OUTBOUND_PROVIDER set; verification runs live DNS-over-HTTPS checks.
Repo map
apps/api (Hono + Effect) · apps/web (Next + Better Auth) ·
packages/shared (Zod contracts) · packages/db (Prisma) ·
packages/sdk · packages/cli · infra (Alchemy) · docs (this site).