This is a transcript. For the video, see Laravel - from the evolution of monolithic applications to the revolution of fully decoupled systems: The future of application development in Laravel (with VILT and TALL).

[00:00:00] Michael Meyers: Hello, and welcome to our Tag1 Team Talk on Laravel from the evolution of monolithic applications, to the revolution of fully decoupled systems. I'm Michael Meyers, the managing director at Tag1 Consulting, and I'm joined today by Laslo Horvath, one of our senior software engineers. Today's talk is broken down into three segments.

[00:00:19] This is part three. We're going to be talking about the future of application development in Laravel. Be sure to check out part one, the overview of Laravel and part two, the challenges with monolithic applications and fully decoupled systems and finding that middle ground, which led up to this segment here.

[00:00:38] Laslo, thanks again for joining us. You know, you kind of started to get into this middle ground of, of applications at the end of the last segment. You know, tell me a little bit more about where things are starting to go, where you see things.

[00:01:00] Laslo Horvath: Yeah, sure. So, I think the core people at Laravel recognize that doing things in, in like sort of a component way is a, is a good idea to creating components and everything.

[00:01:15] Even, even in the early stages of blade templates in Laravel, it was fairly easy to create reusable components that you could use across the board. Of course, these components didn't have any logic in them. Maybe some again, validation, things like that, but they couldn't contain any logic, but there were certainly things that you could reuse all across your, your, templates that you run there. And then, like VueJS became popular and since VueJS is very lightweight, you don't need - it doesn't need a lot of time to, to initialize and, and to be, to like generate on the, on the, on the front end. So they started, they did a complete integration of VueJS that was some time ago already.

[00:01:59] So it's not, it's not that new, but, the, the early VueJS integration is Laravel was really brilliant because you can use VueJS components that you, that you write in the front end. So, so you wouldn't create like a, a wholly decoupled application. You would just take from VueJS what's good in there.

[00:02:17] So you would create a component. You can have business logic in that component. You can do like, a bunch of things that are really great, like on a single page, you just do it. You can have everything that you do on that page inside of this component. But then if you like follow a link to somewhere else, you open another page you're gone and then you open up another component.

[00:02:39] And this was, this was very good. It was sort of counter-intuitive. Through the whole, decouple movement, because now you have like, okay, you have VueJS, which is basically a front-end framework that should help you develop single page applications and progressive applications. And now you want to initialize it every time you do a page load so it was kind of kind of counter-intuitive for me as well, but.

[00:03:04] And after you start using it, you, you get like, ah, okay, now I understand why they did this because you know, you, you don't have to include JQuery. You don't have to include all these other libraries or whatever, or you don't need to like freelance for libraries. You don't need to find that. Then you basically get what VueJS gives you, which is like a nice structure, structured way of, of, developing components.

[00:03:27] And you fully integrated them, like really integrated into Laravel. So you don't need to take care about anything else. We still write controllers. You still use the whole MVC setup that it offers. You still know where to put what, and it was working very nicely. And, it was like the theme thing that we mentioned in the, the Part one, it still felt like a Laravel experience.

[00:03:53] So it still felt like, yeah, it's whatever I do, I do it quickly. So I don't need to. I don't need to take care of bundling. I don't need to do whatever or install. I don't know how many modules in MPM. I don't need to create Webpack. I don't need to do anything. I just jump in and do it. And it was, this was kind of the turning point, at least.

[00:04:18] As far as I can see it because I was here for the whole ride. I sort of can identify this as the turning point in where like, how, how we got to the other things that are happening now, like to the, to the new movements, new stacks that are now becoming mainstream in the Laravel community. which is really interesting when you can, you can look at it from this perspective.

[00:04:42] So somebody was not afraid to disrupt this and say like, okay, cool. This VueJS thing is cool, but let's not use it to the standard rate. Let's use it like this. You know, somebody had the courage and the vision to do that. And that's really cool for me because you know, you see a tool and then you think, Oh, it's a hammer.

[00:05:00] You keep hitting the nails. And then somebody is like, Oh, but I can paint a picture with this. And then they end up with. It's maybe that thing is not so helpful, but you know, we go in a different direction and then something really helpful comes from it. So.

[00:05:17] Michael Meyers: I just saw this amazing video the other day of a, an artist with a hammer who shatters glass to make these insanely awesome like portraits.

[00:05:27] So I don't know the hammer’s pretty amazing.

[00:05:31] Laslo Horvath: It can do a lot of things, but everything has to be a nail. This is good for me as a software developer growing up and starting out. So whenever you learn something, new, when you were younger, you're like, Oh yeah. And I cannot do this and this.

[00:05:44] And you tried to do everything with that hammer, but it's not really working. So for me, this always comes in mind, especially when we're looking at, from, from this distance now.

[00:05:55] Michael Meyers: Totally. So proven to be a successful model to date, how is this going to evolve? Like where do you see this ecosystem going?

[00:06:07] Are there new ideas? Are there things that people are playing with? I know there's a lot of stacks out there what do you see is the future direction.

[00:06:18] Laslo Horvath: There are now two dominant stacks in the community. that are, that have of like crystallized themselves from, from all this and its interesting, because you can see traces of really totally different technologies. in them. So you can see a bit of like how ASP.net used to work. You can see you, I don't know if, if the listeners know, like Google that toolkit and how that used to work. So all these kinds of different things that were, that were kind of, You know, mixed in like ideas taken from those. Either on purpose, somebody knew how that worked and thought that was a good idea or it's really an accident.

[00:06:57] And then we just gained like a full circle back, but maybe with the better understanding and maybe a better methodology this time around. So because there were some approaches that were similar in the past, but it was always like with ASP.net. We had like. Huge problems with performance, huge base loads browsers dying and things like that, which was, which was really a big issue.

[00:07:21] But part of that, like saving the state, maybe in the browser was, was taken in Livewire, which is a pretty cool, Laravel extension. That should be in the next version and also independent of backend framework, but currently it's really fully integrated into Laravel and it's really nice to use, but it takes advantage of this.

[00:07:40] And then you have like, you know, this idea of maybe injecting between the communication on the front end and the back end, which is done by inertia. So you basically called your backend code, like you do it regularly, and you just use, use this, this extension, this library, which is a JavaScript library.

[00:07:59] And also has a Laravel extension, and then you don't need to think about it, then you still get a SPA. So it's, it's really interesting, like, but that was also used already by Google, that toolkit where you would basically write Java code with within your Java project and then you just combine it to JavaScript and, and it, it calls it does RBCs or, or API goals or whatever you define it.

[00:08:22] And it was still like an experience with a normal and native application. And this is again, now moving in this direction, but now with totally different, methodologies and different technologies. So the two predominant technologies that are, or stacks that, that have come out now are the it's like a acronym VILT.

[00:08:46] So it stands for Vue JS, Inertia Laravel and Tailwind CSS. And like, really that, that just speaks for itself. It uses VueJS as the, as the JavaScript library for, for doing the front end part. So you can basically, as, as with, with this hybrid that Laravel did with integration at VueJs, you can just create components.

[00:09:08] You can, you can really create a full component with, with all the logic that an encapsulated component that's followed like that with the logic that it contains. And then, you use Inertia to, to basically, Link link them together. So to speak, it's a bit harder to explain, but, so, so that you can create it like an SPA and without needing to do routing Laravel or it actually supports React as well.

[00:09:36] So you don't need to pull in a VueJS routing. You can basically do your routing in Laravel as, as you would always do with all the middleware, with all the security checks, with everything that you will normally do. You just injects itself into it. So it's really, really a helpful tool.

[00:09:53] Michael Meyers: What is Inertia? Just in case people aren't familiar with it,

[00:09:56] Laslo Horvath: Its actually Laravel extension and the JS library, that's, that's helping out in this regard.

[00:10:02] So it, it basically acts as a, as a routing medi between the front end and the backend. And it does a lot of other helpful things as well. But this is like bluntly said, Not to dive too deep into, into details. Then of course, L stands for Laravel, which is like the base for the whole thing. And T stands for Tailwind CSS because Tailwind is really big now in the Laravel community, which I really endorse and support because I love using it.

[00:10:30] And then all that other people are at, Tag1 also love using it. And I never wanted to see --- I want to use Tailwind all the time, but just, getting booked. I'm, I'm really enjoying this experience and, you know, This is this, again, speaks to that, to that, that we discussed earlier where you, you have to have different hats.

[00:10:51] So you're now a developer. You have your developer hat and then you take it off. You take another hat and then now you're a designer because it's CSS, it's, it's again, it's different. You're not an engineer. Now you, you deal with pixels and you know, and you have to have an extensive knowledge of it because I think like generally development is, or software development is like the, the fastest branch, the fastest evolving type of work that you can do. So you need to be keep up with the changes almost on a daily level. You know, like I know I do reading like every day after I'm done with work or going to bed, or whenever I have a bit of spare time, I like to do some reading and you need to do it to keep up with everything that's changing.

[00:11:33] And this is again speaking to, okay, now I need to know CSS and with, Tailwind, you don't need to be that good in it. It just takes away a bunch of stuff for you. And it's really efficient and super cool. And also new, which is interesting, which is a benefit for it. But I liked, I liked that it's, it's really integrated in the Laravel community and I think that's, that would be a great benefit in the future.

[00:11:57] So these four together, allow you to do, let's go like ----------, but you had like a stack that you can choose. Which can basically cover any need you have. So whatever type of application you want to write you're able to do it with, with this stack, I did, I did some apps, but they were smaller.

[00:12:20] So think of apps that you can finish in a month. So for me, I wouldn't say it's battle tested for me out of my perspective. I know people have been doing much more complicated stuff with it, so I cannot speak from personal experience. I can only say it was a pleasure to work with it. I didn't go, a lot outside of, of the things that it promises it can do. So I'm not really sure now. Okay. If you get to an uncomfortable situation where you can agree, how do I solve this, that you will be able to quickly find an answer, but for everything I needed, it was great. It was cool. And I liked using it.

[00:12:59] Michael Meyers: Awesome.

[00:12:59] Yeah. Classes of applications, right. There's you know, so having an asset where you can quickly bang out are pretty solid application in a month is an amazing tool, but it's really good to point out that that remains to be seen yet, at least from our perspective that it can scale to Top level enterprise needs, but we're hopeful based on our experience.

[00:13:22] And then hope we get an opportunity to do that project soon. Yeah. Tailwind has been amazing. Like I I've had it on a couple of projects that I've been involved with, not just with Laravel, but also with Drupal and, It really like on the Drupal side, one of its capabilities that I think differentiates it as a platform is what's called site building the ability for like business users to point and click together everything from data types to entire pages and views.

[00:13:53] And that sort of fell short of sort of the look and feel. And by integrating Tailwind into that, we were able to kind of take site building the last mile and give these business unit users control over that last component. So it's been, it's been really cool to see it is, it it's, it's a really, it's a really great tool.

[00:14:16] Yeah. What is the, you mentioned that there were two stacks, there's VILT and then, what's the other stuff?

[00:14:24] Laslo Horvath: So the other stack acronym for it, this TALL. T A L L so it stands for Tailwind CSS again. So the predominant component is the Tailwind CSS. Then you have AlpineJS. So Alpine.js is like a mini front-end framework.

[00:14:42] So think of like Vue JS and React, but. A really small scale. So it's, it just has a couple of directives that you can inject into your HTML that do intercept and do things for you. And that's basically it. So it's not supposed to be this mega tool that helps save the world. It's there just there doing thing and to help out then.

[00:15:02] And that's it. So things like binding data, creating Greek JavaScript components or classes in the front-end, intercepting like on change events, you know, and injecting values, things like this. So it's, it's very simple. It's like, it started off as a helper for Livewire and then it evolved into, into its own thing.

[00:15:27] So as I said, it's really a cool thing because I think everything starts out as a small toolkit for something. And then it's like explodes into something maybe entirely different or it just implodes. And in this case, so Alpine really stayed really in its lane. It's really just doing what it's supposed to do.

[00:15:45] So it doesn't add any unnecessary complexity. It's not bloating up up the, the resources of, of the browsers is not sending, I don't know how much data from the backend. It's just doing what it's supposed to do. So it's, it's really, really neat. Then we come to L first L stands for Laravel, of course, as the framework that drives it all and then L the other L stands for, Stanford Livewire.

[00:16:11] So a Livewire is really interesting because it has, it's basically, like it. Think of the two way binding that you have with, with front-end components. So when you develop a, Vue JS component, you have like, I dunno, date field, date picker you select the date and then in the coding, in your components, you have like, okay, now you know that you have a date selected, so Livewire has this, but it actually notifies you in the, on the back end side, on the server side.

[00:16:42] So it basically takes care. Of all this communication between the browser and the server. So you can develop components as if you were really on the. On the client side, but you actually do work in PHP. And again, you have all, all the benefits of middleware, all the security benefits, everything that goes with it, it just hides this interface for the developers who don't need to take care of it.

[00:17:08] You don't need to think about it. You just know it works. And what's really cool, actually. So really interesting thing is like back in 2008, I actually implemented something similar. Because I switched from, doing .NET , to doing PHP. And then I lost some of the things that ASP.net did and I.

[00:17:27] Developed it in PHP. So of course it was clumsy. It was a mess. It was unusable, but it was a similar methodology to what Livewire does. So basically it's really, it's really cool because it hides all of this complexity for you. And on top of that, it has type safety. Has it has benefits of all modern PHP features that are offered and take away all the clutter that you would otherwise have to take care of yourself.

[00:17:54] So basically every backend call is something that you would have to do yourself. In this case, it does it automagically. And, it's, it's really cool. It's really cool for that. And, what what's really cool about it is if you do it properly, like you really have this feeling that you're, you are using an SPA or a single page application, and as a developer, You have again, you have this really great thing where you just develop the way you would develop a monolithic application.

[00:18:23] You don't need to take care of you don't need to know a bunch of JavaScript, constructs or Typescript constructs that you would normally have to use. You don't need to take care of those things. You just have to know one technology and everything else is taken care of automatically.

[00:18:40] Michael Meyers: I was hoping that SPA meant spa and that that's what was helping me stay sane was a nice massage, facilitate my efforts.

[00:18:50] Laslo Horvath: I think these days everybody would like to go to a spa or something restorative.

[00:18:54] Michael Meyers: Laslo. This is, this is so much fun. I, I learned a lot and I, I really appreciate you taking the time to talk to us about this, for our listeners. Be sure to check out part one, the general overview of Laravel and part two, the challenges with monolithic apps and fully decoupled systems and finding this middle ground that we dove into in part three.

[00:19:20] We'll put links in the show notes. If you'd like this talk, please remember to upvote subscribe and share it with your friends. Please check out our past team talks at tag1.com/tagteamtalks. And as always, we would love your input and feedback on this show as well as potential. Future topics it's really rewarding to hear from you.

[00:19:40] So for the folks that have us or hit us up on, on different systems, I really appreciate it. it makes doing these so worthwhile. you can reach us at tagteamtalks@tag1.com. And again, thank you so much Laslo for joining us and thank you to all our listeners. We hope to see you again soon for the next talk.

[00:20:01] Take care, everybody.

[00:20:03] Bye.