RedwoodJS - bring full-stack to your JAMstack
Tags: webdev, graphql, react, opensource
Published: 2020-11-23 12:32:25

Jamstack is a new architectural approach with the core principle of pre-rendering aiming to make web applications to:

- run faster,
- be more secure,
- be easier to scale.

All that achieved with the use of many modern tools to bring productivity to the maximum. Sounds interesting right? This approach is gaining a lot of popularity which makes a market for new tooling supporting the Jamstack approach. RedwoodsJS is one of the new shining stars, its team believes that JAMstack is a huge leap forward in web development and they are doing their best to make it even more pleasant to work with.

## RedwoodJS

Redwood is an open-source project initiated by **Tom Preston-Werner, the co-founder of GitHub & creator of Jekyll** - one of the first static site generators. So what is Redwood?

>*Imagine a React frontend, statically delivered by CDN, that talks via GraphQL to your backend running on AWS Lambdas around the world, all deployable with just a git push—that's Redwood.*

RedwoodJS is a highly opinionated, full-stack, serverless web application framework that aims to make building and deploying JAMstack apps as easy as possible. 

## The stack

RedwoodJS uses some of the most popular cutting-edge technologies and by giving up the freedom of choosing your tech stack, you are gaining a significant reduction of the level of complexity of setting up all services to make your infrastructure work as intended:
- **Frontend** - this part is covered by React supported by Apollo and it has a lot of code generators involved which let you create everything i.e. routes, pages, cells (even with already pre-configured tests) out of the box.

- **Backend** - it's becoming difficult to talk about cutting-edge technologies without putting GraphQL into the equation. Redwood uses Prisma for its GraphQL backend, enabling quick creation of backends with graphical interfaces.

- **Deployment** - Redwood's development team has support for several deployment targets on their roadmap with a top-priority to make deployment strategies in a way that makes it easy for additional targets to be added, as well as to make it easy to adjust to user's own deployment strategy. Right now it offers out of the box deployment to Netlify and Vercel, with AWS and Google Cloud Run high on their road map.

![Diagram presenting RedwoodJS structure](https://dev-to-uploads.s3.amazonaws.com/i/p32md5jhdkhlag3so2zi.png)

##### Source: [redwoodjs.com](https://redwoodjs.com/)

## Concepts & features

Redwood features a lot of new interesting concepts as well as brings a breath of fresh air to well-known ones. One of the most interesting ones are definitely:


- **Cells** - they are one of the signature modes of abstraction in Redwood. Cells represent a declarative approach to data fetching which creates space (by providing conventions around data fetching) in between the request and the response which Redwood can utilize to perform its optimizations. All of this without writing a line of imperative code.

![RedwoodJS cells concept](https://dev-to-uploads.s3.amazonaws.com/i/ks04kszc0y62p5g52f60.png)
##### Source: [redwoodjs.com](https://redwoodjs.com/)

- **Redwood Router** -  Redwood features its own router that took inspiration from React Router, Ruby on Rails and Reach Router. It brings some awesome innovation to this crucial part of your app.

![Router in RedwoodJS](https://dev-to-uploads.s3.amazonaws.com/i/afvf9ns7ov841wiga8s5.png)
##### Source: [redwoodjs.com](https://redwoodjs.com/)

If you interested in more detailed information about Redwood's concepts and its implementation make sure to visit [the official docs](https://redwoodjs.com/docs/introduction).


## Not a 1.0 version

RedwoodJS software has not reached a stable version 1.0 yet.
Its team put Redwood in the later stages of the "make it work" phase in the "make it work; make it right; make it fast" paradigm. Although this makes it not suitable for production use, Redwood is a concept that is definitely worth following.

---

## Speed up your GraphQL schema development

*GraphQL Editor* is a supportive tool for both advanced GraphQL users as well as those taking their first steps with GraphQL APIs. Our all-in-one development environment for GraphQL will help you build, manage & deploy your GraphQL API much faster. **[Try GraphQL Editor for free!](https://graphqleditor.com)**


[![New features of GraphQL Editor gif](https://dev-to-uploads.s3.amazonaws.com/i/hz2iv2u1073dy9orexxf.gif)](https://graphqleditor.com/)