Framework
adonisjs/core avatar
adonisjs/core

AdonisJS core: a fullstack MVC framework for Node.js, reviewed for adoption

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.

19,141 stars670 forksTypeScriptMIT

At a glance

What is it?
The @adonisjs/core package is the runtime and CLI layer of AdonisJS 7.x, a TypeScript-first MVC framework for Node.js. It ships a real dependency container, an Ace command runner and code generators, and it requires Node 24 or newer.
Who is it for?
Adopt @adonisjs/core if you want a batteries-included MVC framework with a container, an Ace CLI and code generation, and you can run Node 24 or newer. Do not adopt it if you need to stay on older Node releases or you only want a minimal router.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What @adonisjs/core actually is, and who it is for

The README calls AdonisJS a fullstack MVC framework for Node.js, with a stated focus on ergonomics and speed. That description is broad, so it helps to separate the framework from this repository. @adonisjs/core is the package that carries the framework core: the container, the config and app modules, the encryption and hash modules, the Ace command runner, the code generators and the assembler hooks. The repository layout reflects that split. Directories such as commands/, providers/, services/, factories/, modules/, stubs/ and toolkit/ sit next to src/ and index.ts, and package.json exposes them through a long list of subpath exports rather than one entry point.

The intended user is a team building a web application or an API server in TypeScript and wanting conventions supplied rather than assembled. The package.json describes the package simply as "Core of AdonisJS". The README points readers to adonisjs.com for the website and docs.adonisjs.com for guides, which is a signal that this repository is not the primary onboarding surface. If you arrive here expecting a quickstart, you will be reading package metadata and directory names instead. The subpath exports tell you more than the README does: "./ace", "./hash", "./encryption", "./bodyparser", "./container", "./config", "./app", "./ignitor" and "./generators" are all first-class entry points, so the framework is deliberately modular inside a single package.

How the pieces fit: container, ignitor, Ace and codegen

The architecture visible from package.json is a layered one. The container module is exported at "./container", and the app and config modules at "./app" and "./config". The ignitor entry at "./ignitor" is the bootstrap layer that wires those together before your application code runs. That is the mechanism behind the framework's dependency injection story: services and providers are registered into the container, and the ignitor starts the application with that container in place.

Ace is the command layer, exported at "./ace" with codemods at "./ace/codemods". The bin field maps a single executable, adonis-kit, to ./build/toolkit/main.js. The v7.5.0 release notes describe the headline change as "Introducing the codegen command", and v7.4.0 added "Codegen for defining Data.FlashMessages type". So code generation is not a side utility here; it is a documented part of the 7.x surface, and it is the feature the maintainers chose to lead with in the most recent release.

Several subsystems are shipped as modules with their own subpaths. Hash has drivers for argon, bcrypt and scrypt, plus a phc_formatter. Encryption has a driver named aes_256_cbc. Body parsing is split into a module and a middleware, which is the clearest example of the framework's middleware model: the module holds the logic and the middleware connects it to the request pipeline. The generators entry points at an assembler hooks file, which is what produces the stubs you see in the stubs/ directory. None of this is documented in the README itself; it is inferred from the exports map and the repository layout, which is a fair criticism of the repository as a standalone artifact.

Installing @adonisjs/core and running your first codegen command

The README does not contain install instructions. It links to adonisjs.com and docs.adonisjs.com instead, so the details below come from the repository files rather than from the README text. The package name is @adonisjs/core, the version in package.json is 7.5.0, and the engines field requires Node 24.0.0 or newer. Check your Node version before anything else, because that floor is higher than several other Node frameworks ask for.

The package.json bin field maps adonis-kit to ./build/toolkit/main.js, so that is the executable the package installs. The v7.5.0 release notes introduce a codegen command, and v7.4.0 added codegen for defining the Data.FlashMessages type, so code generation is the first genuinely useful thing to look at rather than writing types by hand.

The release notes do not spell out the flags for the codegen command, and the README does not either, so read the command output before scripting it. What you should expect is generated TypeScript definitions rather than application scaffolding: the v7.4.0 codegen work was specifically for defining the Data.FlashMessages type, which suggests the command emits types the framework consumes. The package is ESM ("type": "module" in package.json) and ships only the build directory, with build/bin and build/tests excluded from the published files list.

The Node 24 floor is the constraint that decides adoption

The engines field says node >=24.0.0. That is the single hardest fact in this repository for anyone evaluating it. AdonisJS 7.x is not a drop-in upgrade path for a team running an older LTS line, and the framework offers no documented fallback. If your deployment images, CI runners or serverless runtime pin an earlier major version, you are either upgrading Node first or not using this release.

The second limitation is documentation placement. This repository is the core package, not the framework's guide. The README is largely a sponsor wall and a set of links, with no install steps, no configuration example and no explanation of the exports map. The 7.x branch is the default branch, and the last push was on 2026-09-13, but a recent push does not substitute for documentation in the repository itself. Anyone arriving at github.com/adonisjs/core to decide whether to adopt it will have to read package.json to learn what the package even contains.

A third boundary: the published package excludes build/bin and build/tests. That is normal for an npm package, but it means the repository and the installed artifact are not the same thing. If you are debugging behaviour, read src/ in the repository, not the build output in node_modules. The README does not document rollback, migration steps between 7.x minors, or a support window for older majors, so plan upgrades by reading the release notes for each minor rather than expecting a deprecation policy in the README.

AdonisJS core against NestJS and Fastify

The searches people run around this project pair it with NestJS and with Fastify, and the difference in approach is real. NestJS is also TypeScript-first and also has a dependency injection container, but it is built around decorators and modules as the primary organizing unit. AdonisJS core's container is exported as a module and wired by the ignitor, and its organizing unit is closer to the MVC convention set the README names. If you prefer decorator metadata and a module graph, NestJS matches that mental model more directly; if you want the framework to decide the layout, AdonisJS does more of that for you.

Fastify is the sharper contrast. Fastify is a focused HTTP server with a plugin system, and it does not ship an ORM, an auth layer or a CLI in the same package. AdonisJS core ships Ace, codegen, hash drivers and an encryption module inside one package with subpath exports. That is the trade: fewer decisions for you, more surface you inherit. A team that only needs routing and JSON serialization will find Fastify smaller and easier to reason about, and the AdonisJS package will look like weight they did not ask for.

The Laravel comparison that shows up in search traffic is about lineage rather than architecture. AdonisJS borrows Laravel's conventions, and the README's MVC framing is consistent with that, but the two do not share a runtime, a package manager or a language. Treat the comparison as a shorthand for "convention-driven MVC", not as a migration path.

Maintenance, versioning and the MIT licence

The repository is not archived, the default branch is 7.x, and the last push was on 2026-09-13. The release cadence visible in the notes is steady: v7.3.5 on 2026-07-08, v7.4.0 on 2026-08-09, v7.5.0 on 2026-08-21. Those are minor and patch releases within a single major line, and the changes are small and specific, such as fixing VineMultipartFile input types to accept File and Blob types in v7.3.5. Small, typed fixes are a good sign for upgrade cost: the 7.x minors so far look like additions rather than breaking changes.

The upgrade cost you should budget for is the codegen surface. v7.4.0 and v7.5.0 both touch code generation, and generated types can shift between minors. Because the package is ESM-only and the engines field pins Node 24 or newer, an upgrade also means tracking the Node release line. There is no documented long-term support policy in the README, so pin exact versions in package.json and read each release note before bumping.

The licence is MIT, per the LICENSE.md file in the repository. MIT is permissive: it allows commercial use, modification and redistribution with the licence text retained. That is a plain statement of what the licence file says, not legal advice, and it says nothing about the licence terms of the wider ecosystem of official packages the description mentions.

Editorial conclusion

Adopt @adonisjs/core if you want a batteries-included MVC framework with a container, an Ace CLI and code generation, and you can run Node 24 or newer. Do not adopt it if you need to stay on older Node releases or you only want a minimal router. Verify the Node engine requirement, the 7.x default branch and the MIT licence before you commit a team to it.

Frequently asked questions

What is @adonisjs/core?

@adonisjs/core is the core package of AdonisJS, described in package.json as "Core of AdonisJS". The README describes AdonisJS itself as a fullstack MVC framework for Node.js with a focus on ergonomics and speed. The package carries the container, app, config, Ace, hash, encryption, bodyparser and codegen modules.

Which Node.js version does AdonisJS core 7.x require?

The engines field in package.json sets node to >=24.0.0. That floor applies to version 7.5.0, the version listed in package.json, and there is no documented fallback for earlier Node majors in the README.

What is the adonis-kit command?

The bin field in package.json maps adonis-kit to ./build/toolkit/main.js, so it is the executable the package installs. The v7.5.0 release notes introduce a codegen command, and v7.4.0 added codegen for defining the Data.FlashMessages type.

Is AdonisJS core a better choice than Fastify?

Fastify is a focused HTTP server with a plugin system, while @adonisjs/core ships a container, an Ace CLI, codegen, hash drivers and an encryption module in one package. The choice comes down to whether you want those conventions supplied or assembled yourself; the README does not make a comparison.

What are the key differences between AdonisJS and NestJS?

Both are TypeScript-first and both have a dependency injection container. NestJS organizes around decorators and modules, while @adonisjs/core exports its container at ./container and wires it through the ignitor, with the README framing the framework as MVC. The README does not discuss NestJS.

Official sources

  1. adonisjs/core on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/adonisjs-core.svg)](https://hysenlabs.com/projects/adonisjs-core)