Recently Released.
Newly Released in the last 30 days
![Video preview](https://videos.adocasts.com/68bde41a-ceb4-4bf5-987b-0d31aa76f817/preview.webp)
![Adocasts Plus Exclusive](/imgs/plus-badge-100.png)
![Organizing your AdonisJS Logic](/img/1/organizing-business-logic-operations_1721419785966.jpeg?w=650)
Three Approaches for Organizing your AdonisJS Business Logic Operations
In this lesson, we'll dive deep into three different ways we can organize our code; fat controllers, services, and actions. We'll also discuss circular dependencies, static and non-static service methods, and dependency injection.
![Video preview](https://videos.adocasts.com/5b82ed35-5526-4dba-b8bd-894fae08a21e/preview.webp)
![Thank You for Watching](/img/1/thank-you-for-watching_1719604958174.jpeg?w=650)
Thank You for Watching!
A quick thank you to all those who watched! If you have feedback, please let us know down in the comments.
![Video preview](https://videos.adocasts.com/cc0ff4b4-0df3-42e0-afa4-54b60700004f/preview.webp)
![Allowing Admins to Delete Movies](/img/1/allowing-admins-to-delete-movies-and-their-relationships_1719604792290.jpeg?w=650)
Allowing Admins to Delete Movies and their Relationships
In this lesson, we'll learn how we can safely delete movies and their relationships. We'll discuss how we need to consider foreign key constraints, and what to do when our deletes aren't set to cascade.
![Video preview](https://videos.adocasts.com/381d5a01-9b89-40ce-84fc-63ce516ce179/preview.webp)
![Managed Transactions and Syncing Movie Cast Members](/img/1/managed-transactions-and-syncing-cast-members_1719352476784.jpeg?w=650)
Managed Transactions and Syncing Movie Cast Members
In this lesson, we'll learn how we can use what we learned in the last lesson to also sync our cast members. We'll then extract this functionality into a service and wrap it within a managed database transactions.
![Video preview](https://videos.adocasts.com/4e59a1e8-3e50-43f8-bfee-ee50dfc1d930/preview.webp)
![Posting an Array of Objects with HTML Forms](/img/1/posting-an-array-of-objects-with-html-forms_1719352308432.jpeg?w=650)
Posting Objects, Arrays, and an Array of Objects in HTML Forms
In this lesson, we'll learn how we can use form field names to send an array of objects with our HTML form submission. We'll discuss pitfalls to watch out for and how we use AlpineJS to simplify index syncing within our field names.
Lessons.
![Video preview](https://videos.adocasts.com/7862dc23-bcde-4e60-9b99-20b8eeacf355/preview.webp)
![Singleton Services and the Idea of Caching](/img/1/singleton-services-and-the-idea-of-caching_1706651373039.jpeg?w=650)
Singleton Services and the Idea of Caching
In this lesson, we'll learn about singleton services and how to use them as a store to hold temporary information throughout our server's life by building a simple in-memory caching service.
![Video preview](https://videos.adocasts.com/3e075441-8c4a-40dd-a92f-eecddb03589d/preview.webp)
![Vite and Our Assets](/img/1/vite-and-our-assets_1705969160900.jpeg?w=650)
Vite and Our Assets
In this lesson, we'll learn how Vite is integrating into our EdgeJS views to serve our JavaScript and CSS files.
![Video preview](https://videos.adocasts.com/59e32fba-e2b6-4c49-af08-d93c7660e2d9/preview.webp)
![Adocasts Plus Exclusive](/imgs/plus-badge-100.png)
![Mixins and Compose](/img/1/mixins-and-compose_1702818550030.jpeg?w=650)
A Deep Dive Into Mixins & Compose
In this lesson, we'll walk through what mixins are and how they work by first inspecting them as plain objects then working our way into classes then finally TypeScript. We'll then implement mixins via AdonisJS' compose utility.
![Desktop app for NPM](/img/1/desktop-app-for-npm_1670451211614.jpeg?w=650)
Easily Manage & Update Your NPM Packages With This Desktop App!
In this video, we'll see how we can easily audit, manage, and update our NPM packages/dependencies and their versions using a graphical user interface (GUI) called the NPM Desktop Manager.
![Understanding Promises in Loops](/img/1/javascript-understanding-promises-and-loops_1669242678538.jpeg?w=650)
Understanding JavaScript Promises in ForEach, Map, and Reduce Loops
In this lesson, we'll take a look at how promises work when we try to await them inside newer callback-based loops, like forEach, map, and reduce.
![](/img/1/adonisjs-vue3-ts_1665252451798.jpeg?w=650)
How To Use Vue 3 with TypeScript in an AdonisJS Project
In this lesson, we’ll learn how to set up a Vue 3 TypeScript application within our AdonisJS project using Webpack Encore. We’ll start by getting Vue 3 working, then sprinkle in TypeScript support.
![](/img/1/rC1q8gFOINHzKdfgoaOZgZM1HxvJyjB6942pRyk4.png?w=650)
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.
![](/img/1/4JBh5sJbCInX6SPJTqnoqsSu32CRlsTK9RXwUf5k.png?w=650)
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).
![](/img/1/AZooNvuJj6gRSpz1q42n8nt9b6CvnSyPZthY3Fp4.png?w=650)
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.
![](/img/1/AJ9VcGdSbaLJP3M4y9J1DdwxnFlj5wZ9joMLhJ96.png?w=650)
All About JavaScript Arrow Functions
Arrow functions offer a concise alternative for standard functions. Though, there are important functionality differences regarding this binding, constructors, generators, and more.
![](/img/1/Ya9gLvhIs3FHlw7lWrSwl2YNVeSYNHQAgskIPZyU.png?w=650)
Introducing and Understanding JavaScript Promises
A promise allows us to delay the execution of code that's dependent upon information retrieved by an asynchronous operation. We'll expand on what this means, how to use promises, and how to go about creating one.