Adocasts's Avatar

Adocasts

@adocasts.com

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

104
Followers
18
Following
103
Posts
31.08.2024
Joined
Posts Following

Latest posts by Adocasts @adocasts.com

Preview
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...

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

02.03.2026 12:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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

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

25.02.2026 13:21 πŸ‘ 19 πŸ” 4 πŸ’¬ 1 πŸ“Œ 1
Preview
Let's Learn AdonisJS 7 | Adocasts Series In this series we'll learn AdonisJS, a NodeJS web framework for building type-safe full-stack, API, and even Inertia applications. It also provides almost everything you need to bu...

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

25.02.2026 17:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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

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

25.02.2026 17:37 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Preview
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...

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

20.01.2026 16:12 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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? πŸŽ“

15.01.2026 12:15 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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

13.01.2026 07:16 πŸ‘ 8 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Preview
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 ...

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? πŸŽ“

12.01.2026 12:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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? πŸŽ“

05.01.2026 12:15 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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

02.01.2026 15:55 πŸ‘ 3 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0

Hope everyone has a great new year!! May 2026 go slower than 2025 did πŸš‚

Happy new year!

31.12.2025 14:33 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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?

30.12.2025 13:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
AdonisJS documentation about routing with LLM only text

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 πŸ€–

23.12.2025 17:35 πŸ‘ 7 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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 πŸ‘‡

23.12.2025 14:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
OpenTelemetry for AdonisJS Introducing @adonisjs/otel, a package that brings OpenTelemetry to AdonisJS with zero-config setup and sensible defaults.

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

21.12.2025 09:50 πŸ‘ 13 πŸ” 7 πŸ’¬ 0 πŸ“Œ 0
// ❌ 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'

// ❌ 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 πŸ™Œ

20.12.2025 14:39 πŸ‘ 11 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

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

18.12.2025 13:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
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()
})

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

18.12.2025 07:43 πŸ‘ 8 πŸ” 2 πŸ’¬ 0 πŸ“Œ 1
Post image

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

17.12.2025 23:03 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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...

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? πŸ‘‡

11.12.2025 13:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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.

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? πŸ‘‡

05.12.2025 14:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Our next series on testing AdonisJS apps with Japa will be starting later this week with the first four lessons!

πŸ‘‡ full series outline

02.12.2025 23:34 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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.

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

28.11.2025 13:23 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
50% off Adocasts Plus Pricing

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

23.11.2025 23:05 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

18.11.2025 00:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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. πŸ˜„

18.11.2025 00:40 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

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

13.11.2025 14:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
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 ...

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 πŸ“Ί

31.10.2025 13:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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

24.10.2025 11:31 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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!

23.10.2025 20:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0