It’s 2019. Next.js/Nuxt.js are pushing the boundaries of what SSGs are capable of, and are surging in popularity. The ‘Let’s Recreate Rails’ era questions if we can take this paradigm even further. Why don’t we create full-stack applications in one framework, in the same vein as Rails?
Eleven years after the launch of Jekyll, Tom Preston-Werner et al started working on a new project in the SSG space, Redwoodjs. Calling Redwoodjs a static site generator is misleading, however. The ambition for the project is far greater:
We’re looking to be a modern replacement for something like Ruby on Rails, so think full-on web application vs a blog or simple eCommerce site.”
Redwoodjs is about bringing the full stack to the Jamstack. It has a React frontend, talks via GraphQL to a backend running on serverless functions, and is all deployed with a Git push. It’s an opinionated framework that puts developer experience at its heart.
Like many popular SSGs, Redwoodjs started with a set of core philosophies:
Just like Rails, Redwoodjs makes heavy use of CLI generators to rapidly create boilerplates for your components, layouts, data migrations, and more. You can also use the CLI to deploy your site directly to popular hosting providers.
Redwoodjs is purposefully pushing the boundaries of what’s possible with Jamstack. It’s a new approach to building web applications and has flexible solutions for Auth, makes accessibility a first-class citizen, and uses the popular database toolkit library Prisma for your data layer. The project is aiming to have a production-ready 1.0 launch in early 2022.
The Angular community finally had their answer for SSGs in 2019 with Scully. Scully follows a similar model to Gatsby:
The magical part of Scully is its use of the Guess.js library and machine learning. Scully automatically finds all the routes in an existing Angular project and prerenders an HTML page for each. If you have an Angular project you’re looking to bring to the Jamstack world, look no further than Scully.
Prisma 2 had recently been released; Next.js was seeing massive success. Brandon thought if he could pull all these pieces together into a full-stack framework, he could bridge the best of both worlds between Ruby on Rails and React.
Brandon started with a set of core philosophies for the new framework:
Before long, Brandon had the first version of Blitz.js.
Blitz.js shares many similarities with Redwoodjs:
Their vision is slightly different, however. For one, Blitz.js sits on top of Next.js, whereas Redwoodjs is a standalone tool. Brandon himself differentiates the two:
Redwood is tooling & conventions for traditional SPAs. Blitz is not a traditional SPA. The end UX of a Blitz app is the same or better than an SPA, but the DX is like a traditional server-rendered MVC app.
The emergence of these full-stack frameworks may feel like we’ve come full circle. In many ways, we have. This time around, we have tooling that blurs the line between frontend and backend. One language, one framework, with batteries included. It’s going to be exciting watching these frameworks evolve.