back to indexMonsterUI: Beautiful Python Web Apps in Minutes

Chapters
0:0 Introduction
0:25 MonsterUI Overview
1:25 Cards Example Deep Dive
3:5 What MonsterUI does
8:28 Semantic Typography
11:5 Iterating on UI
13:5 AI context usage
14:45 Style discoverability
15:35 The vision
17:0 Isaac’s experience
18:33 How to get started
21:22 Stay in touch
00:00:03.800 |
And today I'm joined by Isaac to talk about his new project 00:00:20.160 |
and just jump straight into showing off this thing 00:00:24.080 |
that you've built. This is an example of something 00:00:32.520 |
And so Monster UI is providing the components for this. 00:00:36.400 |
And it's got some neat things, like as I'm scrolling, 00:00:38.720 |
you might see, watching, that the thing on the left-hand side 00:00:55.320 |
This is written in Monster UI, a little ticket popped up 00:01:05.760 |
And for all of these things, I can look at the code, 00:01:29.520 |
Be interesting to see how to build this, perhaps, 00:01:36.840 |
and I noticed, actually, it's even got some functionality, 00:01:39.300 |
like clicking on these Xs makes them disappear. 00:02:34.080 |
is that there isn't very much Tailwind or CSS or whatever. 00:02:49.880 |
you're just saying, oh, I want to space the stuff in here. 00:03:05.640 |
It feels like someone like me, Isaac, who's not 00:03:08.560 |
at all really a designer, I feel like you've built this for me. 00:03:13.800 |
I should be able to make something look this nice. 00:03:17.880 |
Is that the idea, without fiddling around with CSS 00:03:29.160 |
build websites that really look nice without tons 00:03:49.000 |
can make production-looking apps without knowing 00:04:16.280 |
And so the first thing we should mention, of course, 00:04:21.560 |
because we are actually building on top of their work. 00:04:27.720 |
But a big difference here is that in Franken UI, 00:04:44.720 |
with lots of somewhat inscrutable kinds of classes 00:04:57.360 |
actually, this is tasks, so let's go back to tasks. 00:04:59.920 |
The difference here is that your code basically 00:05:24.760 |
and taken advantage of FastHTML to use that kind of syntax. 00:05:30.680 |
But you've also added some defaults and things. 00:05:39.400 |
One of the things you see-- there's lots of examples. 00:05:53.360 |
And you've got some nice descriptions of that 00:05:55.280 |
here as well, showing how I can change those things 00:06:00.840 |
But out of the box, you get pretty good defaults. 00:06:06.280 |
I mean, you'll always have small things that you want to modify 00:06:13.080 |
And when you need to, you can use Tailwind directly as well, 00:06:19.840 |
And one of those examples I recognized as actually 00:06:28.680 |
So this is kind of bringing in some of the best bits 00:06:30.760 |
of multiple frameworks under a single unified banner. 00:06:45.560 |
So that's another thing that's integrated in as well. 00:06:51.920 |
Yeah, any of this code where it has the code highlighting. 00:07:01.440 |
So this site, of course, is written in FastHTML and Monster 00:07:14.800 |
Actually, if you go to C code, I can show you 00:07:19.480 |
So if you look for card T, there it is, cardT.hover. 00:07:28.720 |
And just people not so familiar with FastHTML, 00:07:36.280 |
We should also mention that Franken UI, in turn, 00:08:07.480 |
to ShadCN for inspiring a whole lot of this, which 00:08:20.200 |
taken their inspiration, even for the examples 00:08:31.800 |
I mean, there's a lot of stuff in this documentation here, 00:08:36.720 |
So the way we can see all the different kinds of semantic 00:08:42.520 |
HTML you can use, and if we can see highlighting and citing 00:08:47.560 |
and quotes and dates all mapped to a mark to highlight 00:08:59.120 |
This kind of semantic HTML is not so common nowadays, 00:09:01.520 |
but I think it's a kind of thing that might actually 00:09:06.040 |
help me to be able to write things that work well. 00:09:18.520 |
and this cite element, and this EM for emphasis. 00:09:49.800 |
think people spend a lot of time deciding what 00:09:58.280 |
going to cover a lot of the things that you actually need. 00:10:01.880 |
And by default, they're all going to look reasonable. 00:10:04.800 |
A lot of people don't realize that there's actually 00:10:12.400 |
And I see here you've got all this stuff added to it, 00:10:38.440 |
that if you just use the defaults almost all the time, 00:10:42.920 |
you get something that looks reasonably good. 00:10:52.640 |
that are really important for differentiators 00:10:57.560 |
Kind of gets you 80% or 90% of the way there, 00:11:16.240 |
means that we can then change payment method to payment. 00:11:32.640 |
And I think that's kind of nice for experimenting 00:11:37.960 |
So for example, maybe I wanted to change the border 00:12:07.160 |
Is that something you use a bit as you're doing it? 00:12:11.920 |
Yeah, I always use it, and I'm always doing it. 00:12:13.960 |
There's things like, if you're doing UI kind of all the time 00:12:21.040 |
that there's a border 2, and a border 1, and a border 4, 00:12:25.880 |
I don't use it enough to have that memorized. 00:12:32.000 |
Also things like DiceBear, which is an icon service. 00:12:34.680 |
I can see you're using that to get these automatic icons, which 00:12:41.680 |
I feel like this is perhaps one of the best, or maybe 00:12:54.160 |
and instead basically having the designers work directly 00:12:57.360 |
with the HTML, potentially using language models. 00:13:04.680 |
one thing that I love that you've done with MonsterUI 00:13:09.040 |
is that you're following the LLMs.txt standard. 00:13:16.560 |
And so I did actually grab this really nice list of examples 00:13:26.880 |
and so forth, which I added to Visual Studio Code. 00:13:32.960 |
And I do find that I could grab this and say, 00:13:45.720 |
change this example to use a left-aligned div container 00:14:30.880 |
And because it's built on top of Tailwind, the stuff 00:14:36.960 |
that LLMs already know and that designers already 00:14:39.560 |
know about Tailwind, you can still take advantage of. 00:14:44.440 |
Although perhaps the thing I like best, though, 00:14:56.640 |
So I can select from options or my different lower-level text 00:15:13.640 |
So it's cool that for a class, you can have not only a string, 00:15:16.720 |
but you can also have these enums you've built, 00:15:19.920 |
tuples of them, tuples of enums and strings, just strings. 00:15:27.960 |
You can use addition if you don't like tuples. 00:15:36.480 |
So this idea of a server-side kind of rendered library, 00:15:52.960 |
It's not something that we've necessarily quite seen before 00:16:01.880 |
for making coding dramatically easier for everybody, 00:16:06.400 |
both humans and AI, without losing any of the flexibility. 00:16:13.680 |
So you've got the full power of all HTML, all Tailwind, 00:16:21.200 |
It's not like the kind of dashboard-type things 00:16:26.080 |
which give you your own little mini-language. 00:16:42.640 |
Yeah, what's your experience been like of using 00:16:49.400 |
this kind of very new and fairly revolutionary approach 00:16:58.480 |
I actually always wanted to do a lot of web app development 00:17:02.720 |
because sharing what you build with other people 00:17:19.480 |
I had a really tough time with trying to set up 00:17:24.600 |
It all felt very complicated, lots of config files, 00:17:33.360 |
I found the styling was still challenging for me 00:17:36.800 |
in FastHTML, which is when I started building Monster UI. 00:17:46.400 |
I was having trouble with some of these services 00:17:55.240 |
And I built a SQLite-backed Twitter thread generator 00:18:08.560 |
And it's styled with Monster UI and Tailwind. 00:18:15.880 |
It takes a little bit to get used to, a paradigm. 00:18:23.560 |
And it allows you to simplify your code and move really fast 00:18:34.080 |
So to get started, folks can just pip install Monster UI. 00:18:43.560 |
what I just did, which is pasting some of the examples 00:18:46.360 |
into VS Code or Cursor or Vim or whatever and run it. 00:18:53.880 |
And then you go to localhost colon 5001, play with it, 00:19:25.600 |
to get started with FastHTML and Monster UI, Isaac? 00:19:34.160 |
which has a lot of HTMX examples to understand a little bit more 00:19:40.760 |
But yeah, I'd say just kind of start playing with stuff, 00:19:45.480 |
I think going through the API reference for Monster UI 00:19:49.480 |
It's not an API reference like you go through 00:20:00.240 |
There's examples built in that are practical. 00:20:04.520 |
You can try and shrink them and see if they're 00:20:15.040 |
can see what a blog card might look like and the code for it. 00:20:21.400 |
what's there is the visual aspect of the docs as well. 00:20:25.680 |
And all of these examples are actual running web applications 00:20:49.200 |
that the code on the left works because the code on the left 00:20:55.640 |
That's the whole code for infinite scroll, which is crazy. 00:20:59.160 |
And so yeah, OK, so I mean, that's not Monster UI, 00:21:01.400 |
but it's kind of Monster UI and FastHTML go hand in hand. 00:21:06.200 |
And these kind of-- nice to see some of these Daisy UI 00:21:15.400 |
will start adding some more Monster UI to the gallery 00:21:24.280 |
and what they feel is missing, what they want to build. 00:21:32.880 |
can add issues, PRs for new components, and so forth. 00:21:37.600 |
Yeah, can't wait to see what people built with Monster UI. 00:21:42.800 |
And thank you for the folks behind ShedCN, FrankenUI, 00:21:51.960 |
Yeah, and thank you for your help and support. 00:21:54.480 |
Not just today, but throughout the whole process. 00:21:57.640 |
And look forward to seeing what everyone builds soon.