Issue tracking that stays yours.
Source-available ticket and project tracker — none of the Jira bloat, all of the workflow you actually need. Self-host on a $5 VPS, or let us run it for you. Same code either way.
# 60-second install git clone https://github.com/joshhearne/resolvd.git cd resolvd cp .env.example .env # edit secrets docker compose up -d --build
Everything you'd expect. Nothing you wouldn't.
Built for engineering, support, and ops teams who've outgrown a spreadsheet but don't want to onboard a sales rep.
Projects & Tickets
Scoped projects with custom prefixes (WEB-0042). P1–P5 priorities, semantic status chain with one-click Advance, auto-close grace, move between projects, inline title edit.
Bulk Edit & Merge
Admin Bulk Edit toggle adds checkboxes — change status / assignee / project across up to 500 tickets in one shot. Search-driven Merge picker collapses dupes by ref, title, or description.
Markdown Comments
GitHub Flavored Markdown editor with Write / Preview tabs, formatting toolbar, and Ctrl+B / Ctrl+I / Ctrl+Enter shortcuts. Mobile toolbar collapses to the essentials.
@Mentions + Push
Type @ for project-scoped autocomplete. Mentioned users auto-follow and get in-app notification, email, and (opt-in) browser push via VAPID + service worker.
Email-to-Ticket
Email #PREFIX to create tickets. Dedup against recent open tickets, signature + reply-marker stripping, CC auto-attach. M365 Graph, Gmail API, or SMTP.
Learn moreHelpdesk Routing
Scope a mailbox to one project — inbound mail without #PREFIX auto-creates there. Per-account banner-strip presets (Inky, Mimecast, Proofpoint, Avanan) clean inbound bodies.
Learn moreVendor CRM
Companies + contacts scoped per project. Admin-gated Notify Vendor button. Per-vendor pill colors hashed from company id — same vendor, same color across users.
Learn moreMute + Daily Digest
Auto-mute noisy vendor replies on a ticket. Followers don't get paged; muted comments collapse into the thread and surface in a daily digest at the configured local time.
Learn moreFlexible Auth
Microsoft Entra ID, Google OAuth (Workspace + consumer), or local accounts with Argon2. TOTP MFA enforceable per role; lockout after 8 failed attempts.
JIT Support Access
Support principals blocked until an admin approves a 1–14 day grant. Read-only by default. Every fine-grained access (ticket views, attachment downloads) lands in the audit log.
Encryption at Rest
AES-256-GCM envelope encryption with per-row data keys. HMAC blind index keeps title search working under encryption. Off / Standard / Vault modes.
NATO Phonetic Readback
Hover any ticket ref to spell it for vendor calls — WEB-0079 → "Whiskey Echo Bravo · 0 0 7 9". Org + per-user toggles. Pair with AlphabetSoup for general spelling.
VisitBoring stack. On purpose.
No bespoke runtimes, no exotic databases, no proprietary protocols. Components you already know how to operate, monitor, and back up.
- →Postgres 16 for everything: tickets, sessions, branding config.
pg_dumpis your full backup. - →Node + Express backend. Argon2 hashing, express-session, Multer uploads.
- →React + Vite + Tailwind frontend, served by nginx in a 30 MB Alpine image.
- →Bring your own TLS — Caddy, nginx, Cloudflare Tunnel, whatever you already run.
postgres: postgres:16-alpine
backend: node 22 + express
frontend: nginx alpine
nginx: internal router
▸ volumes: pg-data, uploads
▸ total RAM: ~400 MB idle
Run it your way.
Same source-available code in both directions. Pick the ops tradeoff you want.
Run it on your own hardware.
Your data, your VPS, your homelab. Docker compose up and you're running. Source-available under FSL-1.1 — free to self-host, fork, and audit.
- ✓ Full source on GitHub
- ✓ Install wizard or manual setup
- ✓ Community support
We run it. You file tickets.
Don't want to run a server? We'll host it for you. Flat per-instance pricing, automated backups, custom domain. Same code as the self-hosted build.
- ✓ Daily backups, managed updates
- ✓ Flat pricing — no per-seat tax
- ✓ Export your data anytime