Self-hosted · Single binary · Zero config

Ticket management,
distilled.

A fast, self-hosted ticket system built with Rust. Ships as one binary, runs on SQLite. No containers, no infrastructure team, no complexity tax.

terminal
$ cargo build --release
  Compiling ticketsystem v0.1.0
  Finished release [optimized]
 
$ ./target/release/ticketsystem
Server running at http://127.0.0.1:8080
Everything you need.
Nothing you don't.

Built for teams that want structure without ceremony. Every feature earns its place.

Custom Ticket Types

Define Bug, Feature, Task, or anything else. Each type gets its own fields, configured by you.

Assignees & Due Dates

Every ticket requires an owner and a deadline. No ambiguity about who does what, by when.

Custom Fields

Text, numbers, dates, user references, ticket links. Attach structured data to any ticket type.

Workflow Engine

Define allowed status transitions with a visual matrix. Enforce process without code.

Project Roles

Manager, Member, Reporter. Scoped per project. Admins see everything; everyone else sees what they should.

Per-Project Config

Activate specific statuses and ticket types per project. Same system, different workflows.

Clean interface.
Zero clutter.

Dark by default, fast everywhere. Here's what you're shipping.

localhost:8080
tix dashboard showing assigned tickets, created tickets, and project list
Dashboard — your tickets and projects at a glance
localhost:8080/projects/1/tickets
Ticket list view with status badges, assignees, and due dates
Ticket list — filter, sort, and track everything
localhost:8080/projects/1/tickets/1
Ticket detail view showing status, type, assignee, description and actions
Ticket detail — all context in one place
localhost:8080/projects/1
Project settings with members, roles, statuses, and ticket types
Project config — members, statuses, and ticket types
Running in four steps.

From zero to tracking tickets in under five minutes.

Build

Clone the repo and run cargo build --release. One binary, no Docker required.

Configure

Copy .env.example to .env. Set your admin credentials and bind address.

Launch

Run the binary. The database, schema, and admin user are created automatically on first start.

Organize

Create statuses, define ticket types, set up projects, invite your team. Start tracking work.

Simple stack. No surprises.

Every layer chosen for reliability and zero operational overhead.

Server Actix-web (Rust)
Templates Askama (compile-time)
Database SQLite + r2d2 pool
Auth Argon2 + session cookies
Assets Embedded in binary

One binary. One file. Done.

The entire application compiles to a single executable. CSS is embedded at build time. The database is a single SQLite file with WAL mode enabled. Migrations run automatically.

There is no build pipeline, no runtime, no container orchestration. Deploy it anywhere you can run a binary.

  • No Node.js, no npm, no webpack
  • No Postgres, no Redis, no message queue
  • No Docker required (but works in one if you want)
  • Backup = copy one .db file
Ready to ship?

Three commands. No credit card. No vendor lock-in. Your data stays on your server.

$ git clone && cargo build --release && ./target/release/ticketsystem