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...
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...
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?
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
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
I've also been planning a free and updated Let's Learn AdonisJS 7 series. This series will be starting soon, you can add it to your watchlist now to get notified as lessons are released!
adocasts.com/series/lets-...
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
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
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? π
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...
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? π
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? π
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...
Hope everyone has a great new year!! May 2026 go slower than 2025 did π
Happy new year!
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?
AdonisJS documentation about routing with LLM only text
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 π€
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 π
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...
// β 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'
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 π
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
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() })
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...
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...
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? π
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? π
Our next series on testing AdonisJS apps with Japa will be starting later this week with the first four lessons!
π full series outline
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
50% off Adocasts Plus Pricing
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
Kind of thinking I may as well drop the step-by-step plans in the body of each lesson to serve as a sort of light written version.
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. π
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