Series
AdonisJS Scenarios
In this ongoing series, we'll cover various scenarios you're likely to run into while developing or maintaining an AdonisJS application. Topics will range from authentication challenges to database management, testing, and more.
Building A Multi-Search with Meilisearch & AdonisJS
In this series, we'll build a server-rendered mutli-search utilizing Meilisearch, Unpoly, and a sprinkle of AlpineJS. We'll setup factories and seeders to make fake data to allow us to index and search against books, authors, and genres simultaneously!
AdonisJS Quick Tip
Quick tips, lessons, and screencasts covering specific topics on AdonisJS.
Adding an API to an AdonisJS Web App
In this series, we'll add a API, using Opaque Access Tokens for authentication, to a preexisting web application. We'll implement dual-guard authentication, add a token management panel, and authenticate our API directly with an organization model!
Building with AdonisJS & Inertia
We'll learn how to use InertiaJS with AdonisJS 6 to build a feature-complete application, called PlotMyCourse. Our application will use server-side rendering (SSR), Vue 3, and Shadcn-Vue. It'll feature organizations, drag-and-drop, and lots of forms.
AdonisJS In 30
In this series, we'll highlight various features and functionalities in AdonisJS you can complete in about 30 minutes or less.
Let's Learn AdonisJS 6
In this series, we'll learn AdonisJS 6 step-by-step in a beginner-friendly way. Covering topics like routing, controllers, services, EdgeJS, Lucid ORM, forms, filtering, authentication, etc.
Let's Learn AdonisJS 5
Learn AdonisJS 5 in-depth as we step through all the major functionalities of the framework in-depth. Learn about Routing, Controllers, Lucid, Auth, and much more.
HTMX & AdonisJS Filters
In this mini-series, we'll learn how to install HTMX within an AdonisJS project. Once installed, we'll implement a basic filtering system with AdonisJS and initiate form handlers with HTMX to update our DOM.
Lessons
Pagination
Learn pagination in AdonisJS. Split large datasets into pages to improve performance and user experience with Lucid paginate().
Working with Model Relationships
Learn the difference between eager and lazy loading relationships in AdonisJS. We'll also learn about querying nested relationships, filtering by relationships, and more.
Query Builder Basics
Learn how to build complex SQL queries with where clauses, selects, joins, and more using method chaining with Lucid's Model and Database Query Builder in AdonisJS.
Factories & Seeders
Learn database seeders and factories in AdonisJS. Populate databases with preliminary data using factories and seeders.
CRUD Basics
Learn CRUD operations in AdonisJS. Create, read, update, and delete records using AdonisJS models and Lucid ORM.
Models, Schema Classes, & Relationships
Learn AdonisJS models and generated schema classes. We'll discuss model hooks, getters, computed properties, relationships, and how models can use schema classes as a base to automatically keep model columns up-to-date with our database.
Database Migrations
Learn database migrations in AdonisJS and how they can be used to scaffold and build upon our application's database. Track, share, and rollback database changes with version control for your schema.
Piecing It All Together
In this lesson, we'll piece everything we've learned thus far together and create functional tests for a route allowing the authenticated user to change their email. This encompasses authentication, email sending, database records, and more
Testing Model Logic
In this lesson, we'll learn how to Unit Test AdonisJS Model logic using Japa. We'll test a password reset token's validity to show instance-level tests. Then, we'll test its generate and verify methods to show static methods.
Snippets
Accessing Lucid's Knex Connection Client
Ever need to directly access KnexJS, the query builder Lucid wraps around? Here's how you can do it!
Using Transaction Events To Defer Actions
We can bind handlers to transaction events to easily defer specific actions until after the transaction has been committed and our changes have persisted to the database.