- Master Fullstack Development and finally ship a product
3 years ago
You already know that I'm pretty frustrated with the way we do things on the web. In order to fetch a list of things and display them as rectangles on a webpage, we need to jump through 1938137 hoops. What is this, Circus Charlie? Anyone? Remember that game??? I'm old 😭
The process of making a web app is so unnecessarily complex and so many people are going for a SPA even when it's not needed. GraphQL makes working with an API easy, but it still involves building that API, and writing a lot of boilerplate. You might not mind all of that until someone removes the layer for you. And that's Blitz.
"Damn, I just want to fetch some data directly from the database and display it!" - You, probably
"You can do that with PHP and raw SQL..." - Someone on HN, probably
"LMAO" - You
"Well, why don't you use Rails?" - Someone on Reddit, probably
"Welp, too bad there's nothing similar to Rails in the React world..." - Someone on Twitter, probably
"Hey, what if there was a Fullstack React framework, similar to Ruby on Rails?" - Blitz, if it could talk, probably
Meteor crying in the corner, probably
Blitz "removes" the API layer in a very clever way so you can directly call functions from your backend, which completely changes the game. Actually, this is not the best way to describe what it does, so you better read the docs. TL;DR: it's magic.
What I like about Blitz is that it builds on top of already solid solutions like Next.js, react-query, and Prisma. I already used them in other projects, but I love the way Blitz glues all of them together and it magically works.
The ability to get whatever you want directly from the database, with the nicely typed API from Prisma, and then just display it, is a pretty wonderful experience. It makes me feel that for years we had no frickin' clue why we did things the way we did them until finally someone realized that we don't have to do them that way.
When generating a new Blitz app you get all the authentication boilerplate generated for you and I all I have to say is fucking finally. It's 2020, I don't want to build the authentication layer again, and again, and again, and again. Hey frameworks, just let me get me the current user with
const user = useCurrentUser() and don't bother me with anything else.
I can't even describe how fast you can ship a product when there is no API layer and boilerplate involved.
There are similar frameworks to Blitz which go in a completely different direction by rebuilding most of the stack. Personally, I'm tired of the React community constantly reinventing things that don't need reinventing. Next.js is already amazing, so just imagine how much code we'd be able to reuse if we all agree on using it by default. More reusing, less reinventing, please.
I already did two streams with Brandon, the creator of Blitz, and I couldn't wait to actually try Blitz on a real project. The problem is, I needed a real project because I didn't want to waste my time on some demo gibberish which is never going to see the light of day.
I got frustrated by the app that I was using for writing changelogs for Sizzy, so I decided to sit down and write my own tool with some more advanced features that will make the process easier.
I livestreamed the entire process from "hello world" to deployment and I couldn't believe that it only took me only 5 days.
Actually, the majority of the work was done in only 2 days, which is crazy. Someone commented "my boss shouldn't see this" on the stream and the credit for that goes to Blitz. You can definitely ship faster than a team of people who would argue about the modeling of the API, raw SQL queries, and whether to use redux-saga or RxJS for fetching the data.
Hey Kitze, if you finished most of the things in 2 days, why did it take you 5 days?
Great question, reader.
I built Fungarzione - The app for keeping your users in the loop and I wrote a separate article about it.
I still have to explore Blitz a bit more to figure out all the downsides, but I think that I'd definitely pick Blitz for most of my future apps unless I have a really specific reason not to. Brandon said there will be a way to reuse the same Blitz client in React Native apps, so you won't miss the actual API layer.
Thanks for reading! Subscribe to the newsletter?
How to use the src directory and absolute imports in Next.js
The saddest "Just Ship It" story ever
You're either a Zero or a One
How I tricked my brain into working out 24 times in 30 days
GitHub stars won't pay your rent
An underrated way to keep up with web development
GPT-3 is the beginning of the end
How to magically free up gigabytes of disk space
Fastest way to thoroughly uninstall apps on macOS
A better way to manage multiple monitors on macOS
The best Stream Deck alternative: Make your own!
Introducing Fungarzione: The app for keeping your users in the loop
Generating social media images by screenshotting React components
Pomodoro with accountability