
Easy Querying with Static Model Query Methods
In this lesson, we'll learn what static methods are available on our Lucid Models to help us easily query records from our database. These methods offer a convenient query option compared to the query builder.

Password Hashing & Model Hook Overview
In this lesson, we'll learn briefly about the model hooks available and how they work. Then, we'll walk through an example by hashing our password anytime it is changed.

Creating Records with Lucid ORM
In this lesson, we'll learn various ways we can create and bulk-create records using the AdonisJS Lucid ORM.

Defining Model Relationships
In this lesson, we'll learn how to define relationships on our Lucid Models. We'll cover one-to-one, many-to-one, one-to-many, and many-to-many relationship definitions.

Database Migrations To Lucid Models
In this lesson, we'll walk through examples of transferring our database migrations into our Lucid Models. This will pave the way for us to begin CRUD operations in later lessons.
All Series


Let's Build with AdonisJS
Livestreams where we build applications using AdonisJS 5. Starting out, we'll be rebuilding Adocasts, formerly called Jagr.Co.
Latest Lessons

Recreating YouTube's Chapters Functionality
In this stream, we'll be working to recreate YouTube's chapter functionality on Adocasts.

Altering Adocasts' Lesson 404 Page Behavior
In this stream, we'll alter our soon-to-be-published lessons to display a "Coming Soon" notice when visited instead of the current 404 page.

Working A Bit with AdonisJS Social Auth
In this stream, we worked on fixing an issue I have on the new, not yet released, Jagr site where I didn't account for changing emails within my social auth.


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.
Latest Lessons

Easy Querying with Static Model Query Methods
In this lesson, we'll learn what static methods are available on our Lucid Models to help us easily query records from our database. These methods offer a convenient query option compared to the query builder.

Password Hashing & Model Hook Overview
In this lesson, we'll learn briefly about the model hooks available and how they work. Then, we'll walk through an example by hashing our password anytime it is changed.

Creating Records with Lucid ORM
In this lesson, we'll learn various ways we can create and bulk-create records using the AdonisJS Lucid ORM.


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.
Latest Lessons

Updating Our URL & Populating Filter Field Values
In this lesson, we'll learn how we can use HTMX to easily update our URL via our AdonisJS response. Then, we'll use our URL's query string to pre-populate our filter form field values.

Posting & Swapping Filtered Content with HTMX
In this lesson, we'll utilize the filter form handler we defined in our last lesson by adding an HTMX post handler to our filter form that will retrieve the filtered results HTML and swap it with the pre-existing results.

Defining Our AdonisJS Filter Form Handler
In this lesson, we'll expand on the filter query we built in the last lesson by reusing the query within a service for our filter form handler.


AdonisJS Quick Tip
Quick tips, lessons, and screencasts covering specific topics on AdonisJS.
Latest Lessons

Exploring My Favorite AdonisJS Model Query Builder Macros: Tips and Examples
In this lesson, I'll highlight a few of my favorite Model Query Builder Macros that I carry with me from project to project. Have a favorite of your own? Let me know in the comments!

How To Seamlessly Share AdonisJS Sessions & Authentication Across Subdomains
In this lesson, we'll learn how one simple tweak to our AdonisJS project allows us to seamlessly share sessions and user authentication across multiple subdomains, as well as our application's primary domain.

Remember Me in AdonisJS Authentication
In this lesson, we'll take a look at how to remember the user's authentication session in AdonisJS Auth. We'll learn how to define the remember me checkbox within our form and more.


Let's Build A Changelog App
We'll be building a changelog application with AdonisJS through a series of livestreams.
Latest Lessons

Team / User Management
In this stream, we'll add the ability for admins to invite others to their team. They'll be able to either invite them as a member or another admin.

Creating Teams & Setting Default Team
In this stream, we'll be adding the ability to create new teams, set the default team for a user when they switch between teams, and auto-forward users to their default team after login.

Project CRUD
In this stream, we'll be defining our starting projects table schema, model, and setting up create, read, update, and delete (CRUD) operations for it.


AdonisJS User Roles
In this series, we'll walk through the process of creating your own user role management system. In this system we'll be able to manage users, their roles, permissions, access to our application and more.
Latest Lessons

Simple Steps To Require Email Verification In Your AdonisJS App
Learn how to require your users to verify their email address using a Token model with AdonisJS and Lucid ORM.

How To Create A Password Reset Flow in NodeJS with AdonisJS
In this lesson, we'll cover, from start to finish, how to create your own password reset (or forgot password) flow in your NodeJS application with AdonisJS.

AdonisJS User Role Management
In this lesson, we'll learn how to create a user management screen that'll allow administrators to change any of our registered user's roles


AdonisJS in 15
In this series, we'll highlight various features in AdonisJS you can complete in about 15 minutes or less.
Latest Lessons

AdonisJS User Role Authentication in 15 Minutes
In this lesson, we'll learn how we can specify user roles using a User and Role AdonisJS Model within our project.

How To Do Multi Model Authentication with AdonisJS and Lucid ORM
In this lesson, we'll learn how to set up multi-model authentication using a User and Admin model with AdonisJS and Lucid ORM.

AdonisJS Authentication in 15 Minutes
We'll be creating a new AdonisJS project and adding authentication to it within 15 minutes. You'll be able to logout, register, and login with either your username or email.


AdonisJS + InertiaJS
In this series, we'll learn how to integrate, configure and use InertiaJS within an AdonisJS project. In this series, we'll be using Vue 3 as our client-side framework. We'll look at things like authentication, form submissions, redirects, and more.
Latest Lessons

Form Validation Error Handling
In this lesson, we'll see just how nice InertiaJS is when it comes to form validation error handling. As you'll see, little work needs to be done on our part.

Introducing InertiaJS Forms & The InertiaJS Form Helper
In this lesson, we'll learn about InertiaJS and how it differs when it comes to forms. We'll see how it helps simplify response handling and treats forms as a hybrid between APIs and a Monolith. We'll also learn about Inertia's form helper.

Simplifying Imports with Path Aliases & Global Components
In this lesson, we'll learn how to add a path alias with Webpack Encore to eliminate relative paths from our client-side imports. We'll also learn how to register global Vue 3 components.


AdonisJS Bouncer
In this series, we'll be introducing and covering AdonisJS Bouncer, AdonisJS' first-party authorization package.
Latest Lessons

Creating & Using Bouncer Policies
We'll learn about policies and how we can use them to group resource-based actions. We'll also learn how to create and share hooks with policies.

Implementing Authorization Actions
We'll take what we learned about AdonisJS Bouncer actions in the last lesson to finalize the needed authorization checks for our blog application.

Bouncer Actions & Authorizations
We'll learn about AdonisJS Bouncer actions and how we can use these actions to check if a user is authorized to perform a specific task. Plus, conditional check authorizations.
AdonisJS 5 Infinite Load
In this two-part mini-series, we'll be creating an infinite load functionality within our AdonisJS 5 application. We'll make use of a Model Factory & Seeder to make dummy data. We'll then use our Model's paginate method to easily track our progress
Latest Lessons

How To Create An Infinite Loader
In this lesson, we'll be going over how to add an infinite loader to our app. We'll specifically be utilizing an Edge component and our Model's paginate method to make this happen.

Project Setup & Creating Dummy Data
In this lesson, we'll be setting up our project with fake data using a Model Factory and a Seeder. We'll also set up our initial list of posts so that we're all set and squared away to cover
Let's Learn AdonisJS 5 Preview
In this series, we'll be doing a deep-dive into AdonisJS 5's Preview version. We'll learn about routing, controllers, the Lucid ORM, migrations, it's CLI, handling file uploads, transactional email, and much more.
Latest Lessons

Let's Learn Adonis 5: Introducing The Edge Template Engine
In this lesson, we learn the basics of the Edge Templating Engine, which allows us to dynamically inject our server-side data into our HTML views.

Let's Learn Adonis 5: Validating Requests
In this lesson, we focus on Adonis' built-in Validator. We'll learn how to define a validation schema, custom messages, custom rules, and more

Let's Learn Adonis 5: Writing Reusable Queries with Query Scopes
In this lesson, we'll learn how we can extract repetitive query builder statements into reusable query scopes as a way to keep our codebase easy to maintain.
Cross-Tab Communication
In this series, we'll be covering three different ways to perform cross-tab communication using JavaScript's LocalStorage, SharedWorker API, and the BroadcastChannel API
Latest Lessons

Cross-Tab Communication in JavaScript using a BroadcastChannel
We discuss how to do cross-tab communication with a BroadcastChannel, the browser's native API to communicate across browser instances. It's rather similar to using a SharedWorker, just without the worker.

Cross-Tab Communication in JavaScript using a SharedWorker
In this lesson we'll be going over how to do cross-tab communication using a SharedWorker. SharedWorkers are Web Workers that are sharable across browser-instances (tabs, windows, etc).

How To Do Cross-Tab Communication In JavaScript With LocalStorage
In this lesson, we'll be going over how to do cross-tab communication using LocalStorage. Of the three methods we'll be discussing, this one is the most browser compatible method; despite it being a workaround.
Amplify + Nuxt
Video series covering how to set up AWS Amplify in a new Nuxt Application. How to add authentication using Cognito and Amplify's Auth class methods. How to add a secure and public GraphQL API. Then, how to deploy our application via the Amplify CLI on S3
Latest Lessons

How To Deploy a Nuxt SPA to AWS Amplify for Production
We'll learn how to create and deploy an Amplify production environment so that our development data and production data are separate from one another.

How To Deploy A Nuxt SPA To AWS Amplify
In this lesson we cover how to deploy our Nuxt application as an SPA to AWS Amplify.

Implementing Our Private & Public Amplify GraphQL API In Our Nuxt App
In this lesson we'll be implementing the publicly and privately accessible GraphQL API that we created in the last lesson within our Nuxt project.