At HipSquare, we've recently been working a lot with headless content management systems (CMS). After a large Contentful project using Gatsby as a static site generator, we're currently working on another large project using Strapi as a headless CMS and Next.js to generate a mostly statically pre-generated website with some additional dynamic pieces and API routes.
In parallel, we're working on a few other projects, mostly building web and mobile applications. In terms of technical requirements, they're usually quite similar:
While working on the backend portion of our apps, we've come to realize that a lot of the backend work is somewhat repetitive, while not providing a major competitive edge to the apps themselves. What users interact with is the frontend, which therefore should be optimized for usability, speed, and branding.
Of course, our app frontends need a backend to accompany and enable them. The backend needs to be stable and secure, provide low latencies and be open for future enhancements. However, the specificity of our backends tends to be very low: They usually provide authentication and authorization and a number of CRUD-style API routes to interact with an underlying data model.
These types of backends are a commodity. They need to perform well to enable user-facing features, but you won't gain a competitive edge with them.
Realizing that most of our backend developments are mere enablers for a great frontend user experience, we started thinking about backend solutions that would allow us to scale backend development easily, quickly bringing new projects up to speed, permitting us to rapidly bootstrap a backend system with its basic functionality, a custom data model and API routes based on that data model that supports role based authorization based on that data model.
Looping back to our headless CMS projects, we were wondering: Is there more we can achieve with the technology? So far, we've used headless content management systems and Gatsby and Next.js for classical website delivery, and it's worked great. What we'd like to do in the next few posts on this blog is to take you along a small journey to use Strapi as a configurable backend system for a small web application.
The questions we'd like to answer for ourselves:
What we'll attempt to build throughout the next weeks will be a classical to do application. We will