· via Hacker News – Front Page (hnrss.org)
ResolveHQ is a self-hostable helpdesk running entirely on Cloudflare Workers, D1, R2 and Queues
ResolveHQ packages a multi-tenant shared inbox, help center and automations into a single Cloudflare Worker, and its author says small deployments can fit inside Cloudflare's free tier.
A shared inbox that runs as one Worker
ResolveHQ, a self-hostable helpdesk for small support teams, surfaced on Hacker News via a Show HN post linking to its GitHub repository by developer mirza-rizvi. According to the project's documentation, the product centres on a shared inbox where customers are isolated per tenant and tickets support assignment, status, priority, tags and full-text search. Access is role-based, covering Owner, Admin and Agent, and a workspace switcher lets one installation serve multiple organizations.
The feature list reads like a conventional SaaS helpdesk rather than a weekend demo: saved replies and internal notes, rule-based automations for triage, in-app notifications for assignments and customer replies, a public help center published from knowledge-base articles with drafts kept private to the team, and a Reports view covering volume and response speed with CSV export for any time window. The interface uses a Slack-style deep-purple sidebar, self-hosted Lato typography, Lucide icons and Radix UI primitives, with light and dark themes, Cmd/Ctrl+K navigation and a mobile layout built around bottom navigation.
The architecture
Everything runs as a single Cloudflare Worker deployed into your own account. The Hono framework serves both the REST API and the built React application, while Cloudflare's managed primitives do the rest:
- D1 holds tickets and customer records.
- R2 stores attachments, accepted only through uploads that are validated and authorized.
- Cloudflare Queues carry inbound and outbound mail jobs.
- Email Routing delivers incoming mail to the Worker, and Resend sends outbound mail, with delivery status tracking, retries and idempotent webhooks.
Two details stand out for anyone who has run a shared support address. Email threading follows RFC 5322, which the README says prevents subject-line spoofing from mis-threading messages across tickets. And failure is treated as routine: dead-letter queues drain into durable records that can be inspected and recovered, while a five-minute cron job retries stalled mail jobs and cleans up staging and orphaned data. The three-pane inbox UI also handles optimistic-version conflicts, so concurrent edits surface instead of silently overwriting each other.
Deployment and cost
Deployment starts from a Deploy to Cloudflare button. The prerequisites are a Cloudflare account, a domain hosted on Cloudflare so Email Routing can be configured, and optionally a Resend account with a verified sending domain for outbound mail. First-run setup means signing up as the workspace owner, adding an Email Routing rule that forwards the support address to the Worker, and sending a test message to confirm it lands in the inbox.
On cost, the documentation is unusually candid. Small deployments can run on Cloudflare's Free plan as long as usage stays within current limits for Workers, D1, R2, Queues, Cron Triggers and Email Routing, but CPU-intensive work such as authentication or mail parsing may require Workers Paid, and the author recommends benchmarking your own deployment. Queues are available on the free tier, while R2 needs separate account activation and billing setup. For local development, a Vite app runs on port 5173 and proxies API calls to Wrangler on port 8787.
Data control and AI defaults
Privacy-oriented features are built in rather than bolted on. Everything stored about a customer can be exported as JSON, or erased through a durable, resumable workflow that also cancels mail still sitting in queues. A TICKET_RETENTION_DAYS variable, set for example to 365, makes a scheduled sweep permanently delete resolved and closed tickets, attachments included, once they age past the window. AI-drafted replies stay off until an admin turns them on per workspace, they require an OpenAI API key with an optional model setting that defaults to gpt-4o-mini, and without a key the feature remains hidden and no AI calls are made. Only after opt-in do ticket conversations reach OpenAI. The README notes that tickets and attachments live in your own Cloudflare account, though outbound email content passes through Resend. Multi-language interfaces and notifications outside the app, such as email digests, are not yet implemented.
Why it matters
Helpdesks have typically meant either a hosted SaaS subscription or a heavyweight self-hosted stack with servers, databases and cron jobs. ResolveHQ shows that a full multi-tenant product, spanning email ingestion, background jobs, file storage, scheduled maintenance and a public help center, can be assembled entirely from managed edge primitives on a single Worker, with metered pricing that can bottom out at zero for small teams. For builders, it doubles as a reference implementation of edge-native operational hygiene: idempotent webhooks, dead-letter recovery, self-healing cron jobs, tenant isolation, retention and erasure workflows, and conservative AI gating. That is a strong signal that edge platforms are graduating from deployment novelty into a viable foundation for real SaaS products.
- #cloudflare-workers
- #self-hosted
- #helpdesk
- #edge-computing
- #d1