Playing with RedwoodJS, an opinionated, full-stack, serverless web application framework

Forest
Forest
Photo by Caryle Barton on Unsplash.

When I listened to the React Podcast episode about RedwoodJS two weeks ago, it sparked a lot of excitement in me. I wanted to try it out immediately. After working with it a bit, I’m still impressed but also see where this framework needs to be polished.

In this article, I want to share my thoughts about it.

What Is RedwoodJS?

Redwood is an opinionated, full-stack, serverless web application framework. It works with the JAMstack and aims to make full-stack web application development and deployment easier. It is initiated and led by Tom Preston-Werner, the co-founder and former CEO of GitHub.

Redwood is based on the JAMstack. That means your front end should be pre-rendered during build time and deployed to a CDN to achieve faster loading times and better scalability. These static sites are enhanced by JavaScript executed in the client to serve additional assets or to connect to your APIs or third-party services. …


Image for post
Image for post
Photo by Kevin Ku on Unsplash

Testing is important to ensure the quality of your software. One part of that is to write unit tests. For that many tools exist in the JavaScript World, e.g. Jest, Jasmine or Mocha. Just to name a few.

Coming from frontend focused development with React, I love Jest for writing and executing my unit tests. Knowledge gained in that domain would be great to be applied in the Azure serverless functions world. Well, when you write your serverless functions in Node.js that’s possible.

We first need to create an Azure Function App to have functions we can test in the first place. …


Coding
Coding
Photo by Ilya Pavlov on Unsplash

I’m really like React Query. For me, it makes backend communication with my React application much easier and let me abandon Redux or the Context API to manage data from the backend in my fronded.

Get data from your backend with useQuery was quite straightforward for me, however, useMutation introduced some sort of complexity.

Let’s say I have a function to update a journal entry for one user in my backend.

import axios from 'axios';

interface journalEntry {
id: string;
title: string;
content: string;
}

export const updateJournalEntryforUser = async (journalEntry: journalEntry, journalEntryId: string, userId: string) => {
await axios.put(`/api/journalEntries/${userId}/${journalEntryId}`, …

About

Tobias Meyer

I’m a self-taught web developer who loves React, the Jamstack and serverless architectures. Lives and works in Munich. Opinions are my own.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store