Getting started

Overview

IT Ticket System is a dockerized, multi-tenant, self-hosted ticket system built for internal IT support. It offers a passwordless public portal for requesters and a role-based admin panel for the IT team, and it runs Turkish / English bilingual end to end.

The system is designed to run on-prem (on your internal network): nothing ever leaves your server. The public portal intentionally performs no authentication — access relies on unguessable link tokens. It runs behind a VPN / internal network by default, but can also be exposed externally via a reverse proxy + authentication when needed.

Who is it for?

The system is built around three main personas:

👤 Requester (public, no login)

  • Creates a ticket — picks company / location / category, fills per-company dynamic fields, attaches files.
  • Tracks status live through an access link, posts replies, sends attachments.
  • Looks up a past ticket with its number + email.

🛠️ IT team (admin panel)

  • Dashboard — open/closed stats, SLA status, work assigned to you.
  • Ticket management — list / filter / search, detail, status & assignment, internal notes (hidden from the requester) + public replies, bulk actions.
  • On-site support calendar — create appointments, pick durations, calendar view.
  • Tasks — work independent of tickets, multi-assignee, comments.
  • Reports — distribution, staff performance, category breakdown, SLA trend, CSV export.

🔐 Administrator (role-based)

  • admin + it_manager — company / location / category / custom fields, per-company SMTP, email & SMS templates, canned responses.
  • admin — staff management and a credential vault (AES-256-GCM, every reveal is audited).

Feature highlights

  • Multi-tenant — each company is managed with its own locations, categories, custom fields, and SMTP settings.
  • Async notifications — email / SMS notifications run in the background via BullMQ (3 retries, exponential backoff).
  • SLA tracking — SLA checks every 5 minutes; per-category response/resolution targets.
  • Live updates — realtime panel updates over SSE; per-domain company branding (logo + theme).
  • Bilingual — the UI follows the browser language and switches instantly; API messages by Accept-Language, notifications in the recipient's language.

This system runs on your internal network — data never crosses the server boundary. For external access there are three safe paths: a VPN, an IP allowlist, or an authenticating reverse proxy. Plain (unauthenticated) internet exposure is not recommended. See Security and Installation for deployment options.

Tech stack

LayerTechnology
BackendNode.js 22 · Fastify 5 · TypeScript (ESM) · Prisma 6 · Zod
FrontendReact 18 · Vite 6 · TailwindCSS 3 · TanStack Query 5 · Zustand 5
DatabasePostgreSQL 16
Queue / CacheRedis 7 + BullMQ
RealtimeSSE (Server-Sent Events)
i18nreact-i18next · Accept-Language-based API messages
DeployDocker Compose (Coolify + Nginx Proxy Manager compatible)

Next steps