Sign in

Adocasts

@adocasts.com
107 followers 18 following 113 posts

Learn and build with AdonisJS by following in-depth education screencast lessons. Content by @tomgobich.com Find us at: adocasts.com

PostsRepliesMedia
Adocasts @adocasts.com · 19/06/2026
Bittersweet news to share today. I've decided to sunset Adocasts Plus. The upside, the entire Adocasts library is now free, no more paywalls & nothing is locked. Our current members have a prorated refund headed their way as well. You can read more here: adocasts.com/news/saying-...
adocasts.com
Saying Goodbye to Adocasts Plus | Adocasts Blog
Adocasts Plus is being sunset, effective immediately. Here's what that means, why I'm making the call, and how prorated refunds will work.
000
Adocasts @adocasts.com · 05/06/2026
Our Let's Learn AdonisJS 7 module on authentication is out now! In this module, we'll tear back the starter kit's auth so we can re-implement it, learning each step as we go. Ready to get started?
buff.ly
Let's Learn AdonisJS 7: Understanding by Doing, Clean Slate | Coming Soon | Adocasts Lesson
Learn authentication from scratch in AdonisJS. Remove starter kit auth and rebuild authentication features manually.
000
Adocasts @adocasts.com · 22/05/2026
3 new AdonisJS 7 lessons are out now! In these we'll cover: - Query builder basics - Model relationships - Pagination basics Kick things off 👇 buff.ly/fKLYyTa #adonisjs #webdev
buff.ly
Let's Learn AdonisJS 7: Query Builder Basics | Coming Soon | Adocasts Lesson
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.
010
Adocasts @adocasts.com · 08/05/2026
2 new AdonisJS 7 lessons are out now! In these we'll introduce CRUD operations. Then, how we can automate data create for development or testing using factories and seeders Ready to learn?
buff.ly
Let's Learn AdonisJS 7: CRUD Basics | Coming Soon | Adocasts Lesson
Learn CRUD operations in AdonisJS. Create, read, update, and delete records using AdonisJS models and Lucid ORM.
010
Adocasts @adocasts.com · 24/04/2026
Two new AdonisJS 7 lessons are available! We’ll learn about migrations, schema classes, models, and relationships. We’ll also discuss how schema classes are used to automatically update column representations in models! Ready?
buff.ly
Let's Learn AdonisJS 7: Database Migrations | Coming Soon | Adocasts Lesson
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 contr...
000
Adocasts @adocasts.com · 10/04/2026
Today in AdonisJS 7, we'll learn all about middleware and sessions! We'll discuss: → the 3 different types of middleware → the role of the 'next' function in middleware → how to work with session state → the perks of using flash messaging Ready to dive in?
buff.ly
Let's Learn AdonisJS 7: Middleware & Grouping Routes | Coming Soon | Adocasts Lesson
Learn AdonisJS middleware for intercepting HTTP requests. Control request flow, implement logging, and secure your applications.
010
Adocasts @adocasts.com · 26/03/2026
4 new Let's Learn AdonisJS 7 lessons are out now! In these, we'll learn about: → EdgeJS components & partials → Form basics, method spoofing, & CSRF → Validation & Flash Storage → Route names & the URL Builder Ready to learn?
buff.ly
Let's Learn AdonisJS 7: Components, Layouts, & Partials | Coming Soon | Adocasts Lesson
Learn all about EdgeJS components, layouts, and partials for reusable view markup. We'll discuss the differences between the three and dig into specifics on how to use components a...
000
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 19/03/2026
AdonisJS comes with opinions, but your stack is still your choice. Want to use MikroORM instead of Lucid? Thanks to MikroORM, there's now an official guide on how to integrate it with AdonisJS 👇 mikro-orm.io/docs/usage-w...
mikro-orm.io
Using MikroORM with AdonisJS | MikroORM
This guide covers integrating MikroORM with AdonisJS, replacing the default Lucid ORM with MikroORM's Unit of Work and Identity Map patterns. For a complete working example, see the adonis-example-app...
083
Adocasts @adocasts.com · 16/03/2026
2 new Let's Learn AdonisJS 7 lessons are out now! In these, we'll learn: → How to use route params & param validation → About controllers & subpath imports → About the new barrel file import option in v7 Ready to go?
buff.ly
Let's Learn AdonisJS 7: Route Parameters & Matchers | Coming Soon | Adocasts Lesson
Learn AdonisJS route parameters and matchers. Capture dynamic segments in URLs and validate and cast with route matchers.
010
Adocasts @adocasts.com · 14/03/2026
Upon the completion of my Let's Learn AdonisJS 7 series, I'll be taking a roughly 90 day seasonal break to reset myself, rethink Adocasts in the era of AI, and to try and find joy in coding again. Read more: adocasts.com/blog/the-roa...
adocasts.com
The Road Ahead & A Brief Break | Adocasts Blog
I'm planning a little break, we'll talk about why, how long, and what that means for Adocasts going forward.
020
Adocasts @adocasts.com · 13/03/2026
3 new Let's Learn AdonisJS 7 lessons are out now! In these, we'll learn: → How to define routes & render pages → About the 3 types of EdgeJS state → EdgeJS view and tag syntax Ready to go?
buff.ly
Let's Learn AdonisJS 7: Defining Routes & Rendering Views | Coming Soon | Adocasts Lesson
Learn how to define routes and render views in AdonisJS. Understand route definitions, rendering views, and the router service.
000
Adocasts @adocasts.com · 02/03/2026
The first 6 lessons of our Let's Learn AdonisJS 7 series are out now and available to all! We'll get our environment set up, create a new project, and get cozy with our project's lifecycle and structure! Ready to start? buff.ly/V5R3KuW #adonisjs #nodejs
buff.ly
Let's Learn AdonisJS 7: Introducing AdonisJS | Coming Soon | Adocasts Lesson
Introduction to AdonisJS, a full-featured Node.js web framework designed to reduce choice fatigue with opinionated conventions, built-in batteries, and first-class TypeScript suppo...
010
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 25/02/2026
AdonisJS v7 is officially out today! A major milestone after a long development cycle, and we couldn't be more excited about how it turned out. What's new → adonisjs.com/blog/v7 Upgrade guide → docs.adonisjs.com/v6-to-v7
adonisjs.com
AdonisJS v7 is here
AdonisJS v7 introduces end-to-end type safety, new starter kits with authentication, zero-config OpenTelemetry, and a rewritten developer experience. Available now
1226
Adocasts @adocasts.com · 25/02/2026
Huge congrats to the @adonisjs.com team on the release of AdonisJS 7!! There're so many fantastic changes with release! Check out their blog post to get a break down of what’s new, changed, and coming next: adonisjs.com/blog/v7
adonisjs.com
AdonisJS v7 is here
AdonisJS v7 introduces end-to-end type safety, new starter kits with authentication, zero-config OpenTelemetry, and a rewritten developer experience. Available now
141
Adocasts @adocasts.com · 20/01/2026
The final 3 lessons in our series on Japa testing are out now! In these, we'll get Japa's Browser Client set up and briefly cover the basics of performing browser tests with it and Playwright! Read to learn? buff.ly/I44azkH
adocasts.com
Pragmatic Testing in AdonisJS with Japa: The Browser Client | Coming Soon | Adocasts Lesson
In this lesson, we'll softly introduce Browser Testing, which allows powerful DOM assertions, in AdonisJS using Japa's Browser Client and Playwright. We'll get everything installed...
010
Adocasts @adocasts.com · 15/01/2026
4 more lessons are out now! In these, we'll learn how to use and test authentication and authorization with Japa. Then, we'll piece everything we've learned thus far together by testing an email change endpoint to completion. Ready to learn? 🎓
buff.ly
Pragmatic Testing in AdonisJS with Japa: The Auth Plugin | Coming Soon | Adocasts Lesson
In this lesson, we'll learn how to test authenticated routes in AdonisJS/Japa. First, we'll install and register the Auth API Client plugin. Then, we'll learn how to use our User F...
020
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 13/01/2026
We've published a security fix for a Mass Assignment vulnerability affecting Lucid in AdonisJS (CVE-2026-22814). Update now: - v6 users → adonisjs/lucid 21.8.2 - v7 users → adonisjs/lucid 22.0.0-next.6 github.com/adonisjs/luc...
github.com
Mass Assignment in AdonisJS Lucid Allows Overwriting Internal ORM State
### Summary **Description** A Mass Assignment (CWE-915) vulnerability in AdonisJS Lucid may allow a remote attacker who can influence data that is passed into Lucid model assignments to overwrite...
182
Adocasts @adocasts.com · 12/01/2026
Four more lessons on testing with Japa are out now! In these, we'll learn about: → Database hooks → Testing db-driven endpoints → Using model factories to simplify setup → Testing model logic Ready to learn? 🎓
buff.ly
Pragmatic Testing in AdonisJS with Japa: Database Test Runner Hooks | Coming Soon | Adocasts Lesson
In this lesson, we'll learn how to set up a dedicated test database to ensure clean, isolated testing. We'll configure a separate SQLite database using a test environment variable ...
000
Adocasts @adocasts.com · 05/01/2026
Our first 4 lessons of 2026 are out now! In these, we'll learn about testing: → Client validations & CSRF protection → JSON structures → OpenAPI specifications → File uploads Ready to learn? 🎓
buff.ly
Pragmatic Testing in AdonisJS with Japa: testing VineJS Validations & Working with CSRF | Coming Soon | Adocasts Lesson
In this lesson, learn Functional Testing for POST requests. We'll cover sending JSON and form payloads and how to assert validation errors. We'll also discuss how to set up and use...
011
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 02/01/2026
We've published a security fix for a Path Traversal vulnerability affecting multipart file uploads in AdonisJS (CVE-2026-21440). Update now: - v6 users → adonisjs/core 6.19.2 - v7 users → adonisjs/core 7.0.0-next.18 github.com/adonisjs/cor...
github.com
AdonisJS Path Traversal in Multipart File Handling
### Summary **Description** A Path Traversal (CWE-22) vulnerability in AdonisJS multipart file handling may allow a remote attacker to write arbitrary files to arbitrary locations on the server...
132
Adocasts @adocasts.com · 31/12/2025
Hope everyone has a great new year!! May 2026 go slower than 2025 did 🚂 Happy new year!
010
Adocasts @adocasts.com · 30/12/2025
Our last batch of new lessons for 2025 are out now! In these, we'll learn about: - Testing Ace commands - Functional vs Unit tests - Japa's API Client Ready to watch?
buff.ly
Pragmatic Testing in AdonisJS with Japa: Testing Ace Console Commands | Coming Soon | Adocasts Lesson
In this lesson, we'll learn how to test AdonisJS Ace Commands with Japa. We'll cover how to instantiate and execute the command, while passing arguments and capturing prompts. We'l...
000
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 23/12/2025
The next AdonisJS docs will ship with dedicated LLM endpoints. Not just an llms.txt listing pages. Actual cheat sheets crafted for AI assistants. Minimal context, maximum accuracy. Your AI pair programmer is about to get much better at AdonisJS 🤖
AdonisJS documentation about routing with LLM only text
063
Adocasts @adocasts.com · 23/12/2025
4 new Testing with Japa lessons just landed! In these, we'll learn: - About IoC Container Bindings - How to swap Container Bindings with Mocks - How to use AdonisJS's Fakes - Plus more Ready to learn? 🎓 adocasts.com/lessons/test... Preview 👇
010
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 21/12/2025
Your app is slow. But where exactly? Introducing OpenTelemetry for AdonisJS with zero-config setup. One command. Full observability. - Auto-instrumented HTTP, DB queries, Redis - Traces, metrics, and logs correlated out of the box - Works with v6 and upcoming v7 adonisjs.com/blog/introdu...
adonisjs.com
OpenTelemetry for AdonisJS
Introducing @adonisjs/otel, a package that brings OpenTelemetry to AdonisJS with zero-config setup and sensible defaults.
0148
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 20/12/2025
Shipping a new ESLint rule: no-backend-import-in-frontend Catches accidental backend imports in your Inertia frontend files at lint time. Type imports still allowed, and you can whitelist shared paths. One less runtime surprise 🙌
// ❌ Error: Importing backend code in frontend files is not allowed
import User from '#models/user'
import { UserService } from '../../app/services/user_service'


// ✅ Correct - type-only imports are allowed
import type { User } from '#models/user'
import type { UserService } from '../../app/services/user_service'

// ✅ Correct - imports pointing to inertia/ are allowed
import { Button } from '#components/button' // if #components/* -> ./inertia/components/*
import { utils } from '../utils'
1122
Adocasts @adocasts.com · 18/12/2025
In our latest batch of Testing with Japa lessons, you'll learn how to: → Prevent false positives with async tests → Use datasets to optimize your test data → Focus test runs with skipped, pinned, and tagged tests Test smarter, not harder ⤵︎ buff.ly/AFOOHmR
010
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 18/12/2025
We updated our session package so you can now store sessions in your database! 🔥 On top of that, we added session tagging across drivers (redis, database) with a new SessionCollection API to easily manage all sessions for a user. docs.adonisjs.com/guides/basic...
import app from '@adonisjs/core/services/app'
import router from '@adonisjs/core/services/router'
import { SessionCollection } from '@adonisjs/session'

router.post('/logout-other-devices', async ({ auth, session, response }) => {
  const user = auth.user!
  const sessionCollection = await app.container.make(SessionCollection)

  const sessions = await sessionCollection.tagged(String(user.id))

  for (const s of sessions) {
    if (s.id !== session.sessionId) {
      await sessionCollection.destroy(s.id)
    }
  }

  return response.redirect().back()
})
import app from '@adonisjs/core/services/app'
import router from '@adonisjs/core/services/router'
import { SessionCollection } from '@adonisjs/session'

router.post('/logout-other-devices', async ({ auth, session, response }) => {
  const user = auth.user!
  const sessionCollection = await app.container.make(SessionCollection)

  const sessions = await sessionCollection.tagged(String(user.id))

  for (const s of sessions) {
    if (s.id !== session.sessionId) {
      await sessionCollection.destroy(s.id)
    }
  }

  return response.redirect().back()
})
092
Adocasts @adocasts.com · 17/12/2025
You can now find the full lesson plan for our Japa series directly on the Adocasts site! This is part of a small QOL update to make planned content more transparent and clear! adocasts.com/series/pragm...
010
Adocasts @adocasts.com · 11/12/2025
3 new Testing in AdonisJS with Japa lessons are out now! In these, we'll: » Cover common assertions » Discuss easy test naming » Walk through group & test hooks Ready? 👇
buff.ly
Pragmatic Testing in AdonisJS with Japa: Making Assertions | Coming Soon | Adocasts Lesson
In this lesson, we'll get comfy with making assertions against actual and expected values. We'll step through and demo several highly used assertion methods to see exactly how they...
000
Adocasts @adocasts.com · 05/12/2025
The first 4 lessons of our new series, Pragmatic Testing in AdonisJS with Japa, are out now and available to all! Ready to get started with the foundations? 👇
buff.ly
Pragmatic Testing in AdonisJS with Japa: Why Bother Testing? | Coming Soon | Adocasts Lesson
In this lesson, we'll discuss what the benefits of testing are, what we should focus on when testing, and give a brief introduction to this series.
010
Adocasts @adocasts.com · 02/12/2025
Our next series on testing AdonisJS apps with Japa will be starting later this week with the first four lessons! 👇 full series outline
020
Adocasts @adocasts.com · 28/11/2025
Happy Black Friday! Quick reminder that you can get 50% off any Adocasts Plus plan, now through Dec 7th. The best part? This isn't 50% off your first month, like most other sales. This one lasts the entire duration of your subscription! Use code "FRIDAY2025" at checkout! buff.ly/jufRl5C
adocasts.com
Unlimited AdonisJS & NodeJS Access | Adocasts Pricing
Discover Adocasts Plus pricing plans for unlimited access to all AdonisJS and NodeJS video lessons and series. Accelerate your learning journey today.
000
Adocasts @adocasts.com · 23/11/2025
Level up your skills this Black Friday! Get your Adocasts Plus subscription for 50% off all plans! Unlock exclusive series, private repositories, and the new in-lesson notes feature. Don't miss out, this deal is only good until December 7th! adocasts.com/pricing #webdev #blackfriday
50% off Adocasts Plus Pricing
000
Adocasts @adocasts.com · 18/11/2025
Planning for our next series is coming along nicely (little over half way done)! Normally I prepare a per-lesson outline and a supplemental code base, but this time I have the supplemental code base and am doing step-by-step planning per lesson. 😄
100
Adocasts @adocasts.com · 13/11/2025
New lesson out now! ⤵︎ We'll learn how to generate dynamic Open Graph (OG) images using AdonisJS & Puppeteer. We'll also add rate limiting to limit the number of OG images being generated at once and discuss some things to watch out for. Ready to watch? buff.ly/GYTD1Fk
000
Adocasts @adocasts.com · 31/10/2025
The last 2 lessons in our Multi-Search series are out now! In these, we'll learn how to dynamically add and remove documents from our Meilisearch indexes as data is created or deleted within our application. Ready to watch 📺
buff.ly
Building A Multi-Search with Meilisearch & AdonisJS: Indexing Data as its Created | Coming Soon | Adocasts Lesson
In this lesson, we'll learn how we can dynamically index documents in Meilisearch as records are created within our application. For this, we'll index a new author document when a ...
000
Adocasts @adocasts.com · 24/10/2025
In today's lesson, we'll piece everything together into our final multi-search by searching across our book, genre, and author indexes within Meilisearch with a single call. We'll also discuss how we can get a single federated result array back if desired. Ready to watch? buff.ly/8Rhu9fw Preview
000
Adocasts @adocasts.com · 23/10/2025
Well rats, thought we had 3 lessons prepped for tomorrow, but instead only have one... was looking at the wrong thing. Will go ahead and release the one tomorrow and the remaining two next week! Those remaining 2 will end our multi-search series!
010
Adocasts @adocasts.com · 21/10/2025
2 new multi-search lessons are out now! In these, things begin to fall in place as we implement our first full-text search using Meilisearch. Then, we'll enhance our results by handling the form with Unpoly. Ready to go? buff.ly/IS0vNnQ Preview:
000
Adocasts @adocasts.com · 15/10/2025
2 more Multi-Search lessons are out now! In these, we'll work on getting our seeded data indexed as documents within Meilisearch using a service and Ace CLI command! Ready to go? buff.ly/yby7VtQ Preview 👇
000
Adocasts @adocasts.com · 10/10/2025
2 new Multi-Search lessons are out now! In these, we work on setting up our database so we have some stuff to search against by creating our models, migrations, factories, and a seeder to stub some fake data! Ready to go? buff.ly/Bf97wdb Preview 👇
000
Adocasts @adocasts.com · 08/10/2025
The first 3 lessons in our Multi-Search series are out now! In these, we: - Introduce our goal in this series - Get Meilisearch set up locally - Set up our AdonisJS project Ready to get started? buff.ly/FQurqDV Preview 👇
000
Adocasts @adocasts.com · 05/10/2025
Our next series starts up this week! In it, we'll implement a fully server-rendered multi-search utilizing: - Meilisearch - Unpoly - AlpineJS
000
Reposted by Adocasts
Romain Lanz @romainlanz.com · 29/09/2025
10 fucking years and more to come! 🚀 If you're looking for stability and consistency in the Node.js ecosystem, this is the choice to make. Be honest, how many times have you switched framework or ORM in the past decade?
191
Reposted by Adocasts
AdonisJS Framework @adonisjs.com · 29/09/2025
AdonisJS has been around for a decade now 🎉 From a humble idea to a modern, debt‑free framework, thanks to a passionate community pushing it forward. Read more about the journey & what comes next 👇 adonisjs.com/blog/a-decad...
adonisjs.com
10 Years of AdonisJS — A Personal Reflection and What’s Next
AdonisJS just turned 10 years old. A decade of building, learning, and growing with a community that truly loves the framework
0117
Adocasts @adocasts.com · 26/09/2025
Happy 10th birthday to @adonisjs.com!! 🥳 So thankful for all the time, dedication, and love that has been put into making this an amazing NodeJS framework to build with! And, a fantastic community to boot! Here's to the next decade! 🥂
buttondown.com
A decade of AdonisJS — and what’s next
This month marks a significant milestone — AdonisJS has been around for a full decade. That’s ten years of building, maintaining, and steadily growing an...
130
Adocasts @adocasts.com · 26/09/2025
A new quick tip is out now! In this one, we'll discuss how to globally alter Lucid's BaseModel to make global changes across all your application's models. We'll use the naming strategy & serialize extras as examples. Ready to go? ↓
buff.ly
AdonisJS Quick Tip: How To Globally Alter Lucid's BaseModel | Coming Soon | Adocasts Lesson
In this lesson, we'll discuss how we can globally alter Lucid's BaseModel to make global changes across all our application's models. We'll walk through globally changing the namin...
020
Adocasts @adocasts.com · 19/09/2025
Some apps require multiple modes of authentication. In today's lesson, we'll step through the process of configuring both session and opaque access token auth guards within a new AdonisJS 6 project! Ready to start? ↓ buff.ly/1UVvwNH
000
Adocasts @adocasts.com · 18/09/2025
Slow queries happen. In today's lesson, we'll learn how to: → Log the SQL generated by Lucid (globally or for specific queries) → Analyze the query's execution plan → Create indexes via migrations Ready to learn? ↓ buff.ly/ZCarv0K
000