Vlad
@vladimir-laskin
Technical Director of V and Bruno, a creative software agency in Sharjah. Working with Dubai and AUH firms to develop creative software solutions addressing critical business problems, that can be solved with technology. Opening up different faucets of revenue using technology: web development, web design (with the help of my partner, an in-house designer), marketing, and funnel making. Currently learning Adonis as it is a framework, and an experience I slowly fell in love with thanks to Tom. I am the sole developer in my company, and aim to slowly roll out Adonis projects in production >> and inspire others to do the same. Short term goals: Migrate our Express scaffolded backend into Adonis, Publish our full-stack app/website Long term goals: Adonis Community / Job board >> it will also help us scale 1 Adonis related blog / LinkedIn post per month 1 Adonis related video per month (on top of our internal KPIs) I wish to support, and contribute to the growth of this awesome, yet relatively tiny, framework used by Adonists
V and Bruno
Sharjah, United Arab Emirates
- Member Since
- Apr 4, 2025
- Lessons Completed
- 104
- Comments Contributed
- 7
- Hours Watched
- 14.88
Recent Activity
Here's what @vladimir-laskin has been up to this past year
-
Completed lesson Understanding Our Database Schema
-
Completed lesson What Are Some of Inertia's Limitations
-
Completed lesson Cross-Site Request Forgery (CSRF) Protection in InertiaJS
-
Completed lesson Creating A FormInput Vue Component
-
Upvoted comment Thanks so much for sharing, Vladimir!!
-
Completed lesson Common useForm Methods & Options
-
Completed lesson The useForm Helper
-
Upvoted comment Hey, my app doesn't provide validation errors right away. On...
-
Completed lesson Form Validation & Displaying Errors
-
Completed lesson Inertia Form Basics
-
Completed lesson What Code Can & Can't Be Shared Between AdonisJS & Inertia
-
Upvoted discussion about websockets
-
Completed lesson Specifying Page Titles & Meta Tags
-
Replied to (PART 2)In your SSR/APP config, you would need to do something...
(PART 3)
What the code above basically tells Inertia is this:
1 - Get the whole page itself
2 - Check if it is missing a layout.
3 - If it's missing a layout, wrap it around <AppLayout>, and go to step 4. (Skip if it's not missing a layout)
4 - Return the page for rendering
It keeps all the benefits of not GETing the resources all over again, and is very intuitive since you could add nest your layouts further like so:
https://inertiajs.com/pages#persistent-layouts (2nd example) -
Replied to Hey Tom, I was following along and got really stuck on this specific...
(PART 2)
In your SSR/APP config, you would need to do something along the following:
  resolve: (name) => {   const pages = import.meta.glob('../pages/**/*.tsx', { eager: true })
   const resolvedPage = pages[`../pages/${name}.tsx`] as {
    default: ComponentType & { layout?: (page: ReactElement) => ReactElement }
   }
   if (!resolvedPage.default.layout) {
    resolvedPage.default.layout = (page) => <AppLayout>{page}</AppLayout>
   }
   return resolvedPage
  },
-
Commented on post Default Layouts & Overwriting the Default Layout
Hey Tom,
I was following along and got really stuck on this specific section, due to it being in React vs Vue:
For anyone who gets stuck adding different layouts from the default, you won't be able to follow it step by step using React. Instead, do this:
(PART 1)
export default function Login() { /* The Login page*/}
Login.layout = (page: ReactElement) => <AuthLayout children={page} />
Source: https://inertiajs.com/pages -
Completed lesson Default Layouts & Overwriting the Default Layout
-
Completed lesson Creating A Layout
-
Completed lesson Partial and Lazy Data Loading and Evaluation
-
Completed lesson Global Components and Hydration Mismatch in Action
-
Completed lesson The Link Component and Programmatic Linking
-
Completed lesson Linking Between Pages & Page State Flow
-
Upvoted comment Thanks for the response! the differentiation you pointed out...
-
Completed lesson Sharing Data from AdonisJS to Vue via Inertia
-
Completed lesson The Flow of Pages and Page Props
-
Completed lesson Setting Up TailwindCSS, Shadcn-Vue, and Automatic Component Imports
-
Completed lesson What We'll Be Building
-
Completed lesson What Is InertiaJS?
-
Completed lesson Goal of this Series
-
Completed lesson Protecting Routes with Auth, Guest, and Admin Middleware
-
Commented on post Remembering A User's Authenticated Session
This episode is such a mind blow.
I have rolled out custom JWT with refresh and access tokens for an Express backend, and it took me 2 weeks (+ so many corrections through its lifetime) to do something that you have done in Adonis in less than 7 minutes.
Absolutely insane -
Completed lesson Remembering A User's Authenticated Session
-
Completed lesson Logging In An Existing User
-
Completed lesson Logging Out An Authenticated User
-
Completed lesson Checking For and Populating an Authenticated User
-
Completed lesson The Flow of Middleware
-
Completed lesson How To Create A Custom VineJS Validation Rule
-
Completed lesson Creating A Login Form and Validator
-
Completed lesson Creating An EdgeJS Form Input Component
-
Completed lesson Reusing Old Form Values After A Validation Error
-
Completed lesson Displaying Validation Errors and Validating from our Request
-
Upvoted comment Thanks Tom! In my case, just if someone has the same problem...
-
Completed lesson Validating Form Data with VineJS
-
Commented on post Accepting Form Data
Hey Tom,
Thank you for the video » Just wanted to ask a quick one regarding working with edge
Emmet does not seem to be working with edge files (unlike with ejs). I.e: typing out 'div' and having '<div></div>' popup, or .flex having '<div class="flex"></div>', or even nested emmet calls
So far, I have ignored it, but as we are adding more and more components, it kind of becomes cumbersome. Was wondering if there is a solution, or perhaps it's a specific setting, that must be enabled somewhere -
Completed lesson Accepting Form Data
-
Completed lesson How To Query, Sort, and Filter by Pivot Table Data
-
Completed lesson How To Create Factory Relationships from a Pool of Data
-
Completed lesson A Deep Dive Into Relationship CRUD with Models
-
Completed lesson Many-To-Many Model Factory Relationships
-
Replied to discussion I made a WhatsApp group of businesses/freelancers using Adonis
It's mostly to share content / blogs / videos that they have made on Adonis, and support each other to grow the framework, through likes, feedbacks, and advice.
-
Started discussion I made a WhatsApp group of businesses/freelancers using Adonis
-
Upvoted discussion Will deployment be covered?
-
Completed lesson Defining Many-To-Many Relationships and Pivot Columns
-
Completed lesson Using Eager and Lazy Loading to Load A Movie's Writer and Director
-
Completed lesson Listing and Counting a Writer's Movies
-
Upvoted comment You're welcome, Nico! Happy to hear all is working now!Hope ...
-
Completed lesson Listing A Director's Movies with Relationship Existence Queries
-
Completed lesson Seeding Movies with One to Many Model Factory Relationships
-
Completed lesson Defining One to Many Relationships with Lucid Models
-
Completed lesson Cascading and Deleting Model Relationships
-
Completed lesson Querying Relationships and Eager Vs Lazy Loading
-
Completed lesson Model Factory Relationships
-
Upvoted comment Awesome & anytime! I'm happy to hear things are clicking for...
-
Upvoted comment Hi noctisy!With Lucid, relationships work with and directly ...
-
Completed lesson Defining One to One Relationships Within Lucid Models
-
Completed lesson Generating A Unique Movie Slug With Model Hooks
-
Completed lesson Querying Recently Released and Coming Soon Movies
-
Completed lesson Tapping into Model Factory States
-
Completed lesson Reusable Query Statements with Model Query Scopes
-
Completed lesson SQL Parameters and Injection Protection
-
Completed lesson Adding A Profile Model, Migration, Factory, and Controller
-
Completed lesson Altering Tables with Migrations
-
Completed lesson Unmapped and Computed Model Properties
-
Completed lesson Querying Our Movies with the Query Builder
-
Completed lesson Stubbing Fake Data with Model Factories
-
Completed lesson Defining Required Data with Seeders
-
Completed lesson The Basics of CRUD
-
Completed lesson Defining Our Models
-
Completed lesson Introducing Lucid Models
-
Completed lesson The Flow of Migrations
-
Completed lesson Introducing and Defining Database Migrations
-
Upvoted discussion Welcome To The Feed!
-
Completed lesson Understanding our Database Schema
-
Completed lesson Configuring Lucid and our Database Connection
-
Completed lesson Easy SVG Icons with Edge Iconify
-
Completed lesson HTTP Method Spoofing HTML Forms
-
Completed lesson Form Basics and CSRF Protection
-
Completed lesson Share vs Global Data Flow
-
Completed lesson State vs Share Data Flow
-
Completed lesson Extracting A Layout Component
-
Completed lesson Use Slots To Make A Button Component
-
Completed lesson Component Tags, State, and Props
-
Completed lesson Making A Reusable Movie Card Component
-
Completed lesson HTML Attribute and Class Utilities
-
Commented on post EdgeJS Templating Basics
Having worked exclusively with Express and EJS on the backend - Edge somehow feels more natural and nice on the eyes, just having that if else loop would be a visual eye-sore in EJS.
Tom, thank you for this amazing content. I am slowing working through the videos and coding along, I later plan to pay for the monthly access for the Inertia videos. You content has been nothing short of clear and amazing so far.
Lots of subtle lessons as well from your coding style too. -
Completed lesson EdgeJS Templating Basics
-
Completed lesson Easy Imports with NodeJS Subpath Imports
-
Completed lesson Quick Start Apps with Custom Starter Kits
-
Completed lesson Deleting Items and Flushing our Redis Cache
-
Completed lesson Improved Caching with Redis
-
Completed lesson Environment Variables and their Validation
-
Completed lesson Singleton Services and the Idea of Caching
-
Completed lesson Defining A Structure for our Movie using Models
-
Completed lesson Authenticating A Newly Registered User
-
Completed lesson Cleaning Up Routes with Controllers
-
Completed lesson Extracting Reusable Code with Services
-
Completed lesson Listing Movies from their Markdown Files
-
Completed lesson Reading and Supporting Markdown Content
-
Completed lesson Setting Up Tailwind CSS
-
Completed lesson Vite and Our Assets
-
Completed lesson Validating Route Parameters
-
Completed lesson Loading A Movie Using Route Parameters
-
Completed lesson Linking Between Routes
-
Completed lesson Rendering a View for a Route
-
Completed lesson Routes and How To Create Them
-
Completed lesson VS Code Extensions and Configuration
-
Completed lesson Project Structure
-
Completed lesson Creating A New AdonisJS 6 Project
-
Completed lesson What We'll Need Before We Begin
-
Completed lesson Introducing AdonisJS
-
Completed lesson Server-Side Rendering (SSR) vs Client-Side Rendering (CSR)
-
Completed lesson Creating Our AdonisJS App With InertiaJS
-
Account created Welcome to Adocasts, @vladimir-laskin!