# AdonisJS v7 Documentation > AdonisJS is a backend-first, type-safe framework for building web applications with Node.js and TypeScript. This file indexes the official v7 documentation for LLM consumption. > Documentation site: https://docs.adonisjs.com > Source repository: https://github.com/adonisjs/v7-docs ## Getting Started & Tutorials ### Getting started - [Introduction](https://docs.adonisjs.com/introduction.md): An overview of AdonisJS and the design principles behind it. Topics: Who is AdonisJS for?, Why AdonisJS, What can you build with AdonisJS?, Practical, not overengineered, How AdonisJS compares, MVC with a configurable view layer, Ecosystem and stability, Next steps - [Pick your path](https://docs.adonisjs.com/stacks-and-starter-kits.md): Understand AdonisJS's approach to frontend development and choose between Hypermedia, Inertia, and API-only stacks for your application. Topics: Overview, The three approaches, Hypermedia, Inertia (React or Vue), API-only, The same controller, three different returns, What NOT to expect, Starter kits, Next steps - [Installation](https://docs.adonisjs.com/installation.md): Learn how to create a new AdonisJS application and start the development server. Topics: Prerequisites, Creating a new application, Official starter kits, Community starter kits, Project defaults, Starting the development server, What you just installed, Dev-server modes, Exploring other commands, Next steps - [Folder structure](https://docs.adonisjs.com/folder-structure.md): Understand the default folder structure of an AdonisJS application and the role of each file and directory. Topics: Overview, `app/`, `bin/`, `config/`, `database/`, `providers/`, `public/`, `resources/`, `inertia/`, Clear separation between frontend and backend, Shared types, `start/`, `tests/`, `tmp/`, `ace.js`, `adonisrc.ts`, `eslint.config.js`, `package.json` and `package-lock.json`, `tsconfig.json`, `vite.config.ts` - [Development environment setup](https://docs.adonisjs.com/dev-environment.md): Learn how to configure an efficient development environment for building applications with AdonisJS. Topics: Overview, Code editors and extensions, TypeScript setup, Required TypeScript configuration, Development mode (JIT compilation), Production mode (ahead-of-time compilation), ESLint and Prettier configuration, ESLint, Prettier, Database setup, Local database tools - [Configuration & Environment](https://docs.adonisjs.com/configuration.md): Learn how to manage configuration and environment variables in AdonisJS applications with type-safe validation. Topics: Overview, Configuration files, When config files are loaded, Accessing config in Edge templates, Environment variables, The APP_KEY, Using environment variables in config files, Variable interpolation, Environment-specific .env files, Validating environment variables, The adonisrc.ts file - [Deployment](https://docs.adonisjs.com/deployment.md): Learn how to build and deploy AdonisJS applications to production, including creating standalone builds and configuring production environments. Topics: Overview, Understanding the standalone build, NODE_ENV during build and runtime, Creating the production build, Build output contents, Static files, Adjust `keepAliveTimeout` for reverse proxy and node balancers, Serving static files in production, Running the production build, User-uploaded files, Logging, Database migrations, Dockerfile, Running migrations with Docker - [FAQs](https://docs.adonisjs.com/faqs.md): Quick answers to the most common questions about AdonisJS, including framework sustainability, technical capabilities, and production readiness. Topics: Is AdonisJS actively maintained?, How does AdonisJS compare to Express, NestJS, and Fastify?, Is AdonisJS production-ready?, Does AdonisJS support TypeScript natively?, Who maintains AdonisJS?, Where can I get help with AdonisJS?, Can I use AdonisJS for building APIs? ### FullStack tutorial - [Overview (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/overview.md): Build a fully functional community showcase website with AdonisJS and learn how to create hypermedia-driven web applications. Topics: Overview, Understanding the starter kit, How controllers work, How views work, Try creating an account - [Overview (React)](https://docs.adonisjs.com/tutorial/react/overview.md): Build a fully functional community showcase website with AdonisJS, Inertia, and React, and learn how to create modern full-stack web applications. Topics: Overview, Understanding the starter kit, How controllers work with Inertia, About Inertia and React, How the signup form works, Try creating an account - [Commandline and REPL (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/cli-and-repl.md): Learn to use the AdonisJS Ace CLI and REPL to generate files and interact with your application during the DevShow tutorial. Topics: Exploring available commands, Using the REPL, Start the REPL and load models, Create users, Fetch all users, Find and delete a user, Exit the REPL - [Commandline and REPL (React)](https://docs.adonisjs.com/tutorial/react/cli-and-repl.md): Learn to use the AdonisJS Ace CLI and REPL to generate files and interact with your application during the DevShow React tutorial. Topics: Exploring available commands, Using the REPL, Start the REPL and load models, Create users, Fetch all users, Find and delete a user, Exit the REPL - [Database and models (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/database-and-models.md): Create models and database migrations for the DevShow tutorial application, define relationships, and seed test data using factories. Topics: Overview, Creating the Post model, Creating the Comment model, Running migrations, Adding relationships, Creating factories, Creating seeders, Understanding the tools we've used, Querying data with the REPL, Start the REPL and load models, Fetch all posts, Search posts by title, Fetch a post and load its comments, Load relationships efficiently with preload, Exit the REPL, What you learned - [Database and models (React)](https://docs.adonisjs.com/tutorial/react/database-and-models.md): Create models and database migrations for the DevShow React tutorial application, define relationships, and seed test data using factories. Topics: Overview, Creating the Post model, Creating the Comment model, Running migrations, Adding relationships, Creating factories, Creating seeders, Understanding the tools we've used, Querying data with the REPL, Start the REPL and load models, Fetch all posts, Search posts by title, Fetch a post and load its comments, Load relationships efficiently with preload, Exit the REPL, What you learned - [Routes, controllers and views (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/routes-controller-views.md): Build routes, controllers, and Edge template views for the DevShow tutorial application to display posts and comments. Topics: Overview, Displaying the posts list, Displaying a single post, Using named routes, Adding comments to the post view, What you've built - [Routes, controllers and views (React)](https://docs.adonisjs.com/tutorial/react/routes-controller-views.md): Build routes, controllers, and React views using Inertia for the DevShow tutorial application to display posts and comments. Topics: Overview, Displaying the posts list, Displaying a single post, Using client-side navigation, About named routes, Adding comments to the post view, What you've built - [Forms and validation (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/forms-and-validation.md): Add form handling and validation to the DevShow tutorial application to allow users to create posts and comments. Topics: Overview, Adding post creation, Adding comments to posts, What you learned - [Forms and validation (React)](https://docs.adonisjs.com/tutorial/react/forms-and-validation.md): Add form handling and validation to the DevShow React tutorial application to allow users to create posts and comments using Inertia forms. Topics: Overview, Adding post creation, Adding comments to posts, What you learned - [Styling and cleanup (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/styling-and-cleanup.md): Style and improve the user experience of the DevShow tutorial application by adding navigation, CSS, and visual polish. Topics: Styling the application, Updating the homepage, Adding a post creation link, Adding navigation to the post creation page, Adding navigation to the post detail page, What you built - [Styling and cleanup (React)](https://docs.adonisjs.com/tutorial/react/styling-and-cleanup.md): Style and improve the user experience of the DevShow React tutorial application by adding navigation, CSS, and visual polish. Topics: Styling the application, Updating the homepage, Adding a post creation link, Adding navigation to the post creation page, Adding navigation to the post detail page, What you built - [Authorization (Hypermedia)](https://docs.adonisjs.com/tutorial/hypermedia/authorization.md): Add authorization to the DevShow tutorial application using AdonisJS Bouncer policies to restrict editing and deleting of posts and comments. Topics: Overview, Installing Bouncer, Creating the PostPolicy, Creating the CommentPolicy, Adding edit functionality, Adding delete functionality, Adding comment deletion, What you built - [Authorization (React)](https://docs.adonisjs.com/tutorial/react/authorization.md): Add authorization to the DevShow React tutorial application using AdonisJS Bouncer policies to restrict editing and deleting of posts and comments. Topics: Overview, Installing Bouncer, Creating the PostPolicy, Creating the CommentPolicy, Adding edit functionality, Adding delete functionality, Adding comment deletion, What you built ### Resources - [Contributing](https://docs.adonisjs.com/contributing.md): Contributing to AdonisJS projects is a great way to give back to the community. This guide provides a general overview of how you can contribute to any AdonisJS project. Topics: Reporting bugs, Having a discussion, Educating others, Creating pull requests, Repository setup, Tools in use, Commands, Coding style, Getting recognized as a contributor - [Releases](https://docs.adonisjs.com/releases.md): AdonisJS release history and changelog, including new features, bug fixes, and breaking changes. - [Governance](https://docs.adonisjs.com/governance.md): Governance model for the AdonisJS project, outlining roles, responsibilities, and decision-making processes. Topics: Roles and responsibilities, Authors, Project Leads, Core team, Contributors, Users, Support, Monetary Donations, Branding and Ownership, Projects under AdonisJS umbrella - [Upgrade guide](https://docs.adonisjs.com/v6-to-v7.md): AdonisJS v7 is a major release after two years of v6. This guide covers the changes you must make to upgrade your existing v6 application. Topics: Helpful links, Upgrade to Node.js 24, Upgrade using a coding agent, Upgrade all packages, Replace the TypeScript JIT compiler, Install Youch as a project dependency, Configure hooks in `adonisrc.ts`, Assembler hooks have been renamed, Update the tests glob pattern, Remove the `assetsBundler` property, Encryption config changes, `router.makeUrl` deprecated in favor of URL builder, Removed helpers, `Request` and `Response` classes renamed, Flash messages `errors` key removed, Multipart files and fields merged in `request.all()`, Auto-generated route names from controllers, Status pages skipped for JSON API requests, `BaseModifiers` removed from VineJS, Application shutdown hooks run in reverse order, Inertia integration rewrite, Type-safe `render` method, Config changes, File structure changes, Shared data moved to middleware, Add `tsconfig.inertia.json`, Add new subpath imports to `package.json` ## Guides ### Basics - [Routing](https://docs.adonisjs.com/guides/basics/routing.md): Define URL patterns, handle dynamic routes, create resource routes, and use the type-safe URL builder for navigation. Topics: Overview, Basic example, Using a controller as a route handler, Viewing registered routes, Route params, Basic route params, Multiple route params, Optional route params, Wildcard route params, Route param validation, Why validate params, Custom matchers, Built-in matchers, Global matchers, HTTP methods, Matching multiple methods, Route middleware, Route identifiers, Grouping routes, Prefixing routes, Naming routes inside a group, Applying middleware to a group, Resource routes, Registering routes for specific domains, Dynamic subdomains, Render Edge view from a route, Render Inertia view from a route, Redirect from a route, Forwarding and overriding params, Adding query strings, Accessing the current route, Checking if a route matches, How AdonisJS matches routes, Ordering routes correctly, Handling 404 requests, Extending the Router, Router, Route, RouteGroup, RouteResource, BriskRoute, Next steps - [Controllers](https://docs.adonisjs.com/guides/basics/controllers.md): Learn how to create and use controllers to organize your route handlers in AdonisJS applications. Topics: Overview, Creating your first controller, The barrel file, Understanding controller lifecycle, Dependency injection, Constructor injection, Method injection, Resource-driven controllers, The seven resourceful actions, Generating resourceful controllers, Registering resource routes, Nested resources, Shallow nested resources, Naming resource routes, Filtering resource routes, Renaming resource params, Assigning middleware to resources, Configuration, Customizing controller location, Barrel file configuration - [HTTP context](https://docs.adonisjs.com/guides/basics/http-context.md): Learn about the HTTP context object in AdonisJS and how to access request-specific data and services. Topics: Overview, Accessing HTTP context, In route handlers, In middleware, Available properties, Always available, Available with optional packages, Added by project scaffolding, Using dependency injection, Injecting into services, Using services in controllers, Using Async local storage, Adding custom properties, Creating dummy context for testing - [Middleware](https://docs.adonisjs.com/guides/basics/middleware.md): Learn how to use and create middleware in AdonisJS to handle cross-cutting concerns during HTTP requests. Topics: Overview, Middleware stacks, Creating and using middleware, Named middleware with parameters, Dependency injection in middleware, Understanding middleware execution flow, Modifying the response, Adding headers in the upstream phase, Transforming the response body, Exception handling, Conditional middleware execution, Extending the HttpContext, Adding properties to the context, Augmenting the HttpContext type - [Request](https://docs.adonisjs.com/guides/basics/request.md): Learn how to work with HTTP requests in AdonisJS, including reading request data, headers, cookies, and handling trusted proxies. Topics: Overview, Reading request body and files, Accessing the entire request body, Accessing specific fields, Accessing uploaded files, Available methods, Reading request query string and route params, Accessing query string parameters, Accessing route parameters, Available methods, Reading request headers, method, URL, and IP address, Accessing request headers, Accessing the request method, Accessing the request URL, Accessing the client IP address, Available methods, Reading request cookies, Accessing signed cookies, Accessing encrypted, Available methods, Reading request ID and understanding ID generation, Accessing the request ID, How request IDs are generated, Using request IDs for distributed tracing, Content negotiation, Selecting response format, Internationalization, Available methods, Trusting proxy servers, Custom IP address extraction - [Response](https://docs.adonisjs.com/guides/basics/response.md): Learn how to construct HTTP responses in AdonisJS, including sending different response formats, headers, cookies, redirects, and file downloads. Topics: Overview, Sending response body, Returning values from route handlers, Using response.send(), Forcing JSON responses, Working with headers, Setting headers, Setting headers safely, Appending to headers, Removing headers, Handling redirects, Redirecting to a path, Redirecting to a named route, Redirecting back, Allowing external referrer hosts, Customizing previous URL resolution, Setting redirect status code, Forwarding query strings, Setting custom query strings, Redirecting to the intended URL, Streaming and downloads, Streaming responses, Downloading files, Force download with custom filename, Setting response status, Setting status code, Setting status safely, Status shorthand methods, Response shorthand methods, Working with cookies, Setting signed cookies, Setting encrypted cookies, Setting plain cookies, Supported cookie value types, Cookie options, Running actions after response has been sent, Cleaning up after file downloads, Logging response metrics, Response body serialization, Extending HttpResponse class, Adding custom methods, Augmenting the HttpResponse class type, Using custom methods - [Body parser](https://docs.adonisjs.com/guides/basics/body-parser.md): Learn how to configure the body parser to handle JSON, form data, and file uploads in AdonisJS applications. Topics: Overview, Configuration, Global parsing options, JSON parser, Form parser, Multipart parser, Raw parser for custom content types, Form Method Spoofing - [Validation](https://docs.adonisjs.com/guides/basics/validation.md): Learn how to validate user input in AdonisJS using VineJS validators at the controller level. Topics: Overview, VineJS - The validation library, Creating your first validator, Understanding error handling, How content negotiation works, Customizing error messages, Using a custom messages provider, Using i18n for localized messages, Validating different data sources, Validating query strings, params, headers, and cookies, Passing metadata to validators, Defining metadata in the validator, Passing metadata during validation, Using validators outside HTTP requests, Validating data directly, Next steps - [File uploads](https://docs.adonisjs.com/guides/basics/file-uploads.md): Learn how to handle file uploads in AdonisJS, from basic single file uploads to advanced direct uploads with cloud storage providers. Topics: Overview, Uploading your first file, Validating uploaded files, Inline validation, VineJS validation, Combining files with other fields, Storing and serving uploaded files, Moving files to permanent storage, Accessing your uploaded files, Uploading multiple files, Accepting multiple files in the form, Accessing multiple files, Validating multiple files, Processing multiple files, Direct uploads, Implementing direct uploads, Client-side implementation, Restricting file upload routes - [Session](https://docs.adonisjs.com/guides/basics/session.md): Learn how to use sessions to persist state across HTTP requests in AdonisJS applications. Topics: Overview, Installation, Choosing a storage driver, Configuration, Cookie configuration, Redis driver, Database driver, DynamoDB driver, File driver, Basic usage, Checking for values, Retrieving and removing values, Working with numeric values, Retrieving all session data, Clearing the entire session, Flash messages, Basic flash messages, Displaying flash messages, Custom flash messages, Flashing form data, Re-flashing messages, Intended URL, Session regeneration, Creating custom session stores, Implementing the store contract, Registering your custom store - [URL builder](https://docs.adonisjs.com/guides/basics/url-builder.md): Learn how to generate type-safe URLs for named routes in templates, redirects, and frontend applications. Topics: Overview, Defining named routes, Generating URLs in templates, Generating URLs during redirects, Generating URLs in other contexts, Passing route parameters, Adding query strings, Signed URLs, Creating signed URLs, Verifying signed URLs, Frontend integration, Why separate frontend and backend URL builders?, Using the URL builder in Inertia apps, Excluding routes from frontend bundle - [Exception handling](https://docs.adonisjs.com/guides/basics/exception-handling.md): Learn how to handle and report exceptions during HTTP requests in AdonisJS applications. Topics: Overview, The global exception handler, How errors flow through the handler, Handling specific error types, Debug mode and Youch, Status pages, Reporting errors, Adding context to error reports, Ignoring errors from reports, Custom exceptions, Creating a custom exception, When to use custom exceptions, Configuration reference, See also - [Debugging](https://docs.adonisjs.com/guides/basics/debugging.md): Learn how to debug AdonisJS applications using VSCode, Node.js inspector, debug logs, and Edge template helpers. Topics: Overview, VSCode debugger, Debugging Ace commands, Node.js inspector, Framework debug logs, Edge template debugging, The @dump tag, The @dd tag, Setting up the dumper, Configuring the dumper, Exception handler debug mode - [Static file server](https://docs.adonisjs.com/guides/basics/static-file-server.md): Learn how to serve static files from the public directory using the @adonisjs/static package. Topics: Overview, Installation, Configuration, Serving static files, `public` directory vs `resources` directory, Copying static files to production, See also ### Frontend - [EdgeJS](https://docs.adonisjs.com/guides/frontend/edgejs.md): Learn how to use Edge templates in AdonisJS applications to render HTML on the server-side. Topics: Overview, Your first template, Understanding template state, Template syntax refresher, Working with layouts and components, Creating components, Starter kit components, Layout, Form, Field components, Input control, Select control, Textarea control, Checkbox components, Radio components, Alert components, Button, Link, Avatar, Debugging templates, Configuration, See also - [Inertia](https://docs.adonisjs.com/guides/frontend/inertia.md): Learn how to build modern single-page applications using Inertia with AdonisJS, React, and Vue. Topics: Overview, Basic example, Rendering from a route, What happens behind the scenes, The inertia directory, Configuration files, Root template, Passing data to the template, Generated types, Typing shared data, Data loading patterns, Optional props, Always props, Deferred props, Mergeable props, Link and Form components, Creating links, Creating forms, Scoping errors with error bags, Route parameters, Query parameters, Shared data, Accessing shared data, Pagination, Controller, Frontend component, CSRF protection, Asset versioning, Redirects and history, Redirects from mutations, External redirects, Clearing browser history, Encrypting history state, Server-side rendering, Request lifecycle - [Transformers](https://docs.adonisjs.com/guides/frontend/transformers.md): Learn how to transform and serialize data in AdonisJS applications, including converting models to JSON and generating TypeScript types for frontend use. Topics: Overview, Understanding JSON serialization, Creating your first transformer, Resource items and collections, Paginating data, Using transformers with Inertia, Working with relationships, Basic relationship inclusion, Conditional relationships, Controlling relationship depth, Using variants, Defining variants, Using variants in controllers, Variant types in the frontend, Dependency injection, Injecting HttpContext, How dependency injection works, Passing custom data to transformers, Important distinctions, Transformers are not DTOs, When to use transformers - [Type-safe API Client](https://docs.adonisjs.com/guides/frontend/api-client.md): Learn how to use Tuyau, a type-safe HTTP client for AdonisJS applications that enables end-to-end type safety between backend and frontend. Topics: Overview, Installation, Inertia applications, Monorepo applications, Your first API call, Making API calls, Using route names with proxy syntax, Using the request method, Using HTTP method functions, Working with parameters, Route parameters, Query parameters, Request body, Combining parameters, Request validation and type inference, The role of request.validateUsing(), Defining validators, Query parameter validation, Error handling, Using `.safe()`, Narrowing HTTP errors with `isStatus()`, Validation errors, Distinguishing HTTP and network failures, Using try/catch, Retrieving typings, File uploads, Basic file upload, Backend handling, Multiple file uploads, Generating URLs, Basic URL generation, Method-specific URL generation, Query parameters in URLs, Wildcard parameters, Positional parameters, Route introspection, Checking if a route exists, Getting the current route, Type-level serialization, Date serialization, Model serialization, SuperJSON, Installation, Custom recipes, Type-level integration with transformers, Response parsing, Configuration reference, Recommended options, Advanced options, Access token authentication, Filtering routes, Related resources, Inertia integration, TanStack Query integration, Starter kits - [TanStack query](https://docs.adonisjs.com/guides/frontend/tanstack-query.md): Learn how to integrate TanStack Query with Tuyau for type-safe API calls, infinite scrolling, and cache management in AdonisJS applications. Topics: Overview, Prerequisites, Installation, Setup, Retry behavior, Basic queries, Queries with parameters, Conditional queries with skipToken, Mutations, Infinite queries, Frontend configuration, Backend validation, Backend controller, How infinite queries work, Reactive queries (Vue), Cache invalidation, queryKey() - Exact match, pathKey() - Base path, pathFilter() - Subtree matching, queryFilter() - Custom filtering, Error handling, Accessing errors in queries and mutations, Inspecting HTTP status codes, Global error handler - [Vite](https://docs.adonisjs.com/guides/frontend/vite.md): Learn how to use Vite to bundle frontend assets in AdonisJS applications. Topics: Overview, Installation, Configuration, Vite configuration, AdonisJS configuration, Folder structure, Starting the development server, Including entrypoints in templates, Referencing assets in templates, Processing static assets, TypeScript configuration, React with Hot Module Replacement, Deploying assets to a CDN, Common issues, Assets not loading in production, Static images missing from build, HMR not working, Middleware mode, Manifest file ### Data Layer - [SQL ORM](https://docs.adonisjs.com/guides/database/lucid.md): Learn how to use Lucid ORM, the official SQL ORM for AdonisJS, including models, query builder, migrations, and relationships. Topics: Overview, Configuration, Using the query builder directly, Working with models, Creating your first migration, Auto-generated schema classes, Schema generation rules, Creating a model, Basic CRUD operations, Accessing the query builder from models, Pretty printing queries during development, Pagination, Transactions, Model hooks, Model relationships, Defining relationships, Eager loading relationships, Many-to-many relationships, Serializing models, Model factories, Next steps - [Redis](https://docs.adonisjs.com/guides/database/redis.md): Use Redis inside your AdonisJS applications using the @adonisjs/redis package. Topics: Overview, Installation, Configuration, Connecting via Unix socket, Configuring clusters, Configuring sentinels, Usage, Switching between connections, Quitting connections, Error handling, Pub/Sub, Subscribing to channels, API differences from IORedis, Publishing messages, Subscribing to patterns, Unsubscribing, Using Lua scripts, Transforming arguments and replies, Argument transformers, Reply transformers, Testing, Events, Connection lifecycle events, Cluster events, Subscription events ### Auth - [Introduction](https://docs.adonisjs.com/guides/auth/introduction.md): Learn about the authentication system in AdonisJS and how to authenticate users in your application. Topics: Overview, What the auth package does not include, Choosing an auth guard, Session guard, Access tokens guard, Basic auth guard, Choosing a user provider, Installation, The initialize auth middleware, Creating the users table, Next steps - [Verifying user credentials](https://docs.adonisjs.com/guides/auth/verifying-user-credentials.md): Learn how to securely verify user credentials in an AdonisJS application using the AuthFinder mixin. Topics: Overview, Why secure verification matters, Using the AuthFinder mixin, Verifying credentials, Handling verification errors, Automatic password hashing - [Session guard](https://docs.adonisjs.com/guides/auth/session-guard.md): Learn how to authenticate users using the session guard in AdonisJS. Topics: Overview, Configuring the guard, Logging in, Logging out, Protecting routes, Handling authentication errors, Accessing the authenticated user, Avoiding non-null assertions, Checking authentication status, Silent authentication, Accessing the user in Edge templates, Remember me, Creating the tokens table, Configuring the token provider, Enabling remember me tokens, Generating tokens during login, Redirecting to the intended URL, Forced login flow, Voluntary login flow, Guest middleware, Events - [Access tokens guard](https://docs.adonisjs.com/guides/auth/access-tokens-guard.md): Learn how to authenticate HTTP requests using opaque access tokens in AdonisJS. Topics: Overview, Configuring the User model, Creating the tokens table, Issuing tokens, Token abilities, Token expiration, Token names, Configuring the guard, Authenticating requests, Using the auth middleware, Manual authentication, Checking authentication status, Avoiding non-null assertions, The current access token, Listing tokens, Deleting tokens, Login and logout via guard, Events - [Basic auth guard](https://docs.adonisjs.com/guides/auth/basic-auth-guard.md): Learn how to authenticate HTTP requests using the HTTP Basic Authentication protocol in AdonisJS. Topics: Overview, Configuring the guard, Configuring the User model, Authenticating requests, Using the auth middleware, Manual authentication, Next steps - [Custom auth guard](https://docs.adonisjs.com/guides/auth/custom-auth-guard.md): Learn how to create a custom authentication guard for AdonisJS. Topics: Overview, Project structure, Defining the user provider interface, Implementing the guard, Accepting dependencies, Generating tokens, Authenticating requests, Implementing helper methods, Supporting test authentication, Complete implementation, Registering the guard, Using the guard, Next steps - [Social authentication](https://docs.adonisjs.com/guides/auth/social-authentication.md): Implement social authentication in your AdonisJS applications using the @adonisjs/ally package. Topics: Overview, Installation, Configuration, Registering callback URLs with providers, Redirecting users to the provider, Requesting scopes, Adding query parameters, Handling the callback, User properties, Email verification state, Access token, Original response, Creating users and logging in, With the session guard, With the access tokens guard, Disallow signups for a provider, Stateless authentication, Fetching user from an existing token, Dynamic provider selection, Provider configuration reference, Creating a custom driver - [Authorization](https://docs.adonisjs.com/guides/auth/authorization.md): Learn how to implement authorization in AdonisJS using abilities and policies with the Bouncer package. Topics: Overview, Installation, Defining abilities, Using abilities in controllers, Authorization methods, Using allows and denies, Using authorize, Using execute, Custom authorization responses, Defining policies, Using policies in controllers, String-based policy references, Policy hooks, The before hook, The after hook, Handling guest users, Allowing guests in abilities, Allowing guests in policies, Using Bouncer in Edge templates, Using abilities in templates, Using policies in templates, Creating custom Bouncer instances, Dependency injection in policies, Authorization in API and Inertia applications, Computing permissions in transformers, Computing permissions in Inertia middleware, Testing authorization logic, Unit testing policies, Functional testing with HTTP requests ### Security - [Hashing](https://docs.adonisjs.com/guides/security/hashing.md): Learn how to securely hash and verify passwords using the AdonisJS hash service. Topics: Overview, Installation, Basic usage, Creating hashes, Verifying passwords, Choosing an algorithm, When to choose Argon2, When to choose Bcrypt, When to choose Scrypt, Configuration, Argon2 configuration, Bcrypt configuration, Scrypt configuration, Rehashing, Migrating between algorithms, Using multiple drivers, Hashing with model hooks, Testing with fakes, Understanding PHC format, Creating a custom driver - [Encryption](https://docs.adonisjs.com/guides/security/encryption.md): Learn how to encrypt and decrypt sensitive data in your AdonisJS applications. Topics: Overview, Basic usage, Encrypting values, Decrypting values, Purpose-bound encryption, Expiring encrypted values, Encrypting database columns, Choosing an algorithm, When to choose ChaCha20-Poly1305, When to choose AES-256-GCM, When to choose AES-256-CBC, When to choose Legacy, Configuration, Driver configuration options, Key rotation, Message verifier, Verifier with purpose and expiration, Using multiple drivers, Generating the app key - [CORS](https://docs.adonisjs.com/guides/security/cors.md): Learn how to implement CORS in AdonisJS to control cross-origin access to your API. Topics: Overview, Installation, Configuration, Enabling and disabling CORS, Configuring allowed origins, Configuring allowed methods, Configuring allowed headers, Exposing response headers, Allowing credentials, Caching preflight responses, Common scenarios, API serving a single-page application, Local development with different ports, Public API with no credentials, See also - [Securing SSR apps](https://docs.adonisjs.com/guides/security/securing-ssr-applications.md): Learn how to protect your server-rendered applications from common web attacks using the @adonisjs/shield package. Topics: Overview, CSRF protection, Protecting forms, Handling CSRF errors, Enabling CSRF tokens for Ajax requests, Exempting routes from CSRF protection, CSRF configuration reference, CSP (Content Security Policy), Enabling CSP, Using nonces for inline scripts and styles, Configuring CSP for Vite, Testing policies with report-only mode, CSP configuration reference, HSTS (HTTP Strict Transport Security), HSTS configuration reference, X-Frame-Options (clickjacking protection), X-Frame configuration reference, Content-Type sniffing protection, See also - [Rate limiting](https://docs.adonisjs.com/guides/security/rate-limiting.md): Protect your web application or API server from abuse by implementing rate limits using the @adonisjs/limiter package. Topics: Overview, Installation, Configuration, Environment variables, Shared options, Redis store, Database store, Throttling HTTP requests, Using a custom key, Switching the backend store, Blocking abusive users, Dynamic rate limiting, Handling ThrottleException, Customizing the error response, Using translations, Handling the exception globally, Direct usage, Creating a limiter instance, Limiting expensive operations, Preventing brute-force login attacks, Manual request consumption, Incrementing without throwing, Blocking keys, Resetting attempts, Testing, Creating a custom storage provider, Creating the config helper, Using your custom store, Wrapping rate-limiter-flexible drivers ### Core Concepts - [Application lifecycle](https://docs.adonisjs.com/guides/concepts/application-lifecycle.md): Learn about the application lifecycle in AdonisJS, including the boot, start, and termination phases. Topics: Overview, Boot phase, Start phase, Termination phase, Hooking into lifecycle phases, Hooking into the boot phase, Hooking into the start phase, Hooking into the termination phase, See also - [Dependency injection](https://docs.adonisjs.com/guides/concepts/dependency-injection.md): Learn how dependency injection works in AdonisJS and how to use the IoC container to manage class dependencies automatically. Topics: Overview, Your first dependency injection, Method injection, What can be injected?, The import type pitfall, Which classes support dependency injection, Using the container manually, Constructing classes with container.make, Calling methods with container.call, Bindings, Creating a binding, Singletons, Aliases, Binding existing values, Dependency injection during HTTP requests, Abstract classes as interfaces, Defining the contract, Creating concrete implementations, Configuring which implementation to use, Using the abstraction in your code, Contextual dependencies, Setting up services with different needs, Registering contextual bindings, Resolution priority, Swapping dependencies during testing, Container events, See also - [Service providers](https://docs.adonisjs.com/guides/concepts/service-providers.md): Learn about service providers in AdonisJS and how to use lifecycle hooks to execute code during application startup and shutdown. Topics: Overview, Understanding service providers, Where service providers are registered, Built-in service providers, Execution order and environments, When to create a service provider, Creating a custom service provider, Understanding all lifecycle hooks, The register hook, The boot hook, The start hook, The ready hook, The shutdown hook - [Container services](https://docs.adonisjs.com/guides/concepts/container-services.md): Learn about container services in AdonisJS and how they provide convenient access to framework components through ES module imports. Topics: Overview, Understanding container services, Using container services, Using dependency injection instead, Available services, Creating your own services - [Barrel files](https://docs.adonisjs.com/guides/concepts/barrel-files.md): Understand what barrel files are, why AdonisJS uses them, and how they help reduce visual clutter in your codebase. Topics: Overview, The problem: Import clutter, The solution: Barrel files, How barrel files work, File locations and import aliases, Performance and lazy loading, Disabling barrel files - [Assembler hooks](https://docs.adonisjs.com/guides/concepts/assembler-hooks.md): Learn how to use Assembler hooks to run custom actions during the development, testing, and build lifecycle of your AdonisJS application. Topics: Overview, Hooks reference, Creating and registering hooks, Init hook, Dev server hooks, Test runner hooks, Bundler hooks, Watcher hooks, Routes hooks, Routes committed, Routes scanning, Routes scanned, IndexGenerator, Configuring the IndexGenerator, Barrel file generation, Custom type generation, Complete IndexGenerator example - [Scaffolding and codemods](https://docs.adonisjs.com/guides/concepts/scaffolding.md): Learn how to create configure hooks for AdonisJS packages using stubs and codemods. Topics: Overview, Building blocks, Creating a configure hook, Creating stubs, Basic stub syntax, Using generators for naming conventions, Passing data to stubs, Global stub variables, Using stubs in commands, Ejecting stubs, Ejecting a single stub, Ejecting directories, Ejecting from other packages, Using CLI flags to customize output, Finding stubs to eject, Stubs execution flow, Codemods API reference, updateRcFile, defineEnvVariables, defineEnvValidations, registerMiddleware, registerJapaPlugin, registerPolicies, registerVitePlugin, installPackages - [Extending AdonisJS](https://docs.adonisjs.com/guides/concepts/extending-adonisjs.md): Learn how to extend the AdonisJS framework using macros and getters. Topics: Overview, Why extend the framework?, Understanding macros and getters, Creating your first macro, Creating your first getter, Singleton getters, When to use macros vs getters, Understanding declaration merging, Common mistakes, Macroable classes, Extending specific modules, Next steps ### Digging Deeper - [Cache](https://docs.adonisjs.com/guides/digging-deeper/cache.md): Learn how to use caching in AdonisJS applications to improve performance with multiple cache stores, multi-tier caching, and resiliency features. Topics: Overview, Installation, Configuration, Available drivers, Storing and retrieving data, Getting and setting values, Checking for existence, Pulling values, Deleting data, Tagging, Namespaces, Switching stores, Multi-tier caching, How it works, Configuration, Grace periods, Backoff strategy, Stampede protection, Timeouts, Soft timeouts, Hard timeouts, Adaptive caching, Edge integration, Ace commands, cache:clear, cache:delete, cache:prune, Method reference - [Drive](https://docs.adonisjs.com/guides/digging-deeper/drive.md): Learn how to manage user-uploaded files using AdonisJS Drive, a unified API for local filesystem and cloud storage services like S3, GCS, R2, and more. Topics: Overview, Installation, Configuration, Local filesystem, Amazon S3, Google Cloud Storage, Cloudflare R2, DigitalOcean Spaces, Supabase Storage, Basic usage, Specifying a disk, Using the Drive service, Generating URLs, Public URLs, Signed URLs, Direct uploads, Testing, Troubleshooting, Files are corrupted after upload, Understanding file visibility, See also - [Emitter](https://docs.adonisjs.com/guides/digging-deeper/emitter.md): Learn how to use the AdonisJS event emitter to build event-driven applications with type-safe events and listeners. Topics: Overview, Defining events and event data, String-based events, Class-based events, Listeners, Inline callbacks, Listener classes, Dependency injection in listeners, Listening methods, Persistent listeners with `on`, One-time listeners with `once`, Multiple listeners with `listen`, Wildcard listeners with `onAny`, Unsubscribing from events, Using the unsubscribe function, Using the `off` method, Clearing listeners, Error handling, Faking events during tests, Faking specific events, Assertions, Conditional assertions - [Health checks](https://docs.adonisjs.com/guides/digging-deeper/health-checks.md): Learn how to add health checks to your AdonisJS application for monitoring liveness and readiness in production environments. Topics: Overview, Liveness vs readiness, Configuring health checks, Exposing endpoints, Understanding the readiness report, Protecting the readiness endpoint, Available health checks, DiskSpaceCheck, MemoryHeapCheck, MemoryRSSCheck, DbCheck, DbConnectionCountCheck, RedisCheck, RedisMemoryUsageCheck, Caching results, Creating custom health checks, Registering custom health checks - [I18n](https://docs.adonisjs.com/guides/digging-deeper/i18n.md): Learn how to create web apps for multiple regions and languages using the @adonisjs/i18n package. Topics: Overview, Installation, Configuration, Configuration options, Configuring fallback locales, Configuring supported locales, Storing translations, Translation file format, Resolving translations, Understanding fallback behavior, Handling missing translations, Detecting user locale during HTTP requests, Customizing locale detection, Translating validation messages, Using translations with VineJS directly, ICU message format, Interpolation, Number formatting, Date and time formatting, Plural rules, Select format, Select ordinal format, Formatting values, formatNumber, formatCurrency, formatDate, formatTime, formatRelativeTime, formatPlural, formatList, formatDisplayNames, Configuring the i18n Ally VSCode extension, Listening for missing translations, Reloading translations, Advanced: Creating a custom translation loader, Using the custom loader, Advanced: Creating a custom translation formatter, Using the custom formatter - [Atomic locks](https://docs.adonisjs.com/guides/digging-deeper/locks.md): Learn how to use atomic locks in AdonisJS to prevent race conditions and coordinate concurrent operations. Topics: Overview, Installation, Configuration, Redis store, Database store, Environment variables, Creating locks, Acquiring locks, Running code within a lock, Running immediately or not at all, Manual lock management, Lock options, Checking lock state, Extending locks, Sharing locks between processes, See also - [Logger](https://docs.adonisjs.com/guides/digging-deeper/logger.md): Learn how to use the AdonisJS logger to write logs to the console, files, and external services. Built on top of Pino, the logger is fast and supports multiple targets. Topics: Overview, Writing your first log, Adding context to logs, String interpolation, Request-aware logging, Configuring the logger, Understanding the configuration, Configuration reference, Log levels, Writing logs to a file, File rotation, Defining targets conditionally, Using multiple loggers, Dependency injection, Child loggers, Conditional logging, Hiding sensitive values, Using the Secret class, Pino statics - [Mail](https://docs.adonisjs.com/guides/digging-deeper/mail.md): Learn how to send emails from your AdonisJS application using the @adonisjs/mail package. Topics: Overview, Installation, Configuration, Transport configuration, Sending your first email, Configuring the message, Subject and sender, Recipients, Email contents, Using MJML for responsive emails, Queueing emails, Using BullMQ for persistent queuing, Switching between mailers, Attachments, File attachments, Attachments from streams and buffers, Embedding images, Calendar invites, Custom headers, List headers, Class-based emails, Testing, Using the fake mailer, Assertion methods, Testing mail classes directly, Accessing sent emails, Custom transports, Custom template engine, Events - [Queues](https://docs.adonisjs.com/guides/digging-deeper/queues.md): Learn how to use job queues in AdonisJS to process tasks in the background with support for retries, scheduling, and multiple backends. Topics: Overview, Installation, Configuration, Adapter configuration, Creating jobs, Job options, Job context, Handling timeouts, Dependency injection, Dispatching jobs, Dispatch options, Batch dispatching, Retries and backoff, Backoff strategies, Per-job retry, Scheduled jobs, Cron schedules, Interval schedules, Schedule options, Managing schedules, Scheduler Ace commands, Running the worker, Worker options, Worker configuration, Testing, Faking the queue, Assertion methods, Advanced matching - [Server-Sent Events](https://docs.adonisjs.com/guides/digging-deeper/server-sent-events.md): Learn how to push real-time updates from server to client using Server-Sent Events with Transmit in AdonisJS. Topics: Overview, Installation, Configuration, Registering routes, Applying middleware to routes, Broadcasting events, Excluding specific clients, Channels, Authorizing channels, Client-side setup, Subscribing to channels, Removing a message handler, Deleting a subscription, Listening to connection status, Client configuration options, Lifecycle hooks, Getting channel subscribers, Multi-instance synchronization, Redis transport, MQTT transport, Production considerations, Disable compression for SSE - [OpenTelemetry](https://docs.adonisjs.com/guides/digging-deeper/opentelemetry.md): Add distributed tracing and observability to your AdonisJS application with OpenTelemetry. Topics: Overview, OpenTelemetry concepts, Installation, Configuration, Service identification, Exporters, Multiple destinations (fan-out), Debug mode, Enabling and disabling, Sampling, Customizing instrumentations, Testing locally with Jaeger, Creating custom spans, Using the record helper, Using decorators, Setting attributes on the current span, Recording events, Context propagation, Propagating to HTTP calls, Propagating to queue jobs, User context, Logging integration, Advanced configuration, Performance considerations, Helpers reference ### Command line - [Introduction](https://docs.adonisjs.com/guides/ace/introduction.md): Ace is a command line framework used by AdonisJS to create and run console commands. Topics: Overview, Running Ace commands, Viewing available commands, Getting help for specific commands, Controlling color output, Creating command aliases, How alias expansion works, Running commands programmatically - [Creating commands](https://docs.adonisjs.com/guides/ace/creating-commands.md): Learn how to create custom Ace commands in AdonisJS Topics: Creating your first command, Configuring command metadata, Setting the command name, Writing command descriptions, Adding detailed help text, Defining command aliases, Configuring command options, Starting the application, Allowing unknown flags, Creating long-running commands, Understanding command lifecycle, Using dependency injection, Handling errors and exit codes, Handling errors with try/catch, Handling errors in the completed method, Terminating the application, Cleaning up before the app terminates - [Command arguments](https://docs.adonisjs.com/guides/ace/arguments.md): Learn about defining and processing command arguments in Ace commands. Topics: Overview, Defining your first argument, Accepting multiple values, Customizing argument name and description, Making arguments optional, Providing default values, Transforming argument values, Accessing all arguments - [Command flags](https://docs.adonisjs.com/guides/ace/flags.md): Learn how to define and process command flags in Ace commands. Topics: Overview, Defining boolean flags, Negating boolean flags, Defining string flags, Defining number flags, Defining array flags, Customizing flag names and descriptions, Creating flag aliases, Setting default values, Transforming flag values, Accessing all flags - [Prompts](https://docs.adonisjs.com/guides/ace/prompts.md): Prompts are terminal widgets for user input, using the @poppinss/prompts package. They support various types like input, password, and select, and are designed for easy testing integration. Topics: Overview, Displaying text input, Adding validation, Providing default values, Collecting passwords, Creating choice lists, Customizing choice display, Allowing multiple selections, Confirming actions, Customizing yes/no labels, Using autocomplete, Understanding prompt options, Transforming return values, Formatting display values, Adding hints - [Terminal UI](https://docs.adonisjs.com/guides/ace/terminal-ui.md): Ace Terminal UI utilizes the @poppinss/cliui package, offering tools to display logs, tables, and animations. Designed for testing, it includes a 'raw' mode to simplify log collection and assertions. Topics: Overview, Displaying log messages, Adding prefix and suffix, Creating loading animations, Displaying action status, Formatting text with colors, Rendering tables, Right-aligning columns, Rendering full-width tables, Creating boxed content with stickers, Building animated task runners, Creating basic tasks, Reporting task progress, Enabling verbose mode - [Repl](https://docs.adonisjs.com/guides/ace/repl.md): AdonisJS offers an application-aware REPL to interact with your application from the command line. Topics: Overview, Starting the REPL session, Using editor mode, Accessing previous results, Accessing the last result, Accessing the last error, Navigating command history, Exiting the REPL session, Importing modules, Using the importDefault helper, Using helper methods, Loading services, Making class instances, Promisifying functions, Adding custom REPL methods, Creating a REPL preload file, Defining a custom method, Using your custom method ### Testing - [Introduction](https://docs.adonisjs.com/guides/testing/introduction.md): Learn how testing is configured in AdonisJS applications using Japa, and how to create, run, and filter tests. Topics: Overview, Japa and AdonisJS integration, Project structure, Understanding suites, Configuring plugins and hooks, Creating your first test, Running tests, Filtering tests, Watch mode, Additional flags, Environment variables, Next steps - [API tests](https://docs.adonisjs.com/guides/testing/api-tests.md): Learn how to test JSON API endpoints in AdonisJS using Japa's API client. Topics: Overview, Configuration, Writing your first test, Cleaning up database state, Making requests, Using route names, Using HTTP methods, Sending request data, JSON data, Form data, Multipart data, Cookies, Sessions, Authentication, Session authentication, Token authentication, Debugging, Dumping requests, Dumping responses, Checking for server errors, Assertions reference, Status and body assertions, Header assertions, Cookie assertions, Redirect assertions, Session assertions, Validation error assertions, OpenAPI assertions - [Browser tests](https://docs.adonisjs.com/guides/testing/browser-tests.md): Learn how to write end-to-end browser tests for hypermedia and Inertia applications using Playwright. Topics: Overview, Setup, CLI options, Recording traces, Running specific tests, Basic page visits, Database state, Form interactions, Recording mode, Authenticating users, Cookies and sessions, Setting cookies, Reading cookies, Setting session data, Setting flash messages, Reading session and flash messages, See also - [Console tests](https://docs.adonisjs.com/guides/testing/console-tests.md): Learn how to test custom Ace commands in AdonisJS applications. Topics: Overview, Basic example, Testing logger output, Testing table output, Trapping prompts, Replying to text prompts, Choosing options from select prompts, Accepting or rejecting confirmation prompts, Intermediate: Testing prompt validation, Available assertions, See also - [Resetting state between tests](https://docs.adonisjs.com/guides/testing/resetting-state-between-tests.md): Learn how to manage application state during testing in AdonisJS, including database migrations, state cleanup, and test environment configuration. Topics: Overview, Database state management, Migrating the database, Seeding the database, Cleaning Up between tests, Filesystem state management, Redis state management, Environment configuration - [Test doubles](https://docs.adonisjs.com/guides/testing/test-doubles.md): Learn how to use test doubles in AdonisJS, including built-in fakes for Mail, Hash, Emitter, and Drive, container swaps for dependency injection, and time utilities for testing time-sensitive code. Topics: Overview, Built-in fakes, Emitter fake, Hash fake, Mail fake, Drive fake, Container swaps, Swapping bindings in tests, The `useFake` helper, Manual swap with `container.swap`, Time utilities, Freezing time, Traveling through time, Sinon.js ## API Reference ### Root - [Application](https://docs.adonisjs.com/reference/application.md): Learn about the Application class and how to access the environment, state, and make paths to project files. Topics: Overview, Environment, Switching the environment, Node environment, Shorthand properties, State, Shorthand properties, Listening for process signals, Conditional listeners, Notifying parent process, Making paths to project files, makePath, makeURL, tmpPath, configPath, publicPath, viewsPath, languageFilesPath, httpControllersPath, modelsPath, servicesPath, middlewarePath, validatorsPath, policiesPath, exceptionsPath, transformersPath, eventsPath, listenersPath, mailsPath, migrationsPath, seedersPath, factoriesPath, generatedServerPath, generatedClientPath, startPath, providersPath, commandsPath, Generators - [AdonisRC file](https://docs.adonisjs.com/reference/adonisrc-rcfile.md): The adonisrc.ts file is used to configure the workspace settings of your application. Topics: Overview, directories, preloads, providers, commands, commandsAliases, hooks, metaFiles, tests - [Commands](https://docs.adonisjs.com/reference/commands.md): Learn about the commands shipped with the AdonisJS framework core and official packages. Topics: serve, build, add, configure, eject, generate\:key, make\:controller, make\:middleware, make\:event, make\:validator, make\:listener, make\:service, make\:exception, make\:command, make\:view, make\:provider, make\:preload, make\:test, make\:mail, make\:policy, inspect\:rcfile, list\:routes, env\:add - [Edge helpers](https://docs.adonisjs.com/reference/edge.md): Learn about the helpers and tags contributed by the AdonisJS official packages to the Edge templating engine. Topics: request, route/signedRoute, app, config, session, flashMessages, old, t, i18n, auth, asset, embedImage / embedImageData, @flashMessage, @error, @inputError, @vite, @viteReactRefresh, @can/@cannot - [Events](https://docs.adonisjs.com/reference/events.md): Learn about the events dispatched by the AdonisJS framework core and official packages. Topics: http\:request_completed, http\:server_ready, container_binding\:resolved, session\:initiated, session\:committed, session\:migrated, i18n\:missing\:translation, mail\:sending, mail\:sent, mail\:queueing, mail\:queued, queued\:mail\:error, session_auth\:login_attempted, session_auth\:login_succeeded, session_auth\:authentication_attempted, session_auth\:authentication_succeeded, session_auth\:authentication_failed, session_auth\:logged_out, access_tokens_auth\:authentication_attempted, access_tokens_auth\:authentication_succeeded, access_tokens_auth\:authentication_failed, authorization\:finished, cache\:cleared, cache\:deleted, cache\:hit, cache\:miss, cache\:written - [Exceptions](https://docs.adonisjs.com/reference/exceptions.md): Learn about the exceptions raised by the AdonisJS framework core and official packages. Topics: E_ROUTE_NOT_FOUND, E_ROW_NOT_FOUND, E_AUTHORIZATION_FAILURE, E_TOO_MANY_REQUESTS, E_BAD_CSRF_TOKEN, E_OAUTH_MISSING_CODE, E_OAUTH_STATE_MISMATCH, E_UNAUTHORIZED_ACCESS, E_INVALID_CREDENTIALS, E_CANNOT_LOOKUP_ROUTE, E_HTTP_EXCEPTION, E_HTTP_REQUEST_ABORTED, E_INSECURE_APP_KEY, E_MISSING_APP_KEY, E_INVALID_ENV_VARIABLES, E_MISSING_COMMAND_NAME, E_COMMAND_NOT_FOUND, E_MISSING_FLAG, E_MISSING_FLAG_VALUE, E_MISSING_ARG, E_MISSING_ARG_VALUE, E_UNKNOWN_FLAG, E_INVALID_FLAG, E_MULTIPLE_REDIS_SUBSCRIPTIONS, E_MULTIPLE_REDIS_PSUBSCRIPTIONS, E_MAIL_TRANSPORT_ERROR, E_SESSION_NOT_MUTABLE, E_SESSION_NOT_READY, E_MISSING_METAFILE_PATTERN, E_MISSING_PRELOAD_FILE, E_INVALID_PRELOAD_FILE, E_MISSING_PROVIDER_FILE, E_INVALID_PROVIDER, E_MISSING_SUITE_NAME, E_MISSING_SUITE_FILES, E_UNKNOWN_ASSEMBLER_HOOK, E_INVALID_HOOKS_VALUE, E_INVALID_PRESETS_VALUE, E_INVALID_PRESET_FUNCTION, E_PRESET_EXECUTION_ERROR, E_INVALID_ENV_VARIABLES, E_IDENTIFIER_ALREADY_DEFINED - [Helpers](https://docs.adonisjs.com/reference/helpers.md): AdonisJS bundles its utilities into the helpers module and makes them available to your application code. Topics: escapeHTML, encodeSymbols, prettyHrTime, isEmpty, truncate, excerpt, slug, interpolate, plural, isPlural, pluralize, singular, isSingular, camelCase, capitalCase, dashCase, dotCase, noCase, pascalCase, sentenceCase, snakeCase, titleCase, random, sentence, condenseWhitespace, seconds, milliseconds, bytes, ordinal, safeEqual, safeTiming, compose, base64, fsReadAll, fsImportAll, String builder, Message builder, Secret, Using the Secret class, Data-types detection - [Types helpers](https://docs.adonisjs.com/reference/types-helpers.md): Reference guide for TypeScript type helper utilities available in AdonisJS for type inference and manipulation. Topics: InferRouteParams, Prettify, Primitive, OneOrMore, Constructor, AbstractConstructor, LazyImport, UnWrapLazyImport, NormalizeConstructor, Opaque, UnwrapOpaque, ExtractFunctions, AreAllOptional, ExtractUndefined, ExtractDefined, AsyncOrSync