AdonisJS

TypeScript-native support tickets for AdonisJS

Lucid ORM models, service providers, and Inertia rendering. Escalated integrates with AdonisJS v6 as a fully typed package with first-class TypeScript support.

Terminal
$ npm install @escalated-dev/escalated-adonis

Built for AdonisJS

Why Escalated for AdonisJS

Escalated is designed to feel like a native AdonisJS package, not a bolt-on integration.

Lucid ORM Models

Tickets, replies, tags, and activities are Lucid models. Use relationships, scopes, and query builder with full TypeScript type inference.

Service Providers

Register Escalated through AdonisJS service providers. Configuration, bindings, and boot logic follow standard AdonisJS patterns.

TypeScript Native

Every model, controller, and service is written in TypeScript. Full type safety, autocompletion, and compile-time checks across the entire package.

Get Started

How It Works

Three steps to a full-featured support system inside your AdonisJS application.

1

Install the Package

npm install @escalated-dev/escalated-adonis
2

Configure the Provider

node ace configure @escalated-dev/escalated-adonis
3

Mount the Routes

Register Escalated routes in your start/routes.ts and you're live. Full ticket management with type-safe controllers.

Features

Everything You Need

Escalated integrates with the full AdonisJS ecosystem out of the box.

Lucid Relationships

Tickets belong to users, have many replies, and use polymorphic relationships. Type-safe query building and eager loading built in.

Bull Queue Integration

Email notifications and webhook dispatches use AdonisJS's built-in queue system. Background processing with retry logic and monitoring.

Bouncer Authorization

Authorization integrates with AdonisJS Bouncer. Define abilities and policies to control who can view, reply, and manage tickets.

Event Emitter

Every ticket action emits typed events. Listen to TicketCreated, ReplyAdded, and StatusChanged with full type safety.

HTTP Middleware

Apply your existing middleware to Escalated routes. Authentication, rate limiting, and tenant scoping work naturally in the AdonisJS middleware pipeline.

Japa Test Helpers

Ships with test helpers for Japa. Create tickets, replies, and users in your test suite with typed factory functions.

Integration

Feels Native to AdonisJS

Standard AdonisJS patterns. No new abstractions to learn.

TypeScript
// start/routes.ts
import router from '@adonisjs/core/services/router'
import { escalatedRoutes } from '@escalated-dev/escalated-adonis'

escalatedRoutes(router)

// app/models/user.ts
import { compose } from '@adonisjs/core/helpers'
import { HasTickets } from '@escalated-dev/escalated-adonis'

export default class User extends compose(BaseModel, HasTickets) {}

// Anywhere in your application
const ticket = await user.related('tickets').create({
  subject: 'Need help with billing',
  priority: 'high',
})

await ticket.related('replies').create({
  body: "We've updated your invoice.",
  userId: agent.id,
})

Ready to add support tickets to your AdonisJS app?

Escalated is open source and free forever. Get started with the documentation or explore the source on GitHub.