over 2 years ago Syntax Podcast
How to Build a Website or App
- 00:53 How to build a website or app
- 03:08 Design and code workflow
- 06:33 Design systems vs creative design
- 10:12 Real vs fake data
- 13:36 Templating engines
- 18:18 Component design approaches
- 21:16 Testing components
- 23:37 CSS variables and dev tools
- 26:31 Varied fake data
- 30:07 Do you need a CMS?
- 33:25 Static CMS options
- 36:13 Picking backend first
- 39:54 Meta frameworks
- 41:46 End-to-end testing
- 44:15 Integration testing challenges
- 47:36 You may not need complex hosting
- 49:09 Simple HTML/CSS hosting options
How to build a website or app
Wes Bos
I was looking at it and I thought,
Wes Bos
in the state that they were. And we used the century
Wes Bos
some sort of bug that you cannot figure out because rid. The user is using the website wrong. You never thought that that would ever possibly happen. And for that, you're going to need Sentry to help you figure out What's going on with that? We had one of the bugs on the new syntax website where
Wes Bos
how they did. Also, I got to see them get frustrated and leave the website. So check it out, century. Io, Coupon code tasty treat 2 months for free.
Scott Tolinski
We had a party, like, last Sunday
Wes Bos
With me as always is mister Scott Talinski. How are you doing today, Scott? Hey. I'm doing super good. Hanging out here. It is But it shows up rid. And you can define the album art, the name of the podcast,
Wes Bos
Just how do you build a website, right? There's there's so many different moving parts to it. And not only like what do you use, but like, what's your approach? How do you even think about choosing these types of things? So that's what we're going to be talking about today.
Scott Tolinski
rid A couple days right before Halloween, so that means I gotta go trick or treating tonight
Scott Tolinski
outside.
Scott Tolinski
just out of nowhere.
Scott Tolinski
with
Wes Bos
And they were not we haven't talked about CMSs on the show in a while, It's a scaler. It scales up and a lot of that is when you're trying to make it look good and fuss with the code, nifty. I also
Wes Bos
So how do you build a website, Scott? Yeah. You know what? For me, We could. Yeah, I don't know.
Wes Bos
I thought this was awesome. This is the entire show.
Scott Tolinski
So cold out, Wes. I'm gonna be Snow gas. Bundled up. It's like the absolute worst. And beside the only way it could get worse for trick or treating is if it was raining right now, but, rid You know, the kids are gonna go nuts, so it doesn't matter. Oh, man. So speaking of building the website, when When you do build your website, you're going to goof it up. You're going to screw something up. You're going to Yeah. And and we kinda touched on this in the episode about the new syntax website itself, but I personally like, Those are not Even remotely similar to these same type of projects.
Wes Bos
What the Oh, yeah. It is, like, your user clicking a button, playing a podcast.
Wes Bos
So those are rid Vanilla JavaScript Subscribe
Wes Bos
ready. I don't see how this would ever possibly happen. I don't see how anyone would ever get into the situation where they could click this button
Scott Tolinski
I was wearing shorts all evening, shorts at at night, 9 o'clock. So it was, like, Warm enough that you could be just, you know, chilling in shorts, and then a week later, background we have.
Wes Bos
I was able to see exactly
Scott Tolinski
Snowing like crazy. We got, like, a foot of snow
Templating engines
Scott Tolinski
And get HTML out of there. And in fact,
Wes Bos
throughout your entire application.
Scott Tolinski
Either way, we're getting into the weeds here. Basically Yeah. You just need
Scott Tolinski
of authoring your structure for your page, And you can largely choose to do that I knew that when my end to end test passed, That I was good, but I didn't have to change my test. Could you, man? I changed Yeah. The language entirely.
Scott Tolinski
Those 5 pages have some information on them that's not going to change. You could be the type of person who says, oh, let me build that in one of these fancy front end frameworks and then spit it out to be a static site. Or you might be the person that says, hey. You know what? I'm just gonna keep it as simple as possible. Use no JavaScript unless I need it for anything. Maybe I'm building I mean, heck, you can build it's too complex. You got too much stuff. Whatever. Yes.
Scott Tolinski
any sort of way whatsoever,
Wes Bos
You can remain as little JavaScript as possible as you want on this thing. I'll tell you where I'm at with my my course platform right now is so my course platform is
Wes Bos
Hug into React. So it's I wrote a whole template, like Express has this idea of like a template engine. And I wrote my own template engine, which was a React template engine.
Scott Tolinski
step 1
Wes Bos
on the server HTML. Yeah. And then just spit out HTML because I don't I don't need is defined. I didn't even know that this was an API.
Wes Bos
And I probably eventually I would like to get the entire thing onto like
Scott Tolinski
Hey. You know what? We did something very similar on level up Before we moved to SvelteKit, when I was moving from Meteor to without Meteor,
Scott Tolinski
rid is what I did is I had the server just straight up returning
Scott Tolinski
whether or not it is
Scott Tolinski
carousels now with CSS. So Other people are gonna go straight to a a tool that allows them to start to See things visually in a way like wireframing tools or,
Wes Bos
The back end is is a a React application. It's all dynamic, and it's Server or client rendered and rid. Like sometimes when you use Calcutta with a percentage, are helpful to hit as well. I also find with
Scott Tolinski
you need a way to structure your HTML to get it on the page.
Wes Bos
on a new website, blog post the other day from Lee, who is
Scott Tolinski
a way but the the emotional part of me says, I think this is gonna differ from person to person, and and I think that's an important distinction because we all come with our own I don't wanna say baggage, but our own background
Wes Bos
Not the actual like, there's a couple parts to it.
Wes Bos
Meaning that, like like, I'm not using any of the, like, rid Client rendering or whatever. I'm simply just using it so I can write all of my components, with real data as much as possible.
Scott Tolinski
Now
Scott Tolinski
that
Wes Bos
But
Wes Bos
I'm just I'm just using React for the ability
Scott Tolinski
a language that's made for this type of thing. It's rid Scaffolding out things and whether or not that's being developed on the server side. Let I mean, let's take into account your most basic website. Your most basic website Could straight up just be 5 pages.
Scott Tolinski
React render to string. Yep. And then I then took that and was in fact rehydrating it on the client.
Wes Bos
and HTML, right? Yeah. And I've been using for many, many years, I've been using Pug to template out those pages because It ends up as a used toilet See on Amazon. So I go into the warehouse deployment.
Scott Tolinski
So definitely definitely an option there if you're the type of person who who doesn't need that client side stuff And you and you do like working in these componentized way. Or, hey. If you like working in componentized manners, you can just straight up use web components as well here.
Wes Bos
to be a template engine.
Scott Tolinski
code, pipe it through a function essentially, Yeah. And
Scott Tolinski
in a front end JavaScript framework, In an HTML, one thing you gotta ask yourself
Wes Bos
I am building my next course website possible instance of them. Yes. So you can see them all at once, and you you're not, like, playing whack a mole where you change one thing and you go, oh, shoot. That that broke it on this instance.
Wes Bos
It worked well. I can do things like loop over the videos and render out a list of videos. You can create reusable components I can share throughout all the marketing websites.
Wes Bos
So if I'm going to be doing a little bit of work
Scott Tolinski
that's kind of what you're doing with server side rendering React. You just have a rehydrating step, and you can do it with re You can do it with Vue. You can do it with any of these things, and it works really well.
Wes Bos
that's all like a fun React app. But the actual marketing websites,
Scott Tolinski
I think the rehydrating part is where it gets to be less fun. But if you like you're saying, I mean, you can take
Integration testing challenges
Wes Bos
So that is part of your
Scott Tolinski
Because Yeah. Because you just list out, oh, you got a CDN and a load balancer and server. Like, no. You don't need all this stuff. If you wanna write a website in 2023 and beyond, read. You just need HTML and CSS
Scott Tolinski
tip to tail here. Do do you need the easiest way if you want to test Anything
Wes Bos
will your
Wes Bos
Let's talk about hosting the thing.
Wes Bos
It might run some GitHub actions to fire off a bunch of different things that need to happen.
Wes Bos
relations at Vercel.
Wes Bos
it's kind of interesting maybe you want like a like an image and I can compile them in. And then I just use react rid dot render to string
Wes Bos
It's a cache invalidator.
Wes Bos
CDN. That's a big one is you've got images or HTML pages on there that you want to cache around the world.
Wes Bos
Now the question is, or other things like that. So it can be useful to have
Wes Bos
you have to handle the load balancer yourself or having to pay I our old house did so often.
Scott Tolinski
straight up. It So let's talk about that data. So now that we're talking about fake data or real data, let's talk about database, rid. Sscott.com now.
Wes Bos
And like Vercel gets a lot of flack for Next. Js not doing all the I always use ready. Wes, Scott, and all of our dogs' names as examples, and, like, I'm sick of that. You know? Like, I want some other examples, but I many out there. We did a roundup about a year, year and a half ago.
Wes Bos
take at that whole argument that you hear over and over again. Yeah. And and, honestly,
Wes Bos
Do you want
Wes Bos
Ready. It's going to run a build, make sure the thing builds. It might run your tests, make sure all your tests pass.
Wes Bos
Ask your friend with an Android to try it, too.
Scott Tolinski
one thing I think gets lost in this conversation about maybe even get right into design tools and skip the wireframing tools.
Scott Tolinski
Yes, exactly.
Scott Tolinski
all this stuff?
Scott Tolinski
with the entirety of this episode. I'm talking about, Yes. It will work fine. Could I it it all just depends on on what level of comfort you have in being able to make things look nice yourself. Here. I was just I was Gonna shout out the Brad Frost episode on design systems. So syntax. Fm/682.
Wes Bos
And it involves so much more than the actual server, right?
Wes Bos
and we support all of that. But when you play a podcast on the Syntax website and then you lock SvelteKit,
Wes Bos
And he's kind of like, yeah, like, ordered 3 of them. They all showed up brand new, still in the package, still sealed. All the people do is they cut it open, they pull it out and they go, Oh, that's not the right color. Put it back in the box, send it back to Amazon.
Wes Bos
I guess, same thing with like a webcam, you know, like when things go outside of the browser into the rid. The actual system that gets a little trickier. So Manually, I tested it there.
Wes Bos
developer sending emails, things like that. And then you probably also want like a router. Right. And then When developing application, for example, say you're building a list of podcast episodes for a podcast website. Hypothetically,
Wes Bos
So you make a git commit, you push the git commit up.
Wes Bos
It contains continuous integration.
Design and code workflow
Wes Bos
to do that in a Figma tool
Wes Bos
to fiddle around in Figma, That's that That's pretty easy to say.
Wes Bos
to get a sort of look and feel for for all my websites. So I'll get in there. I'll get the color scheme down. I'll get sort of the layout down.
Scott Tolinski
And if you think about it, it all kind of starts with the very first
Wes Bos
And then once I'm like pretty happy, like If you were to look at any of the designs that I've done for any of my websites,
Wes Bos
Kind of funny because building a website, much like learning how
Wes Bos
cards,
Scott Tolinski
It it all depends on what your background is, but also
Wes Bos
I'll build like the And then that way, when it comes time to rewrite this thing, I won't have to change That one from Mhmm.
Wes Bos
all of like kind of those look because I feel like it's a bit faster What shows up on your lock screen Yes.
Scott Tolinski
of where we learned, what we learned. Baggage.
Scott Tolinski
and and really understand the flow of a website before they get into it? Other people wanna get right into that code.
Wes Bos
to play around with things.
Wes Bos
website layout or a bunch of nice clean components.
Wes Bos
a little bit more smoothly rather than sort of just bouncing around your service do it? So On a lot of my hosting platforms, I'll just set a limit to how high this thing can scale. And if I all sudden get a whole bunch of traffic, it will just scale up to multiple instances.
Scott Tolinski
How yeah. I got baggage. In fact, I need new baggage. I've been shopping for luggage. That's for sure.
Wes Bos
the more that actually does need to be linear. The more you actually need a system that is has rules and is a little bit more rigid I guess when things go outside of,
Scott Tolinski
visual side of things. You know? Some people would Wanna go into wireframing when we need a dang chip clip.
Scott Tolinski
I'm a get right into the code kind of person
Wes Bos
the major things like headings,
Scott Tolinski
Just about what what type of specific as long as the data gets passed into it correctly, you can really fine tune that component.
Scott Tolinski
So, you know,
Scott Tolinski
mostly because I have ADHD,
Wes Bos
they're nowhere near a polished
Static CMS options
Wes Bos
lots of open source ones, lots of paid ones.
Wes Bos
Rid. I'll tell you.
Wes Bos
like wherever your adapter says that GitHub would be a good example.
Wes Bos
that are on there. Like what database are you using? Oh, you're using MySQL. Are you using an ORM? Yeah, you're probably using WP query
Wes Bos
If you, the listener,
Wes Bos
is, yeah, this is, Jack McDade.
Wes Bos
It's more than that, but like you can like, So I thought that was kind of an interesting
Wes Bos
to pull that rid Sort of stuff out. What back end language are you using? PHP for sure. Mhmm. That's the only language that that runs in. I would go as far as saying Syntax 682, and that episode will pop up. But now because there's because it's a mess. Yeah, it's a mess. And like Chromes are slightly better. Like if you hover over a variable in Chrome, rid. Toilet seats that have been returned because they're not the same color. And who in their right mind would ever buy rid A used toilet seat off of Amazon.
Wes Bos
WordPress as a CMS, drag and drop your files up to it. So
Scott Tolinski
It is very syntax in a positive way. Oh, Working in isolation
Wes Bos
Prismic,
Wes Bos
want more CMS content or if you want, like, a rundown in React,
Wes Bos
Sanity,
Wes Bos
I clicked the deer on the statamic website. It just says, I promise if that tickle, I would not tell you.
Wes Bos
of course, you can do headless WordPress. But If you're choosing WordPress, you probably want a lot of so that you can do things and then you could also look into something like Astro, which is kind of you can use a a bunch of the different ones. I'm pretty bullish on Astro right now, folks. If you wanna a framework like Next. Js or SvelteKit or something like that. But it's not really something I want to do just yet. So like I'm kind of in this in between area. So what I did rid Infrastructure.
Wes Bos
Oh, yeah. This
Wes Bos
to that.
Wes Bos
the plugins and the whole ecosystem that sort of goes along with WordPress, right? And if that's the case, then You sort of have a lot of these decisions already made for you, right? Like how do you make components? Well, you have PHP files to do that. Look where you're getting this data. So don't design things around where you can just write the code in the editor and get it going. Yeah.
Wes Bos
your back end language and framework also dictate how you will do your front end? In some cases, the answer to that is yes. Like WordPress is a good example. If you are choosing What's the other one that everyone's talking about? Drizzle. Does Drizzle use SQLite? and then I just go,
Scott Tolinski
Re Hey. A great use case. Thinking of this in the same regard, Wes, I'm gonna ask you to go to this statamic website, which is a static file CMS that we used to use. And let me just look at this design aesthetic.
Wes Bos
there are so
Wes Bos
edited via this nice UI and then it will save to
Simple HTML/CSS hosting options
Wes Bos
Uh-huh. So Amazon is full of where do you host it? How do you host it? incredibly simple thing ever, right? Like that's that's even easier than
Wes Bos
And I thought, I guess finally, after one day of slamming it, I was like, you know what? I'm going to figure out what ready. Color this toilet actually is. I did the research and I found it. And then, like, I went to look for 1, and they're they're like $80 for toilet seat. I was like, there's no chance
Scott Tolinski
to do is to find a chip clip
Wes Bos
So hot tip.
Wes Bos
Sick. All right, let's move into some rid Sick picks. You got a sick pick for me today? Oh, yeah. I got a sick pick, and, In React world, there's Next. Js or Remix.
Scott Tolinski
for a full archive of all of our shows.
Scott Tolinski
Easy peasy, right?
Scott Tolinski
a,
Wes Bos
section on Amazon,
Wes Bos
Friday. Peace. Peace.
Scott Tolinski
It makes I I get it, Makes you know,
Scott Tolinski
because what it is is a chip clip it's a chip clip. I guess it doesn't really pick things, but hey.
Scott Tolinski
Head on over to syntax.fm and you don't wanna build your website in Rails, you're probably inexperienced
Wes Bos
hear me out for a second.
Wes Bos
Obviously, there's a slight chance you might get a used toilet seat in the mail, which is rid. Maybe wear a pair of gloves, but, like,
Scott Tolinski
improved life improvement here. Please don't tell me you got this at a garage sale.
Wes Bos
hundreds of different colors.
Wes Bos
that And rid. Or you can just start winging it. Like Scott says, you can start winging it right away in CSS.
Wes Bos
like one of these The short ones? Yeah. Yeah. It's it's so nice because you can just say, go to syntax.fmforward/
Wes Bos
our house our house that we moved into because that is a database that simply just sits as a text file in your folder. There's no like you don't have to run processes. There's no SQLite server.
Scott Tolinski
Me. It's not gonna be me. Because I knew It's not gonna be me.
Scott Tolinski
this thing is kind of a literal pick because it's not like an ice pick, but it's gonna pick Stuff for you. I don't know. I don't know if that even works at all,
Wes Bos
But
Wes Bos
Close enough.
Wes Bos
or an app. It's kind of interesting to see
Scott Tolinski
And don't forget to subscribe in your podcast player situations where you need more of this stuff.
Wes Bos
I've been wanting to do it for a long time, change all the toilets in our house over. But like our toilets are like this weird
Wes Bos
I am going to sick pick ready.
Scott Tolinski
are basically as well. There's nothing stopping you from doing that.
Scott Tolinski
perfectly fine sense.
Wes Bos
Ready. I'll just hit the toilet seat to close it and slam.
Scott Tolinski
I'm gonna be real with you. Every everything that you've said elaborate from there. If you are a little bit comfortable, Take that next step. Use something like Tailwind or Open Props, something that gives you but also because I'm probably the most comfortable prototyping things out
Scott Tolinski
So Yeah. I bought a 20 pack of really, really tightly
Scott Tolinski
or drop a review if you like this show.
Wes Bos
what people's approaches to this Type of thing aren't all the different choices that you need. Hopefully you enjoyed that. Let us know what you do. Tweet us out syntaxfm.
Scott Tolinski
For it was, like, $15 when I got them. Looks like it's $16
Wes Bos
ready. Big fan. That's probably the easiest way to get something online or In Svelte land, there's SvelteKit. In Vue land, there is Nuxt.
Wes Bos
Rid Do you hear me out? So toilet seats come in
Scott Tolinski
they're they're clamps. They're little metal clamps.
Wes Bos
rid. Doesn't have soft closed toilet seats. And
Wes Bos
and you literally drag and drop your HTML, CSS, and JavaScript. That's what I'm talking about. Boom. At the other end, you get a URL for it, which is like the most And
Wes Bos
for an FTP host and then SSH into it and figure out how to the end user probably doesn't care. No, that we change any of the tech stack, but
Scott Tolinski
metal chip clips
Scott Tolinski
They're they're just
Wes Bos
People are buying them on Amazon. It's not the right color. I'm going to return it. So I rolled the dice and said I'm buying a used toilet seat on Amazon to do websites, is not linear, meaning that it's not a set of nice, clean, crisp steps where you do one one thing next after another.
Wes Bos
So,
Wes Bos
for my friends who like a good deal,
Wes Bos
For $18 what happens when somebody presses the skip 10 seconds buttons and back 10 seconds. Rid. You control over quite a bit of that. And Ready. And We're not going to say it because a couple of you listeners
Picking backend first
Scott Tolinski
Rid Python and, there's Flask and Django are, like, the 2 big ones there. Either way, most of the kind of tooling or framework system or back end systems rid. Have kind of, like, happy paths
Scott Tolinski
okay. Well, shoot. I guess I'm going to be using WordPress, and I can do so headlessly with JavaScript, or I can do so with WordPress's templating system, or I can do so with Laravel
Scott Tolinski
And if you're front end experienced,
Scott Tolinski
if you are back end experienced,
Scott Tolinski
you should probably pick your front end first, and then let That dick that let that choice dictate where you wanna go. Right? I I'm, like, React React guy. I wanna I wanna use React for this. No doubt. Okay. Well, then your best options are probably
Scott Tolinski
you should probably pick your back end first.
Wes Bos
processor. So the actual calc? Color that is hard to find, right?
Scott Tolinski
rid Like I mentioned, if you wanna work in JavaScript, Rid Laravel. Blade. Blade. Yep. Yeah. Do you remember EJS? Did you ever use that one? Yeah. I used that one. Yep. EJS was really popular. Ready for I think it was for Django. Right? Is that what it was used? I remember it being used in, like,
Scott Tolinski
there's a lot of different options for back ends. You have, Next. Js, Remix, Astros, FELKIT, Nuxt. I'm sure there's many more. There's solid state, those types of things. PHP, WordPress, Laravel, Ruby. Rails seems like honestly the best option if you're, like, testing libraries If you the best way that you can start to visualize something coming together. Right? Yeah. It's it's
Wes Bos
How how do I wanna design this type of thing? Word.
Scott Tolinski
And, likewise,
Scott Tolinski
The thing that you are most confident and comfortable in and work from there, whether that is a back end or a front end.
Wes Bos
meta frameworks out there.
Wes Bos
those don't generally come with meta frameworks, but there's there's 1 built into every like there's an adapter for all of these Different frameworks out there. So
Scott Tolinski
Remix, Astro, or Next. Js. Right? So from there, that kinda dictates what you're using.
Wes Bos
for the way that you build a site with those paths. I I would say, like, it else if you're listening to this and you're, like, really not sure
Wes Bos
that's probably our go to, especially if you're a big fan of JavaScript. TypeScript But And I keep getting emails from literally every single person that works on a CMS.
Wes Bos
to create serverless functions that will handle things like API requests and connecting to databases and returning data. A lot of those nice things,
Scott Tolinski
Right? Would I would I have picked something else rid. If I wanted to work in Svelte, probably not. Right? It just makes sense to use the thing that's the easiest to use in that regard.
Scott Tolinski
And go straight up Laravel.
Scott Tolinski
For options,
Scott Tolinski
Likewise, I I use I like Svelte, so I pick SvelteKit.
Scott Tolinski
And in my mind, I think that is, like, a good way to optimize working on this stuff is to pick
Scott Tolinski
Ruby. Right?
CSS variables and dev tools
Wes Bos
some data that is outside of what you think. What happens when you have a really short title? What happens when you have extremely long any of the client side stuff, rid. But I also want to look a little future facing being like, well, I probably will write this in React at some point or write it in some component based framework.
Wes Bos
like, where is the line where the browser
Wes Bos
some better dev tools that would follow to these services. They're called Passes
Wes Bos
GitHub Copilot Mediasources.
Wes Bos
Will give you the computed value of actually what it's implementing.
Wes Bos
And I would love Payload,
Wes Bos
but CSS variables are kind of
Wes Bos
these So that is how you build a website find the toilet seat.
Wes Bos
building stuff.
Wes Bos
Yes. If you have it available. Right.
Wes Bos
Rid sometimes sometimes you get 1, and sometimes you get another. I wonder if at property, like, you need as many possible Syntax website I implemented Come on. It's funny. Like, you see, the DevTools went all out on Flexbox and Grid DevTools, the used toilet seat. No.
Scott Tolinski
and show you where they were defined and what they're pointing to and how they're calculated. Yeah. Imagine you hover over 1, and it would show you, like, like, a tree or something. This connects to this, connects to this.
Wes Bos
Or any of these AI things, they are very good at generating a bunch of random data, You can host it Templating out, making reusable components so that you can use things like your header, your footer, your newsletter.
Wes Bos
rid. Not a whole lot of data. Anyways, we're just complaining here. Let's keep talking about or you could you could even if If I were to go one step further, I would probably reach
Wes Bos
and that will often make your dev experience when you don't have the back end hooked up just yet. Much better because you don't have to like, glitch code sandbox, something like that rid. CodePen, I tend myself.
Wes Bos
Real data or fake data is a really good question. I like to go And like, I've sort of reached like the end of that being what I want to do for the next one.
Scott Tolinski
the, CSS I think the next thing would be, like, you'd actually have some things
Wes Bos
last name that cannot break In between, all those little edge cases A toilet seat. So Vercelli things
Wes Bos
they will often tell you the computed value, whereas Firefox will often just show you what it points to. Like if we have primary I tend it's much easier to write it in JSX versus 80, for SQLite, SQLite, And there's some sauce we put in the URL that will hopefully Alright.
Wes Bos
that's nice because you can use the actual data that's coming in. But sometimes, Does it include a CDN or do you have to configure that yourself? So I'm going to do it until I discovered values a little bit further And the larger the team you're on,
Scott Tolinski
I don't know.
Wes Bos
And where does it just give you the Open Graph Cards, I was doing a little bit design to the sizing and Platform as a Service, a server side templating language, With those types of things, you want to make sure that When somebody clicks on a show, they go to that page. When somebody clicks on a play button that the audio loads and when they push You have your back end languages, or at least just having a page where you dump every like Vercel is a lot more than just hosting, right? Like it's a CDN. It's a load balancer.
Scott Tolinski
re Typing per, like Houdini aspect of CSS came into play. I wonder if that changes things at all because that allows you to define a variable as a type. I wonder if that affects how it's calculated. We need better dev tools for CSS variables
Real vs fake data
Wes Bos
like React or Svelte or a framework Remix, session replay
Wes Bos
So we have that now. So check it out. Yeah, but can we go shorter, Wes? like, I even know Polypane has a feature for this is Sometimes you don't think about German last names Ready. And that's when you visit the Syntax website, there's like a big one for the latest episode and it's black. And then you have
Wes Bos
Or what what are the other ones that are really popular? Handlebars? What's the one that All of them on a single page Yeah. Just That's just shocking to me. Because you like, ready. Your Instagram story is always hilarious. It's like you're sitting in your backyard watching a movie, and then, like, a day later, you've got a foot of snow. We And, resizing pulled the computed variables off the
Wes Bos
deployment,
Wes Bos
Scott just There better be some toilet seat, Wes. Yeah. This is going to be the rid. Intersection of good deals and
Wes Bos
the episode we're talking about in Spotify because that's sometimes it disconnects. Okay, I see it on the website, but, like, I don't want to listen to it on the website. I want to listen to it at Spotify.
Wes Bos
either Is that on Itunes as well? No, it's not. It's just Spotify. This is it's a limitation of the thing. But If you often will shout out an episode,
Scott Tolinski
Can we go shorter? Oh, choices out there or if they're hungry for more. Yeah. The the hard part about CMS is is just like, well, there's all these options, or there's just good old WordPress building a website like Netflix Rid Chip clips. You know them. You love them. You gotta have them. One thing that Courtney and I are always struggling Right? And for unit testing, each of these languages probably have their own happy path for testing.
Wes Bos
So let's talk about like rid Let me know if you if you do that. Okay. Anyways, that's it for today. Thanks, everybody, for tuning in. We will catch you on Does
Wes Bos
Yeah, yeah. There was this thing called JavaScript NVC that used that to template everything out, It will also handle scaling so you get a ton of traffic. You. Do
Wes Bos
and turning it into HTML at the end of the day because There's very few people that are going to code up a header and then create a new HTML page, and then you have to copy paste the header onto the other one, right? Or maybe put some frames in there. That's what we did in the olden days where you have header HTML and you just have a frame set a show note time stamp, it skips to that value, right? And
Wes Bos
rid. Either
Wes Bos
Any of the number other frameworks that are out there, and that is going to both aid you in doing all of your routing, handling your image assets,
Wes Bos
every single case, show you
Wes Bos
in I was somebody was asking, like, how do you test that, right? Like once you implement it and Speaking of CMSs, You know, middle of the night, shake the whole house. Yeah. Super loud. Wake up the dog. Soft close toilet seat is the best.
Wes Bos
We're not going to do that right, so you probably need some sort of way to template it out. And that might look like,
Wes Bos
choosing a front end, like are you going to template it out in something and Likely, yeah, yeah. Likely you're going to pick something that will it's a little bit frustrating because then you got 2 things rid paddling against you.
Wes Bos
hosting,
Wes Bos
testing, when you use calc on a number,
Wes Bos
before Backbone Ready.
Wes Bos
Next, Like hosting itself has sort of ballooned Alright. I get it. You know? I get it. And I'm just gonna go wing it. And for a lot of people, they don't like that because they'd rather just follow every single step and do it linearly. But I can just kinda rid. Say, alright, I kind of feel like I know what I'm doing here. It'll probably deviate once I get into the code, but at least I'm on the right track, and I have Something that I can work towards because we could do that because it would have to be done Ready. It's just kind of like a alright. I I think I can see what I'm doing there. I do the same thing with recipes when I'm cooking. I'll read 3 or 4 recipes, He does a bunch of cool stuff, but, yeah, big fan of this design style. Yeah. Rid Yeah. It's, nice and Oh, I just clicked on the deer.
Wes Bos
aid you in templating out rid. Rendering library, React or Svelte or Vue.
Wes Bos
got popular.
Wes Bos
like like Pug you can go on Spotify and search that number. Like, you could go on on Spotify and search
Scott Tolinski
Like to jack things once we mention them, so we can't say it. Yeah. I'm I'm sending I'm just sending some links here. It is it's pretty attractive looking. So,
Wes Bos
But you can also choose a front end framework. Probably most if you listen to this podcast due to the type of person that listens to podcast, you're going to reach for sent me a short domain name that's available.
Wes Bos
That's pretty.
Wes Bos
I don't know, syntax. Fm/6/82.
Scott Tolinski
EJS. Blade? Was one. What does Laravel use? Rid. Statamic was one of those. Bolt was another one. Do you remember the static file CMS, Wes? Yeah. That was a trend in CMSs for a little bit. Yeah. And a used toilet seat regardless. Off the Internet? They work really well.
Wes Bos
JavaScript NVC
Wes Bos
So you can use the same header on every single website.
Wes Bos
I like it. Yeah. Okay. We'll we'll think about that one, folks. We'll we'll keep you we'll keep you on the loop if we decide to go with it. Yeah. Next Next thing we have here for choosing is like you need to choose what you're gonna build your front end in here. And maybe I should rid. Outline all of the major topics we're hitting on this episode. You have the design. You have your choosing your front end components. You have your data database, possibly CMS.
Wes Bos
and then whatever else we rid.
Scott Tolinski
that's true. Rid Yeah.
Design systems vs creative design
Scott Tolinski
You wanna get the most turnkey already predesigned for you thing out there and then just make it look nice.
Scott Tolinski
I think if you if your design if you're an engineer straight up and you don't know design, if you wanna work in Ruby
Scott Tolinski
where you're at in that scheme. Okay? I'm building a website.
Wes Bos
rid To people?
Scott Tolinski
And I I I just got mad. I was like, you know,
Scott Tolinski
What is my level of design background?
Scott Tolinski
Aspects of things to build out a more standardized system.
Wes Bos
there is a button on the Syntax website for each episode, which will click you through to Spotify.
Scott Tolinski
Always just use a fully it's fully designed premade thing that you can and then But really,
Scott Tolinski
can get right into
Scott Tolinski
is not cute.
Scott Tolinski
Limit my designs in a very specific way because you don't necessarily get that playfulness that you can get with Figma, Moving things around, dragging things around, getting that kind of quick feedback loop. You're more or less working on the structure.
Scott Tolinski
Rid Me, personally,
Scott Tolinski
Designed by engineers These heavy duty chip clips, these things Either way, you're working on these components in context of where of which they will live on the website. I'm designing a header. Hey. It's gonna go in the header of the website, And I'm gonna see it in action.
Scott Tolinski
And everybody's like, oh, well, this is so needed, and you click on it, and it looked like dog. Beep. It looked awful.
Scott Tolinski
in the
Scott Tolinski
And If you were to I'm sure I have some screenshots of this somewhere. But, like, if you were to look at some of the first versions of the syntax site, it is apparent that, like yeah. I swear. I was on Hacker News the other day, and there was, like, an open source YouTube alternative.
Scott Tolinski
that it is like a system based design and not a, like, creative based design. And I I think that is definitely limiting, which is one of the reasons why I like working with designers so much. But if you can't work with designers, it's kind of about knowing your limitations. Right? You kinda have to know and then letting the design kind of come together that way. So instead of rid. Designing and then going from design to website. I'm like, And then I can just see that div resizable. Now Storybook offers way more features in terms of, you know, interactively passing props and having all your knobs and widgets and and tests and stuff in there as well. But and your data. Now the big question is, do you need a content management system or not? Hey. A content management system essentially is there in place so rid that nontechnical folks can add and update content without having to get into markdown. Don't ask your nontechnical folks to make a GitHub account
Wes Bos
rid on other hosting platforms, right? is take one of those meta frameworks
Scott Tolinski
That's, like, an aesthetic
Scott Tolinski
Am I comfortable with design? Alright. If you answer, not at all. I'm not comfortable with design.
Scott Tolinski
They coulda used a design system or premade anything, and it woulda looked a lot better. And they're like, why don't you fork it and do it yourself? It's like, Okay. Well, I'm just you know, that's positive feedback right there.
Component design approaches
Scott Tolinski
it. Docu you need to document those things.
Scott Tolinski
Mhmm. For the most part, the idea of building them in place versus in isolation means that in isolation, I'm working on the system. I'm working on Grabbing a font scale, grabbing some colors, grabbing some palettes, and then just tossing things out. And I think that does limit
Scott Tolinski
Storybook or history are the way that types rid way people do things. And in fact, another way that's kinda underlooked is something that I do sometimes.
Wes Bos
a grid of 2 by 5 or whatever of the latest show cards. And then when you go to the show's page, that's also the show card, right? Because they look a little bit different and they act a little bit different, or or maybe do. Maybe force those lazy back end devs to actually give you that data. But sometimes people are just throwing in, it's not all the way computed. I don't know what the
Scott Tolinski
And In isolation is something that you'd see in libraries like Storybook.
Wes Bos
and say, okay, well, I'm making a change to the card
Scott Tolinski
big projects.
Scott Tolinski
in isolation.
Scott Tolinski
You can see a component,
Scott Tolinski
Has multiple people working on you get dumped on by snow. Of course,
Wes Bos
So you're trying to size that big number. You want to make sure, oh, make sure it doesn't go too big and make sure it doesn't go too small. And There's a lot of tricky trickiness when you get into those Yeah.
Wes Bos
But they are primarily the same card. So when I was working on those cards, it was nice to be able to have
Scott Tolinski
different contexts,
Scott Tolinski
In my experience,
Scott Tolinski
How do you build and test these components? Well, you could have couple options for building these components. You can just throw them on a page because having a database Not a fan of those. And also plastic chip clips, they don't last rid Straight up, you might think you're going cheap. They they break over time. Every chip plastic chip clip I've ever had is broken over time.
Scott Tolinski
You're building out a big project. It has a lot of components,
Scott Tolinski
Making sure it works
Scott Tolinski
You need to make sure that they work in various use cases.
Scott Tolinski
works much better on long term
Wes Bos
or these different situations where they might be right, like where it's really wide or really small, especially because we are using container queries.
Scott Tolinski
There's another way of working on components, though, and that's quickly in code and seeing it kinda form in a browser.
Do you need a CMS?
Wes Bos
Although you might not use
Scott Tolinski
what types of things do I need out of my CMS and which CMS do I need? Exactly.
Wes Bos
I was simply just saving JSON files to disk. And then I wrote a little function that just said.
Scott Tolinski
If you just have straight up static content on a website, you might not need a database at all. Let me tell you.
Wes Bos
Rid. Let's see here.
Wes Bos
you About any of this type of stuff, I would probably say your go to right now would be pick 1 of the big as well as But then you probably also need like a server, right? So they'll give you The ability
Wes Bos
SQLite That's a lot of work to figure out what actually is it, though.
Wes Bos
It simply just sits. And a lot of the adapters that you might end up using Prisma SQLize.
Scott Tolinski
That's never gonna work. So if you have nontechnical folks who need to update your content, rid. You most likely either, 1, will need a CMS or, 2, you will need to be comfortable writing that back end piece. And that back end piece rid Has a lot of moving components to it. Now these types of things are made a lot easier if you're using a system like
Scott Tolinski
A database is great if you want to save data and retrieve data, update ready. Have that data be available later.
Scott Tolinski
instantly adds a massive amount of complexity to your app. So you have to consider that as well. Do I really need this database? the lock screen? End to end too.
Scott Tolinski
honestly,
Scott Tolinski
but all the time complaining,
Wes Bos
And then you can switch to it without having to rewrite any queries. But honestly, ain't nothing wrong with rid Sticking stuff into
Wes Bos
Yep. Yeah. Drizzle does Aesculate, though I might even reach for that because is pointing to yellow and yellow points to yellow 3,
Scott Tolinski
a text file Yeah. On your on your computer. Yeah. I know people often wanna go high-tech for their solutions. Right? Because It feels like, hey. That's how I'm supposed to do it.
Scott Tolinski
Should be a question that you ask yourself. I find myself whenever I'm But, you know, people look at these frameworks, and they say, I gotta use Next. Js. I gotta you could You could just return that react and then rehydrate it if you want. You can do all that yourself. It's not the most fun.
Scott Tolinski
What type of database do you need? And, Hell no. I am not buying
Wes Bos
might be able to make use of a ORM like Drizzle or Prisma or Sequelize.
Wes Bos
Like, get or set
Scott Tolinski
do you remember the the static file c CMS was a big thing for a little bit?
Wes Bos
Basically, those would just write to file, right? Tina's U. S. Is similar Text, buttons,
Scott Tolinski
I will do things to avoid using a database
Wes Bos
or Esqulate,
Scott Tolinski
the database conversation is interesting. People get really, really passionate about which Databases they choose and which databases they like to work in. Do you even need a database? you get 20 of them, so you got you got 1 when you need 1. Either way Awesome. Doesn't doesn't matter which one you get. Just mass get a bunch of chip clips, rid Toss them in a Tupperware container in a drawer or something. That way, when you got it, you're not just wrinkling up that bag and hoping that beer doesn't get in. Oh, these look nice. Yeah. We have the, like, IKEA ones that you have to, like, lock.
Scott Tolinski
Or, likewise, if I feel comfortable making this all custom myself, which by all accounts, I've done it many times. It works fine if you if you wanna do it that way.
Varied fake data
Wes Bos
that were spoken in every single episode.
Wes Bos
they'll be like, it's a 6 minute read. Yeah. It's like, well, We don't have the infrastructure
Wes Bos
What I did is I just had a browser open with and
Scott Tolinski
A number one thing that you see with inexperienced
Scott Tolinski
that would be a big pain in the ass. It would probably slow the site down more than it's rid. It's it's worth. Yeah. And that's funny because some designers might look at that and say, it's no big deal you have the words. Why don't you just count them? And they're like, well, let me tell you. Because the Way to do that efficiently would be involved having to write a database process that then we gotta update the schema. Yeah. Yeah. I'll send you're indexing things that you didn't index before. Yeah. Rid. Exactly.
Wes Bos
queryable by the database and you had to like select them all and then loop over and count them, then rid. Just playing around with features like when I was doing the early work for the AI and transcript stuff,
Scott Tolinski
If you have that if you have that structure for it to output, it's pretty reliable in getting you something like that. If not, you can, do some work to get you some fake data really quickly. There's also tools like re Faker are some of these things that that get you data fast, but, you know, you don't need to install a dependency to get some fake data, especially if it's just temporary. But I a 100% agree. If you have rid. The ability to have real data, get that real data, or at least if it's temporary or short data, get that in there. Making a Fake data entirely only works if that fake data has variety.
Wes Bos
So being able to account for all of those And also,
Scott Tolinski
and publish markdown changes. Then they gotta learn what a PR is. No. That's not gonna work.
Wes Bos
because, and I want to be I want to make sure that I'm not goofing it up or light or dark mode And do all the loops and everything that I'm used to.
Wes Bos
Podcast titles. Some of the podcast titles are like 400 characters and some of them are 8 characters.
Scott Tolinski
If you have if you have 2 lines of text, Their entire design goes out the window. They they they just don't have that experience. Right? So being able to set yourself up for success there will make That when you actually do use real data that you don't end up having an oopsie daisy. Now all of a sudden I have to deal with line height and it looks bad. What do I do? Ready. Yeah, when I was doing the, work more globally,
Wes Bos
sometimes designers will just, like, make up things
Wes Bos
15 of them for the metadata that has been set on the window. So I think it's like navigator.
Wes Bos
thrown in. Like, for example, on some of our stuff, I wanted to list the number of words Because I knew Yeah. How do you test it? You play a show, you lock your screen and look at it with your eyeballs.
Wes Bos
if those words were not come on. That's a good deal.
Scott Tolinski
designers rid is they'll give you a mock up, and they'll have, like, 9 cards or something. And all 9 cards will have the exact same title that are the same length. Right? They don't go on to 2 lines. None of them go on to 3 lines or whatever. They have no plan.
Wes Bos
at a database level. But if it wasn't from thing to thing. So let's start with the design I can't possibly think of other people's names.
End-to-end testing
Scott Tolinski
within the web space. Now it makes sense in other spaces where you're not going to ever do that, and granted most people won't ever change rid Large aspects of your site.
Wes Bos
is ready. Makes a lot of sense. There's actually
Scott Tolinski
From React JS Working in isolation makes a lot of sense. If you are working on a website and it's just a website you and your buddies or just you are gonna be working on, there's there's no need to add Storybook to that thing or rid. That type of flow, it's just gonna slow you down. Totally. I for the Syntax website, we have, like, a show card component.
Wes Bos
You can check if the object is what you're expecting, right? That's a unit test. But.
Wes Bos
that's why, like you said, testing for the actual features and that it actually works in the browser when it's all put together Mostly because
Scott Tolinski
and did not change a single end to end test.
Scott Tolinski
Scoped
Scott Tolinski
So that's the one reason I don't love
Scott Tolinski
But having something that uses it the same way a user does inside of a browser is extremely
Scott Tolinski
The integration test. How do you test Building a design system out
Wes Bos
if those if if we were to literally change the entire
Wes Bos
You can unit test it really easily, right? You can you can click on a play button and then you check I put you on to that. So Metadata.
Wes Bos
tech stack,
Wes Bos
one thing somebody asked on Twitter the other day is how would you test that? And I thought this was really interesting.
Scott Tolinski
to Svelte and this works well if you're trying to move fast. Right? I'm maybe already hitting a database. I have the data ready to go, or perhaps it is fake data, or perhaps it is temporary data that is real but not final.
Wes Bos
handy. Yeah. It makes a lot of sense if you think about like that has everything you could possibly want. Exactly. Actually, well, maybe that's a bit of a next one is choosing a back end language or a framework.
Scott Tolinski
level up tutorials more handholding If you're very comfortable with design, yeah, go just straight up CSS to the dome. You know? Don't add anything else in there and and go nuts with it. Maybe use some post CSS or some helper libraries here or there or whatever.
Scott Tolinski
One time, I rewrote
Scott Tolinski
Well, I'm I'm sorry. You couldn't test Specifically, if the lock screen had the information on it. But you could check that metadata because you have access to JavaScript. You're just To the DOM. Yeah. You could do that in end to end test, but you
Wes Bos
MediaSource,
Wes Bos
The
Meta frameworks
Scott Tolinski
because that can really get in the weeds. Again, you're having to get into rid Really language specific tooling for testing. And maybe you're very comfortable with that stuff, and that's fine. But if you're not,
Scott Tolinski
Any kind of situation you're gonna find yourself in. You'll find people talking about what is the specific way of testing.
Scott Tolinski
down to to to code. Right? You you've worked on your rid. You have it working to some degree. You understand what you're using for bits and pieces of it. You you have at least something on the page, And maybe you wanna start testing it. Some people are like crazy about testing where they want to do test driven design. They wanna test each individual function at any given point. Re They wanna test every single unit of your site, and that's called unit testing. Right? You have any individual function. That function is getting tested.
Scott Tolinski
and then test to make sure that things are where they should be,
Scott Tolinski
These 2 things are basically, They don't matter. It doesn't matter if you're writing your app in JavaScript, Django, I just put them in a div and make that div resizable,
Scott Tolinski
Ruby on Rails, PHP, whatever. These things literally open up your site in a headless browser and then run JavaScript on that page to implement clicks
Scott Tolinski
Lot of unit tests unless you're working on a big, big time app If you wanna go someplace that has a lot of simplicity and you can pick your own front end framework is to use end to end testing libraries like Cypress or Playwright.
Scott Tolinski
Now my
Scott Tolinski
Meaning that they don't care how you built your app, and that to me is extremely valuable.
Scott Tolinski
you probably don't need
Scott Tolinski
Yeah. Yeah. Once you've really kind of nailed down that, you could just pick your tools and start start going with it.
Scott Tolinski
Humble opinion is that unless you're you're working on big time stuff, And have them in context, Django or Rails, these types of things that can scaffold out these pages for you, Yeah. Yeah. I started going to kids and family members. Yeah. I you know, but If you have a data schema, that's a good point. If you even have your data schema or you have a general idea of your data schema or you can just even write, like, a, Like a really quick rough data schema, copy and paste that, send it into an AI tool, and say, hey. Give me a 100 of these things.
You may not need complex hosting
Scott Tolinski
Yeah. You don't have to do all that stuff.
Scott Tolinski
and CSS
Scott Tolinski
on FTP and have it work the same way I did in In 2005, straight up?
Scott Tolinski
yes. You can do that
Scott Tolinski
you don't need all that stuff. Sometimes you do. Sometimes you don't. There's a there's a whole spectrum of different types of projects we're working on here. So if you're the type of person who's listening to all of this and thinking, gosh, I really don't feel like I need all this stuff. Hey. Perhaps you don't. Yeah. Ready. One thing I love about Netlify as a host is they have this netlify.com/drop,
Scott Tolinski
drag it If I'm, you know, if if I'm primarily a a PHP dev, well, then that is going to dictate,
Scott Tolinski
So I can just I I hear people or Facebook in the exact same bucket Those are, like, kind of 1 step in between a fully custom and a CMS. Right? So if you need a CMS that's full featured, re Hey. That puts you in a very specific territory. Alright. Now I need a CMS. I gotta start thinking
Scott Tolinski
Crazy ways.
Scott Tolinski
work Websites being too complex nowadays or there being too much stuff to do.
Scott Tolinski
in more interactive
Scott Tolinski
work faster,
Scott Tolinski
or, you know, whatever my at to lend to lend dot ski, my website. Right?
Scott Tolinski
To make these things Yeah.
Scott Tolinski
Could I write my website, personal website, with HTML
Scott Tolinski
have requirements
Scott Tolinski
Then Yeah. You get into
Scott Tolinski
or
Scott Tolinski
People put
Scott Tolinski
to a shared hosting plan
Scott Tolinski
But, also, You can also just use straight up HTML. You know? I mean, HTML is a
Testing components
Wes Bos
But when you use calc
Wes Bos
on the colors page, I need to fix this because it's slammed up against your colors. But I I wrote a component that
Wes Bos
the value is computed.
Scott Tolinski
Yeah. And and that's a whole thing. And people often feel like if I wanna test these things or look at them in isolation, I now have to bring in some other dependency or and that's the whole thing with Storybook. It it's its own process. Rid its own whole entire app that runs within your app. You don't gotta do that if you don't want to. We have 2 pages on the the syntax website that are live that you can see, and they're sloppy because we're they're just there for our own personal use, but we made this stuff public. Right?
Wes Bos
components that can literally live anywhere.
Wes Bos
HTML document and then just dumped them in here, and it was nice to be able to see it. It's kind of interesting. Some of them, Man, I love being able to give out those URLs Rid. Valid.
Wes Bos
Rid so I wrote a little component that grabbed them all off of the Strapi, Tina, or if you want us to have, like, 4 people from these different CMSs on rid. Talk about us. Let us know because I don't know if people are just exhausted by all the CMS's
Wes Bos
Ishmael document. So like any variables you put on Root, I was having trouble trying to figure out that you have there. So you can pick up a design tool 682. You know, also, another thing, I never we never talked about this when we talked about the new website is if you listen on Spotify or iTunes, ready.
Wes Bos
what they actually were computed wise, you know, if you use calc or clamp or anything like that.
Scott Tolinski
Forward slash syntax. Rid. F m forward slash components and forward slash theme are 2 kind of dumping grounds that I made to dump things in to test them. The the forward slash components is a page where I just can throw any single component in, and it will show it Narrow. It will show it wide. It will show it extra wide and then show it in a movable container that even outputs the width of the container so I can see and test directly. And this these are just, like, quick little things. I also have, like, an inverse section as well. And then the forward slash themes allows me to see a component in all the different read. Themes. So that way, if you wanna test something out and see how it adapts to different themes. Yeah. Yeah. I use this stuff all the time, but you don't need fancy tooling for this. You can just go ham with it. Yeah. Yeah, it's pretty
Transcript
Wes Bos
something we've done.
Wes Bos
Do you work in components in isolation or do you build them in place? I'm keen to hear about the effective work workflows.
Wes Bos
Welcome to Syntax. We got one today for you. How to build a website or an app? We got a really good question From someone. I'll just read it real quick because it gives you kind of an idea of what we're talking about is, hi, guys. Love the show. A question for both of you. What is your actual workflow Toilet seats for $18.
Wes Bos
Rid. What are the low level steps you follow? Do you use a design, And if that's the case, rid. Building them in isolation hey. Astra's where it's at. It's pretty safe. Take a look at it. But basically these you'll hear this word thrown around a lot is a meta framework, and essentially what that means is you're taking your
Wes Bos
rid the data or do you use mock dummy data and then wire it up later?
Announcer
You're listening to Syntax, the podcast with the tastiest web development treats out there. Strap yourself in and get ready. Here is Scott Talensky and Wes Boss.
Wes Bos
Figma, pen and paper, something else? Do you wire up the API and first output Boom. Got the nicest soft close and run with it and then figure out what CMS do I want to tack onto this? How do I want to write my CSS and