DatoCMS + HardyPress: a journey into the magical world of SaaS
At Cantiere we long cherished the dream of working on a product of our own. Maybe we've made it. About two years ago we quietly released DatoCMS, a headless CMS built for static websites, and a month ago we started a new adventure with HardyPress, which aims to fix WordPress's security and performance problems.
For years, good old Matteo Papadopoulos and I drew inspiration from thoughtbot's philosophy and way of working to chart Cantiere's future.
In a sentence: a company that is as transparent as possible, developer-centered, actively involved in talks and training events, that pursues quality in its work, its clients and its people's lives, and that finds the time to release open-source projects and share insights about our world.
As ridiculous as a direct comparison would be in terms of size, in our own small way we can say we've put more than one piece in place in each of these directions, and that makes me extremely satisfied personally, especially given the difficulties of operating in an Italian context that isn't particularly supportive, let's say.
One piece of the puzzle was always missing, though, and a particularly important one: building in-house products. I firmly believe that the natural evolution of the quality and experience a web agency can build up over the years is creating a product of its own, where it can express its skills fully and continuously.
The advantages of working on a product
Agency work is by nature fragmented, irregular, "spiky": in practice it leads to an operating strategy focused on reacting rather than acting strategically with a medium-to-long-term view. However well you plan your projects, it's hard to get visibility beyond 4-5 months. Everyone who works at an agency is used to switching contexts and knows their commitment to a project has an end, an expiration date. There's no negative connotation here: depending on your personal inclination, this can be more than positive. Frequently changing context and domain can give you energy and fresh lifeblood.
What is definitely negative is the rather random cash flow that comes with it. And invoice payment practices in Italy don't exactly help. A product undoubtedly offers more predictability, upfront payments, more peace of mind when budgeting investments, and greater scalability potential in the long run.
DatoCMS
The first version of DatoCMS was born in about 100 hours of development as an internal tool for building static brochure websites quickly. We could have kept it that way, but we really liked it, it had actually solved a huge problem for us, and the alternative available at the time (Contentful) had outrageous pricing plans and no specific integration with static sites. Maybe our internal tool could make sense for someone else too, out there on the Internets?
Almost two years ago we made the first alpha launch of DatoCMS, our first attempt in this direction. Over these two years we've spent another 800 hours on development and 150 more on documentation and customer support. We've spent zero euros on marketing, working only on the site's SEO with a series of landing pages optimized for keywords related to static websites: one of the benefits of choosing a market niche is that if you solve a real pain point, users come to you on their own.
After roughly 6 months of completely free use, which let us validate genuine market interest, we finally released the first paid plans. The joy of seeing our first paying customers was unbeatable. Today we're at an MRR of €900, with linear growth of about €200-300/month, and 200 active sites using DatoCMS every day, 80 of them on paid plans. About 500 publishing actions are performed every day.
Along the way there was a Product Hunt launch that went beyond our wildest expectations. Slowly, never taking on excessive investment, and following users' wishes and requests, we've arrived at a complete product that takes very little day-to-day support effort.
DatoCMS has effectively become one of the widely recognized and cited options for hooking a CMS up to a static site.
More than once we've considered stepping up our effort on this project, perhaps through an external funding round: we concluded it's not the right move, at least not right now. We like the idea of continuing down this path of slow, progressive discovery and organic growth; it seems the choice most consistent with the type of product and its highly vertical, specific nature.
We'll try the alternative path, external funding, with a second project: HardyPress. But that's another chapter.
HardyPress
The HardyPress project grew out of a cross-pollination of ideas, and that brings me enormous joy. Without DatoCMS, HardyPress would probably never have been born. Claudio Benvenuti, a developer at Cantiere at the time, looked at our DatoCMS and asked a seemingly naive question: what if WordPress could get the performance and security benefits of a static site?
Lance at the ready, our hero got to work in his spare time. Within a couple of months he showed us the result of his frantic late-night coding sessions: a Rails application that could run WordPress in Docker containers. WordPress stayed up only while content was being edited, on a "hidden" domain. Once the edits were done, you could request a static export of the frontend straight from the WordPress interface and publish the result to an S3 bucket.
All great, but would the average WordPress customer ever accept having to log into a third-party system to start up their WordPress installation? Good old Claudio had actually already thought of that too: by reverse-engineering the hashing mechanism WordPress uses to store user passwords in the database, he had built a Rails login panel identical in every way to WordPress's, which authenticated the editor, automatically started the Docker container and logged the user into WordPress completely transparently.
As simple as it was brilliant. Dirty, ugly, hacked together the way only Claudio can, but it worked. And we loved it. No need to update WordPress or its plugins, zero maintenance, zero security issues, static-site performance for the final website. And apparently nobody had thought of it yet. Wow... could that be?
The idea had huge potential, Claudio was more than convinced he should work on it full-time, and we knew we had in front of us one of those rare people with the right determination to get results. After a few months of Hamlet-like doubts about what to do and how to organize ourselves, we decided to join the venture.
We were all aware that HardyPress would be a project requiring substantial investment; it was no longer a market niche à la DatoCMS, and there was still an endless list of problems to solve, stemming from how heterogeneous the WordPress ecosystem is: how do you handle contact form submissions? What about search? And how do you promote a product when the keyword "wordpress hosting" costs around €4 per click? How do you scale this kind of infrastructure and make it cost-effective?
In May we submitted the project to Hubble, Nana Bianca's accelerator. With no expectations, more as a smoke test and litmus test of possible outside interest than as an actual strategy to solve our problems. Surprisingly, out of more than 250 submissions, we were among the four startups selected.
They really liked the project, and the founders of Nana Bianca knew they had skills and business connections to bring to the table. Within 48 hours we decided to accept the offer. The acceleration program started about a month and a half ago, and yours truly and Claudio are currently working like mad to finalize a first public launch. More news and details will follow soon, so stay tuned :) In the meantime, you can take a look at the HardyPress website to get a clearer idea of the product.
Wrapping up
Over these two years, as a partner and with the support of all of Cantiere, I decided to jump in on the front line and invest most of my working time in building SaaS products, cutting my teeth on topics that were relatively new to us: business plans, funding, building sensible pricing plans, customer support, documentation, ways to gather constructive feedback and metrics, user acquisition strategies, and so on.
Our stated goal is to reach financial sustainability that lets us gradually shift internal resources toward this different kind of business, which may suit our identity better than agency work. It's too early to declare victory, but so far the indicators tell us that, one way or another, there's good hope this vision can become reality.
A tip for other web agencies dreaming of a product: start doing something small right away, without waiting for the stars to align. Working on DatoCMS, even with a very low initial effort, gradually gave us more confidence that we could make it, and opened up opportunities on many fronts, including new business for the agency.
Go for it!