Slender Stack Development

Chris Davis
4 min readJul 8, 2019

--

A lightweight tech stack for building SaaS products

TLDR

  • Use Bubble for frontend/UI
  • Flask hosted on Render for backend logic (if needed)
  • MongoDB for additional storage (if needed)

I often refer to what I call The New Moore’s Law:

Every two years the complexity required to build products for the web is cut in half.

This trend is currently spurred by the rise in no-code platforms and is reflected in marketing aimed at “citizen developers” within enterprises.

We de facto developers use these platforms to create internal tools and, increasingly, to build our own SaaS products.

Therein lies the rub.

Despite the abstraction layers that exist today, trying to tackle full stack development when the intention is to build a product versus pursue a career as a software developer is still overwhelming. For every Webflow and Zapier and Airtable in the market, there are several complex professional tool chains that stand in the way of bringing one’s ideas to life.

Seriously -

This is just for the front end…(image by Kamran Ahmed)

I like to think I’m reasonably technical (I don’t know many people who’ve written a web scraper in Excel VBA, for example), and I still think that’s a daunting list.

Kudos to the teams employing all of those skills to develop products that enable the rest of us. However, we don’t necessarily need to adopt those tools for ourselves.

My time at the gym looks a little different than what Serena or Lebron might experience, and that’s ok!

Similarly, I shouldn’t worry about building a continuous deployment pipeline for my React app using Express/Node with a containerized MongoDB backend for my product that helps soccer teams manage the snack rotation.

I think there’s a better way.

A Slender Stack

My recommended tech stack blends the ease of use of no-code platforms with the robustness of code. It features cloud-based applications because discomfort at the command line should not be a limiting factor.

Frontend

If you’ve followed the no/low code space at all over the last few years, then you’ve likely come across Bubble.

I say without reservation that Bubble is the easiest way to build a web application today. The Designer-Workflow-Database paradigm in a singularly hosted environment provides an essential foundation for builders. Throw in the API Connector and your potential is virtually boundless.

For my money, Bubble is the Excel of the web — and with their recent capital infusion, they are well on their way to becoming just a ubiquitous.

With Bubble, the app designing process is collapsed into the coding. Rather than making a design in Sketch or Figma and handing off to a developer to reproduce, your work is done in the same workflow.

Likewise, instead of using a prototyping tool like Marvel, you can design your app down to the pixel along with intended interactivity, then deploy to production with the push of a button.

Another plus is that user authentication and data security come batteries included giving you even less to worry about.

Backend

Like Excel, you could do everything in Bubble if you really wanted to, but sometimes that’s not wise. If you’re building anything that requires advanced business logic or data processing, it’s worthwhile to split that functionality out into a Flask app as a microservice of sorts.

Flask is an opinionated choice in that I think Python is easier to learn and the framework is simple, yet extendible. Django is overkill in a lot of cases in this context.

Creating this modularity will make it easier to test which becomes extremely important due to how quickly you can make changes in Bubble. It’s easier to break things therefore debugging and refactoring can be difficult once you reach 10s of thousands of requests to your app (speaking from experience).

Should you need a separate datastore, MongoDB is a good choice. Set up an instance in the cloud with Atlas and use PyMongo or PyEngine to read/write.

DevOps

I recommend hosting your Flask app on Render because of its simplicity and cost effectiveness.

Plus, it’s a forcing function for putting your code on Github. Even if you’re only using the web UI, building a workflow around creating branches for changes and testing before deploying will save you a lot of heartache — and Render makes it easy to do that.

Additionally, Bubble’s test and live environments have version control baked in, allowing you to roll back to a previous version when necessary.

Wrapping Up

There’s not a lot of content around how to build and maintain intermediate-level applications. I think the Slender Stack approach provides a methodology for moving quickly when you’re solo or part of a small team, while also yielding a solid foundation that can support you as the app grows.

Resources

Here are some resources you can use to improve your skills in each of the areas:

Additionally, If you’re interested in seeing a sample application with detailed walkthrough, drop me a note at christophergdavis@gmail.com

--

--

Chris Davis

Analytics Engineer & Startup Advisor. Bootstrapping @Bootstrapital (very meta).