Issue tracking for small teams, on a server you control.
Projects, issues, a board and a calendar for the people doing the work. Member management and sign-in security for the people looking after them. Open source under the MIT license.
Renew the TLS certificate for the status page
Export the sign-in log as CSV
Write the on-call handover checklist
Email field clears after a failed sign-in
Move avatar uploads to the new bucket
Add a due date to recurring backups
Drag a card to another column. With a keyboard: Tab to a card, Space to pick it up, arrow keys to move, Space to drop.
For the people doing the work
Everything for working through issues together.
- Projects you belong to
- Switch from the sidebar or jump anywhere with Ctrl + K. Star the projects you open most.
- Three views of the same issues
- A filterable list, a board with your own columns, and a calendar by due date.
- Issues that hold the real work
- Markdown with pasted images, task checklists, labels, an assignee, a due date, comments and a full history.
- Your own dashboard
- What's assigned to you, what's overdue and what's due this week, across every project.
Accounts and roles
No self sign-up: accounts are created from the top down, so a team only sees its own work.
- Team admins
- Each team's admin creates the team's user accounts, resets their passwords and deactivates them, and works in projects like everyone else.
- One superadmin
- The owner creates teams and their admins, renames teams, and sees every account, with dormant-account checks and a sign-in log with IP address and device. Never sees projects or issues.
Security built in
The details are in docs/security.md.
- Sessions use 15-minute access tokens and rotating refresh tokens. Reusing an old one signs that session out.
- Changing a password or a role, or deactivating an account, signs the user out everywhere.
- Sign-in attempts are limited per email and per IP, and every write request is rate limited.
- Passwords are checked against known data breaches before they're accepted.
- People only see the projects they're members of. Markdown is sanitized and strict security headers are on.
Host your own
You need Node.js 20.9 or newer, a Neon Postgres database (the free plan is enough) and a Cloudinary account. The self-hosting guide covers deploying and upgrading.
- 1
Clone the repository and install dependencies.
git clone https://github.com/Trias1/ticketing.git cd ticketing npm install - 2
Copy .env.example to .env.local and fill in your Neon URL, a JWT secret and Cloudinary keys.
cp .env.example .env.local - 3
Create the tables and the first superadmin account.
npx drizzle-kit push SEED_ADMIN_EMAIL=you@yourcompany.com SEED_ADMIN_PASSWORD=... npx tsx scripts/seed-user.ts - 4
Start the app and sign in.
npm run dev