Built With Laravel featuring Matt Stauffer
Eric L. Barnes (00:00)
Welcome back to the Laravel Creator Series and today as a guest we have Matt Stauffer who recently built a new app or a new thing for Laravel called Built with Laravel. So if you don't know, Matt is the, I had to write all this down because he's into kind of everything. So Matt is the owner of Tighten, author of Laravel Up and Running. He's a conference speaker, open source contributor, official food taster on Back of the Box YouTube series and a man that married way up.
Did I get the introduction right? Way up. But yeah, so you just launched a new app. I guess it's just a site, right? mean, it's, but it's basically built. Yeah. So it's called built with Laravel and it showcases what apps and sites and things that are basically built with Laravel. So, so I guess my first thing is like, what brought this on? Like, why did you want to build this?
Matt Stauffer (00:30)
You got it! my god, that was the best introduction I've ever had. Way
Yeah, I mean it's an app I guess, but it's basically just site, yeah.
Yeah, that's a great question. There's two aspects of it. One, there's like a context that makes me want it. And two, there's other sites that sort of do it, but don't do exactly what I want. And that kind of leads into what makes this unique versus others. So the context that led me to want it is I'm constantly in conversations where people want to hear, is Laravel legit? Is PHP legit? And you'd think it would be from people who are considering
you know, comparing it against symphony or something, because those are the stories we're often told, but that is not the actual truth of the matter of when these questions are asked. It is when somebody in an organization says, we should use Laravel, it's the latest, greatest, it's going to make us productive, it's making us fast, we're going to get time to market really well, and then somebody up the approval stack, which is usually an investor or someone who's not actually technical,
says I've been told by my friend who does technology, who made his own startup or whatever, that you can't use PHP. PHP's out of date and yada, yada, yada, yada. Don't use it. And so we can't get approval for the project. The project doesn't move forward. And so I've been looking for something. I can show these folks that says, look at all of these very large, very legitimate organizations that are on Laravel, for their front -facing website or for some tool somewhere in their stack.
This is proof that this is a legitimate thing that you can use and I want to find people that are impressive to them because and that's where it leads to the other tools. So there's a site called madewithlaraval .com and there's another site called Wire in the Wild. Wire in the Wild does an amazing job of showing projects that use live wire and is great for technologists who are considering live wire. Made with Laravel is a part of a suite of five different things where they try to get there's Made with You, Made with React, whatever else and they want you to just see as many as
So their number one goal is just to have hundreds and hundreds and hundreds and hundreds of projects, but they're small projects. They're mom and pop things. are a huge number of them are developer tools, packages and stuff like that. And I'm like, no CEO is going to be able to convince this high level person who's non -technical, we should use Laravel because this person made a package in Laravel. I'm like, that's useful for some context, but it's not useful for this context.
So what I wanted was a list where a CEO who doesn't know about PHP, who doesn't know about Laravel goes, you're telling me that those people use Laravel? Okay, now I will reconsider. And so that's the primary goal is a list of organizations that are impressive, that are notable, that are either people would know by name or if they don't know them by name, when they see them, they go, really? That will allow the decision makers, not the technologists, but the decision makers to go, that is going to make me reconsider.
my initial opposition to Laravel.
Eric L. Barnes (03:36)
Love it, yes. To me, that does seem like something that we're missing in the community itself, because I guess that is the one kind of disadvantage to a backend framework is you can't just go to a website and view source and be like, yeah, this is built by Laravel. So I guess that leads to my next question. like, how are you finding these companies? Are they reaching out to you or do you just have these connections
Matt Stauffer (04:01)
It's a little bit of everything. There is one thing you can do if you look at the cookies of a website and there's a Laravel session cookie, then you know it's on Laravel. A lot of people change that because they want to make it less transparent which tech they're using. So that's a start. The second thing is I've just talked to people specifically who say, work there or here's actual proof.
The third thing is if people list any jobs on Lara jobs or if they're giving any talks or anything like that there's any public proof where they name that they're using Laravel and then the last one is we're starting to look at a few people's LinkedIn's and if their LinkedIn says at this company I did this and I can verify that that actually happened then we're also including those. I want to make sure that every source is verified that I'm allowing for lots of different potential verifications. So I would say the first half of those that I put up were the ones where I did the research.
the second half are ones where people have submitted because you can go to bitwithlarrival .com and you can actually just suggest a site. And in the suggestion, you can say which of their actual sites, because you're actually suggesting an organization. As you say, this organization uses Laravel. Here's the sites where they use it. Here's how I know. And then there's actually a second thing that says, here's how I know, but you can't put this part publicly. So a lot of people will say that the public part says,
They put listings up on, you know, Lara jobs or whatever and their private part says I work there and I know we use Laravel but I can't say that, I can't put it on the record but here's public proof and so they kind of help me find that public proof that I might not have had otherwise.
Eric L. Barnes (05:31)
that is so, mean, I know it's, still early. mean, it's only been launched what a few weeks now, but, have you had any, any big companies complain yet that they're like, we don't want on there at
Matt Stauffer (05:41)
None yet. Yeah, none yet. And one of the things is we at Tighten, we have a lot of big companies that we work with and we have to really carefully walk the line of NDAs and that sort of thing, which is why I'm only focusing on people where there's public proof. you know, if you don't want people to use, don't, if you don't want people to know you use Laravel, you probably shouldn't put out public job postings that say you use
Right. And so I really want to get to the point where nobody's on there just because we have this private knowledge We only want to be able to say look you put up a public listing you were okay at that point with everybody knowing So everybody knows and that doesn't mean somebody's not going to come for me at some point and I'll be understanding and you know Whatever and I might just say, you know multinational I you know Electronics manufacturer blah blah blah blah that the preface is all their things with I you know, if they don't like it, you know, we'll figure
Eric L. Barnes (06:33)
got to, yeah. Well, to sort of go deep into the weeds here, you mentioned that you can actually change the session cookie or the cookie from Laravel itself. Do you know off the top of your head, like where that's done or is it even recommended? I assume it's for security,
Matt Stauffer (06:46)
config somewhere.
Yeah, I mean it's one of those security by I don't know if it's not entirely a security by obscurity If you believe that you are able to protect yourself from hacking by hiding the fact that you're using Laravel That is one of the things you could do that hide it. I personally have not recommended it, but I I'm not saying I think it's bad I just don't we don't do it out of the box. But yeah, I mean it probably wouldn't hurt. It'd be curious to ask It'd be interesting to ask Stephen Reese carter, that you know, he's like the level security guy like hey Is this a thing that even matters? I
I don't really know.
Eric L. Barnes (07:20)
wouldn't assume it matters, but yeah, same way, that was honestly, I don't think I even knew that that was there or I didn't know it years ago and totally forgot about it. So that's, sort of a interesting, interesting little Laravel tidbit there that there is a session cookie.
Matt Stauffer (07:32)
Yeah.
Yeah, and the other way to test if you need to is if somebody's using LiveWire, you can kind of look for the wire, you know, colon things in the text. So those are the two kind of things where you can actually look in HTML and see a Laravel app. Outside of that, I don't believe there are any that are consistent. You know, there are smells, but I think those are the only two proofs that I'm sure of.
Eric L. Barnes (07:55)
Gotcha, yeah. So as far as the site itself, are you, I know you also as part of Tighten or you personally, y 'all built an app called Jigsaw, which is, you know, a flat file. How do you describe it? It's flat file. generates a static. Yeah, static. Is it's using that on the backend or are you using something custom
Matt Stauffer (08:10)
A static site generator.
Yeah, no, this is just a normal Laravel app. We have a built with Jigsaw site that is built with Jigsaw. And so I did build it that way. The number one problem I had, and this is true with all static sites, is static sites are not CMSs. And so when you get to the point where there's a lot of data management happening in static sites, it can get to be difficult if people who are non -technical are doing it, or if you want people outside of your team to be contributing content.
that's very difficult to do with static sites. So static sites excel when you've got the developers being the people writing the content all the time. So it's great for a developer blog, like the Tighten website's on Jigsaw and it's perfectly fine. But this is something I wanted other people to be able to submit an entry. I wanted to be able to have a panel where I can look at the entry and I can click yes or click no, or maybe edit if they made a typo or something like that. And you can't do that stuff with static sites as much as I'd love to. So this is just a custom layer of a app.
historically have used Nova for admin panels and there's some folks at Tighten that really like filament and so I talked to Dan Harris and he was like, hey, you know, what I would love for you to do to support filament is try it on a project sometime. And I said, okay, the next time I need an admin panel, I will try it on a project. And so I went and I, you know, installed filament. I'm still in the middle of building out the admin panel. So it's funny, if you look at the commits for built with Jigsaw, cause it's built with Laravel, it's public. You'll just see that the last 10 commits are me just adding
the images for those as I go into TablePlus and literally manually enter them into the database because I haven't set up the admin panel yet. So it's one of those like, yeah, you know, we'll get to it kind of things.
Eric L. Barnes (09:49)
Yes, totally bad. going right into the database for little small projects is totally underrated. I love doing that. Yeah. Yeah. No, it's a filaments, filaments really good. I've been using it, on the back end of where I've used, but, one of the neat things about filament is you can actually use it on the front end too. but I have not actually used it in that, in that way yet. like, you know, for your form,
Matt Stauffer (09:55)
Yep. Yeah. Also, I said Dan Harris and I meant Dan Herron. Sorry about that, Dan.
Eric L. Barnes (10:17)
for your suggested entry, think that can actually be part of filament. just goes right in. You don't have to do anything external. It's like all the code's already there.
Matt Stauffer (10:24)
Personally, I'm gonna name, I am wary of front user facing, end user facing all in one platforms. So personally, I'm not gonna be doing that. And we have, like with Filament and with Nova and with WordPress before, we've seen people use things that are meant for building back end admin panels, be used to build front end stuff. And sometimes it was a manipulation of the thing. Like Taylor literally just said publicly, don't use Nova for front end.
And sometimes the things were intended to be used that way. think filament is intended to be used as a part of your app, but overall when I've seen it done that way, I don't like the way it works out in terms of being able to meet the needs of our, especially our pickier kind of end users. So personally, you know, I'm not saying what anybody else should do, but personally I'm sticking to if I'm doing an all in one builder, it's for the backend.
Eric L. Barnes (11:14)
Nice, nice. Okay, well, this leads into another product you have. Or is your suggest feature running through FieldGoal? I guess FieldGoal might be more geared for just email, right? Not for inserting.
Matt Stauffer (11:26)
Yeah, mean field field goal is is great for static sites and honestly the the primary goal for field goal is if somebody is Has like a concept of like a message inbox basically and it's not nearly as complex as something like help spot You need to be able to like assign this person to this message or something. But if you don't want If you don't want to have to program like
this person sent this in and you should be able to market as spam and when this thing gets, this particular form gets filled out, make sure it emails this person, Fieldgold takes that off of your plate. So it's one of those things where it's like, do you want to rewrite that for every single project you ever build or do you just want to let Fieldgold handle it for you? So that's what Fieldgold is good for, both for layer relapse and static sites. What Fieldgold doesn't really excel at is if you want to use that data programmatically, it's just a message inbox, right? I mean, you can get the data out, but the problem is when somebody suggests a site,
I don't want to just get notified about it. I also want to be able to click a button that says, take this suggested organization and turn it into a real organization. And right now there are two separate tables. There's a suggested organization table and the things that are related, what technologies it uses and what sites it has are just JSON columns right now. But I'm gonna build an action in filament that says either reject a suggestion and then it just kind of goes away.
or accept a suggestion, which then pulls that JSON out and turns it into an actual relational entry in the organizations table and the sites table and the relationship, the many to many relationship between an organization and technologies.
Eric L. Barnes (12:58)
Sounds great. And then I guess for storage, you're using MySQL Postgres or the, what's the new flavor of the month? The SQLite.
Matt Stauffer (13:09)
SQLite? Locally it's SQLite. I'm assuming that I used MySQL on the server just because that's what I do by default, but I actually don't remember. It's probably MySQL,
Eric L. Barnes (13:19)
That's me too. It's so ingrained from, you know, all these 30 years of doing this that we just thought MySQL is like, whatever. I love that. But, well, how, how's like the feedback being, you know, from the community so far is are people getting really behind it and, and enjoying
Matt Stauffer (13:22)
Yeah, right.
Yep. Yep.
Yeah, I've gotten quite a few people who understand from a business perspective who've gotten a bit very excited about it. I've gotten some really great support from the Laravel team who are, know, the Laravel team has been working actively on building relationships in Silicon Valley and getting kind of our reputation up there. And it's been so exciting because that's been something that has been one of my focuses for years at this point is trying to raise the reputation of Laravel among folks who have.
influence on the what types of organizations would use us in the future and it's been a pretty long slog of trying to convince these folks, know, hey, we're valuable. We're legit. And so first of all, I'm getting a new kind of boost of energy right now just because of my role in the company at Tighten. You know, I've gone from being CTO to CEO. So I'm involved in even more of these business development conversations. So I'm more motivated than I was before.
But then also there's some folks at Lyreville that are like, no, let's really do this of their own volition. And I was like, well, I'm doing this too. And they're like, great, let's work together. So I feel like there's a ton of support from them. We're already talking about ways we can pair up together. There's other business owners that are saying, I'm really excited this is going on. So so far the response has been incredible. And I have over 200 submissions that I'm still working through. And I'm picking out some of the most exciting ones and adding them manually. And then once I have my filament tool, I'll then be able to pull in more of them.
Eric L. Barnes (14:46)
That's awesome.
What in the, I guess, you know, because we're, we're in Laravel and we're kind of, you know, most of our, I guess our reach is developers. you getting a lot of like, you know, people that are like submitting like Laravel news, like that's a site that really shouldn't go there because that's literally for Laravel and nobody outside of Laravel cares about this website. are you getting a lot of little stuff like that submitted?
Matt Stauffer (15:12)
Yes.
Yes. And it's funny, if you look at the database cedar for Bill Jigsaw, you'll see I actually at the bottom as I'm adding things, I ask questions and I'm like, so should I put Laircast there or not? Because it's a hugely successful business that anybody should be impressed with. But because it is developer focused, think somebody might be like, well, I don't know that thing. It says Lara in the name, so it's not impressive. So it's weird because I personally think that the metrics that I have for what's impressive, Laircasts fits, right?
Very, very financially successful one man operation originally, you know, it should be an inspiration, but because it is targeted Laravel folks, I'm probably not going to put it on the list. So that one is like kind of edge Casey, similar to Laravel news. Like it's, think it's very impressive that it's a one man operation, you know, for the longest time and everything. but because it's Laravel, it's probably not going to get up there. However, there are the distinction, this like lines in the suggest page that say, here's what means you do and do not belong in here. And literally when the lines is
I don't want your individual developer website. I don't want packages. I don't want your agency's website. And still people submit them over and I'm just like, okay, so we don't read is what's going on here. Got it. So yeah, but that's okay. The delete button is free.
Eric L. Barnes (16:27)
For sure. Yeah. You know, it seems like maybe we can already do it, but it seems like we should be able to utilize open AI to scan URLs and be like, this is what I'm looking for and not looking for. And it can be rejected. Maybe one day. That's a dream in the future. I know I run into that because we do a community link section on Laravel News. I try to be approved freely, basically. I don't want to be the arbiter
Matt Stauffer (16:43)
Yeah, yeah.
Mm -hmm.
Eric L. Barnes (16:57)
whether your tutorial is good or bad, unless it's just really bad. But it would be a nice way to just have some sort of automated thing to scan and be like, nope, this is spam, just delete it. Or this is just a marketing website that shouldn't be here at all. But maybe in the future.
Matt Stauffer (17:14)
Yeah, yeah. there is something, I'm trying to remember what it is, but there's been something where I'm like, hey, if it has this in the name or if it looks like this, it's usually not good. I'm trying to remember what it was and I thought about even just building sort of like a spam smell or like a good fit smell detector where I just run it through a few things that just tells me on the submission page, like one to 10, how likely is this to be any good? And it's something I've done in my personal email.
There's one of my email addresses that I use and there's one of my email addresses that I've never given out to anyone ever. So the only people who email that email address are people who guessed it. And so I have a little label in Gmail that says, probably spam question mark. And I don't delete them all because some people guessed it and I wanna talk to them. But the vast majority of people, they guessed it and they're sending me spam. So it's one of those sort of like, maybe we don't let the AI totally be in control, but give it a little bit of like, let us give us a hint, you know?
Eric L. Barnes (18:09)
That's funny, yes, very true. I'm very excited about this project. I know it takes a lot of work, not actually to build it from a developer standpoint, but just to run it and manage it, to go through and find all these people and find the relationships and stuff like that. So I'm very excited for it and for the community, like you said, helping all these other businesses owners outside of our little ecosystem, find Laravel and get involved with it.
But anything else you want to tell us about the app or?
Matt Stauffer (18:42)
Yeah, I actually do have something. So it's funny because it seems like such a simple app and granted I built it in 10 minutes that's here and there between work, you know, so it took probably three weeks for me to build because it was in 10 minute segments here and there. But I was surprised at how long it took me to build and I forgot about the fact that there is a long gap between proof of concept, just throw the thing up with the basic data modeling and really like well executed application, you know, with all the finance, the fine details and the nuances.
And I worked with a designer in this one that I've never worked before. he's sort of like, I'm really excited about this being an example of my work. Are you okay if I give you notes on like your implementation of my designs? And I was like, as the owner of the company, it's been a long time since somebody, he doesn't work at Tighten, right? So he's just, he's just, I'm just some dude to him. And I was like, yeah. And so he's given me these like little fine grade notes on things. And I'm finding myself being like, yes, you're right. But you know, my hackles raised a little bit. I'm like, you're telling me what to do. But the thing is he's right. And the little nuances.
really are as much work as building the whole thing itself. So that was an interesting point. But I also wanted to note that I built 98 % of that thing myself, but I asked for some help from some Tighten folks to get it over the line. so Andy Newhouse built some cool little pill selectors. then Tony Macias helped me for some page caching, because we wanted it to feel really fast while it's still running on a single shared Digital Ocean box. I tend to do, like I'll cache the
the database results and then I'll also do often some kind of page caching like Joseph Silver's page cache or something like that. So he set up Joseph Silver's page cache which makes it much, much, much faster. If you've never tried it out, I would definitely recommend it to everybody. One of the things it does is it takes the output of the HTML page and actually saves it as an HTML page in a local folder and then tells NGINX every single time a page request comes for this URL, look at the local cached HTML version before you even touch Laravel.
So it is actually not even hitting Laravel. And so your speed there is able to get even significantly better, but also your load on your Laravel app is able to get better because many times it doesn't even touch Laravel. But one of the cool things that Tony did while he was doing that is he added page transitions. And if anybody's not familiar, there's this new CSS thing where when you move between one page and another, rather than just getting like a full page load like we're used
you can say, browser, this element on page one and this element on page two are the same element, animate them for me. Sort of like if you were in like Keynote or Flash or something like that. And so Tony threw a couple of those on and it's kind of crazy how simple it is. You can go look at the source code and the pull request where you put it in, but it's pretty amazing how easily you can just say, like for example, this Apple logo on the grid page is the same as this Apple logo on the show organization page. And so when you click on Apple, the Apple logo,
zooms over and it just makes it look really special with almost no work at all. It makes it feel kind of SBA. So I just wanted to kind of point that out both that my team helped on this project but also that view transitions thing is really fun and that the page cache package is really
Eric L. Barnes (21:49)
That's awesome. So you said that was part of Vue or did you say that was a CSS transition?
Matt Stauffer (21:55)
CSS it's called view transitions, but like VIEW. Yeah. Yeah. Yeah, the other view. Sorry about that. Yeah. So it's a CSS. It's a CSS feature called view. I think it's called view transitions or page transitions. So I think it's view transitions.
Eric L. Barnes (21:57)
view transition. the other spelling of view. The original spelling.
Yeah, that's awesome. Yeah, I did see some you know banter on Twitter talking about how awesome that was But I haven't had time to actually go dive into the source and see it all see it all so I'll be sure to link all that in the show notes down to the to the PR and to the project I actually didn't know it was open source. So that's even better So, you know if anybody wants to I assume you accept PRs if somebody wants to contribute
Matt Stauffer (22:18)
super easy.
Yeah, I mean, right now it's not really looking for PRs. Somebody can, but I would definitely recommend, because I'm so happy with it as is, I'd recommend putting up an issue before you make a PR. I have it open source more to show people just how I build apps, less because I expect a lot of community contribution.
Eric L. Barnes (22:48)
I love that. Yes. you can, and you know, if you are sort of listening to this and you're new to Laravel, like go look at these apps for sure. And read through the source and just see how, you know, everybody sets things up a little differently, but on how they, know, a lot of the big people within the liberal community stick to the liberal conventions and, you can follow an app, but just like, just like this one. And you'll see basically, you know, you can jump right in and not be confused on where things are or anything like that.
Matt Stauffer (23:15)
Yep. And because I built it in 10 minute segments here and there, you're also going to see the mistakes that somebody who's been writing Laravel for over a decade make, right? I'm just kind of like, you're going to see everything in there. especially Dan, Dan Heron and other filament folks, you can go in and criticize how my first Laravel or my first filament app looks.
Eric L. Barnes (23:25)
Yeah.
I love that. Yes, that's awesome. Well, I think that about does it. You know, if we don't have anything else, I want to say, you know, thank you to Matt for spending time with us today, telling us about this new project and, you know, just just being a great human in the Laravel community. He does so much stuff and so much work. He's one of the true
Matt Stauffer (23:53)
Spoken by a true OG, thank you my friend. I really appreciate you.