English for AdonisJS Developers
Learn the English vocabulary for AdonisJS: batteries-included conventions, IoC container bindings, and explaining an opinionated Node framework to a team.
AdonisJS conversations often need to justify choosing an opinionated, batteries-included framework over assembling smaller libraries, so the vocabulary covers its conventions, dependency injection model, and the trade-offs that come with structure versus flexibility.
Key Vocabulary
Batteries-included framework — AdonisJS’s design philosophy of shipping routing, ORM, validation, authentication, and testing tools together out of the box, rather than requiring teams to assemble them from separate packages. “Being a batteries-included framework is exactly why we chose AdonisJS — we didn’t want to evaluate and wire together five separate libraries just to get auth and validation working.”
IoC container — AdonisJS’s inversion-of-control container, which manages how classes and their dependencies are instantiated and bound, allowing services to be swapped or mocked without changing consuming code. “Because this service is resolved through the IoC container, we can swap in a mock implementation for tests without touching the controller that uses it.”
Service provider — a class responsible for registering bindings into the IoC container and bootstrapping a feature or package when the application starts, AdonisJS’s mechanism for wiring in new functionality. “We wrote a service provider to register our custom logging binding — now any part of the app can request it through the container.”
Lucid ORM — AdonisJS’s built-in ORM for interacting with relational databases, including model definitions, migrations, and query building, following Active Record-style conventions. “We didn’t need to add Prisma or another ORM — Lucid ORM handled the migrations and model relationships we needed out of the box.”
Convention over configuration — the design principle behind AdonisJS’s folder structure, naming rules, and defaults, meaning less explicit setup is required as long as you follow the framework’s expected patterns. “Convention over configuration is why this controller was picked up automatically — we didn’t have to manually register the route once the file followed the expected naming pattern.”
Common Phrases
- “Is being a batteries-included framework actually worth it here, or does this project need more flexibility than AdonisJS’s defaults provide?”
- “Is this dependency resolved through the IoC container, or is it being instantiated directly, which would make mocking it harder?”
- “Do we need a dedicated service provider for this, or can it just live inside an existing one?”
- “Should we use Lucid ORM’s built-in relationships here, or does this query need something more custom?”
- “Is this breaking because we’re not following convention over configuration, or is there an actual bug in the routing?”
Example Sentences
Justifying a framework choice to the team: “We picked AdonisJS specifically because it’s a batteries-included framework — auth, validation, and the ORM are already integrated, so we’re not maintaining glue code between separate libraries.”
Reviewing a dependency injection pattern: “Register this through the IoC container instead of instantiating it directly in the constructor — that’s what makes it swappable in tests.”
Onboarding a new developer: “A lot of this works automatically because of convention over configuration — as long as your controller follows the expected naming and folder structure, AdonisJS wires it up without extra registration.”
Professional Tips
- Justify batteries-included framework choices with a concrete list of what you’re not maintaining separately — it’s a stronger argument than a general preference for “less setup.”
- Explain the IoC container in terms of testability — it’s the reason a dependency can be mocked cleanly, which is a concrete benefit reviewers care about.
- Use service provider precisely when describing where new functionality gets registered — it helps new contributors find the right place to add bindings.
- Warn new team members about convention over configuration early — code that “just works” until a naming convention is violated is a common source of confusing early bugs.
Practice Exercise
- Explain what a batteries-included framework is and why a team might choose it over assembling smaller libraries.
- Describe how the IoC container makes a dependency easier to mock in tests.
- Write a sentence explaining to a new hire why their controller wasn’t picked up automatically, in terms of convention over configuration.