Looking to migrate your application to AdonisJS 6? Checkout our migration guide!

Create bespoke backend applications in record time

AdonisJS is a TypeScript-first web framework for building web apps and API servers. It comes with support for testing, modern tooling, an ecosystem of official packages, and more.

import router from '@adonisjs/core/services/router'
import PostsController from '#controllers/posts_controller'
router.get('posts', [PostsController, 'index'])
router.post('posts', [PostsController, 'store'])
router.get('posts/:id', [PostsController, 'show'])

Type-safe

We pay a closer look at type-safety, seamless intellisense, and support for auto imports when designing framework APIs.

ESM ready

AdonisJS leverages modern JavaScript primitives, including ES modules, Node.js sub-path imports, and much more.

Fast - Wherever it matters

We ship with one of the fastest validation libraries, and our HTTP server has performance on par with Fastify.

Feature rich framework core

The core of the framework is a single npm package that provides all the base-level features you need to create a web application from scratch.

No need to spend hours finding and assembling dozens of packages together before you can write the first line of code.

Use AdonisJS and be productive from day one.

World-class testing experience

Testing is not an afterthought for us. We ship with primitives to manage test databases, swap dependencies, generate fake data, interact with cookies and sessions, and much more.

With AdonisJS, you will love writing tests.

import { test } from '@japa/runner'
import { UserFactory } from '#factories/user_factory'
test('render polls created by the logged-in user', async ({ visit, browserContext }) => {
/**
* Create a user with 5 polls using Model factories
*/
const user = await UserFactory.with('polls', 5).create()
/**
* Mark the user as logged in
*/
await browserContext.loginAs(user)
/**
* Visit the endpoint that renders the list of
* polls for the logged-in user
*/
const page = await visit('/me/polls')
for (let poll in user.polls) {
await page.assertExists(
page.locator('h2', { hasText: poll.title })
)
}
})

A huge collection of officially maintained packages

Always find yourself switching between the latest ORMs or migrating away from those two unmaintained libraries?

We have been there too! That is why AdonisJS ships with a collection of officially maintained and well-documented packages.

Pick and use the ones you need.

Lucid

SQL ORM with a database query builder, Active record based models, support for migrations, and model factories for testing.

Auth

Driver-based authentication layer with support for sessions, API tokens, basic auth, and much more.

Bouncer

Bouncer provides low-level APIs to build custom authorization workflows like RBAC or ACL.

FlyDrive

FlyDrive provides a unified API to manage user-uploaded files on S3, GCS, and the local filesystem.

Limiter

Protect your API endpoints by implementing fine-grained rate limiting. Supports multiple backend stores.

Edge

A modern and batteries-included template engine for the ones who keep things simple.

Bentocache

Speed up your applications by storing slowly changing data in a multi-tier cache store.

VineJS

A superfast and type-safe validation library for Node.js. VineJS comes with 50+ validation rules and 12+ schema types.

Ally

Add support for Social login to your apps. Ally ships Twitter, GitHub, Google, LinkedIn, and many more drivers.

I18n

Create multi-lingual web apps. We provide APIs for localization, formatting values, and managing translations.

Health checks

Monitor database connectivity, redis memory size, and your application health using a single package.

Mailer

Send emails from your application using a multi-driver mailer. Supports SMTP, SES, Mailgun, Resend and much more.

Transmit

Send real-time updates by leveraging the power of Server Sent Events (SSE).

Lock

Synchronize the access to a shared resource to prevents several processes, or concurrent code, from executing a section of code at the same time.

Vite

Bundle the frontend assets of your applications using Vite.

Inertia

Make your frontend and backend work together in perfect harmony.

Tuyau

An end-to-end type-safe client for interacting with your AdonisJS APIs.

IoC container

AdonisJS ships with a zero-config IoC container that uses reflection to resolve and inject class dependencies.

Supercharged CLI

Scaffold resources, run database migrations, use application-aware REPL, or create custom commands. All using a unified CLI framework.

Security primitives

Implement CORS policies to protect your APIs, or use AdonisJS shield to protect against CSRF, XSS, and man-in-the-middle attacks.

A wall full of love and support from developers across the world

Mahmoud Mousa

@MahmMousa

Adonis in MVC is a blessing tbh! I use it with HTMX or Turbo and it's just perfect!

Peter Vukovic

@pvukovic

Adonis is wonderful - just a perfect level of cognitive load a framework can have both in documentation and implementation.
Not too much, not too little, but exactly what you need as a developer.

Reagan Ekhameye

@techreagan

@adonisframework is the first ever framework I learnt from the docs, I'm in love with this framework, it's just like @Laravel but for the @nodejs world . I will be like I'm stuck how can i solve this, the docs got you covered. It's gonna be my long term buddy.

Trésor Muco

@mucotreso

The more I work with @adonisframework the more I'm convinced that it is the best framework in the Nodejs Ecosystem.
The docs are well written, well designed, you just want to stay there and learn more.
Thanks to all the people who are working on this project.

Dragos Nedelcu

@Drag0sNedelcu

Tried recently @adonisframework v6 and I am blown away. I love how the modules are separated, like orm, validation etc. Wish there were more discussions on this. Feels highly underrated...

Carl Mathisen

@carlmathisen

We’ve used it at work for a couple of years, just replacing these express cocktails. They were fine, but I was tired of maintaining and upgrading a unique set of libraries that were our company unique combination of regular features.

Jofie Bernas

@jooop4y

Having a solid experience in Laravel and wanting to explore NodeJs, I found @adonisframework a good choice for me to go through. It is been easy for me to jump in since it feels like I am just writing Laravel but in typescript and NodeJS , Awesome developer experience!.

Dylan Britz

@britzdm

I've been using @adonisframework for the last two days an I've already got more done then I did in the last 3 weeks with just using expressjs.

Sam Newby

@SamNewby_

If you’re a PHP dev who loves Laravel and want to give another language a go and use a similar style framework then make sure to check out @adonisframework. It has its own ORM, Auth support, and even a CLI tool called Ace which is very similar to Artisan.#Laravel #NodeJS

Andrew Weir

@andruu

So funny seeing everyone looking/begging for the node/ts equivalent of rails/Laravel when it’s existed for years. I started using @adonisframework in 2016 in production for one of the biggest startups in Asia. If you want full stack with everything built in take a look.

Sponsored by fantastic companies and individuals

AdonisJS is an independent open-source project released under the MIT license. We rely on our GitHub sponsors to keep the lights on.