I chose CSV uploads over complex UI for my MVP, and I'm proud

I had this idea for a tool that helps people copy Cloudflare firewall rules from one domain, hosted in Cloudflare, to multiple others. So, I decided to quickly build an MVP.

Cloudflare forum question

The origin for the idea

Integrating with Cloudflare’s APIs was straightforward, as they kindly offer SDKs. The real challenge? Designing how the system would manage the inputs.

You’re probably wondering why that would be a big deal - let me quickly go through the user flow:

  1. Input a list of Cloudflare API account credentials
  2. Fetch all zones belonging to those accounts
  3. Select which zones you want to copy the WAF rules over to
  4. Apply the rules to those zones

Seems simple? Here’s the kicker - the app needed to accept thousands of entries. That was the main value proposition.

I explored different interfaces that would be both intuitive and scalable for managing large volumes of edits. I realized that a familiar tool — the classic spreadsheet — was a perfect fit!

example spreadsheet

Behold, a beautiful spreadsheet

At first, I considered embedding it directly into the app. Then I thought: why not let users handle their edits offline, and upload their specs via CSV files? This approach also has the advantage of not requiring my service to store any confidential data.

Thus enlightened, I duct-taped a couple of file upload components. The first allowed users to upload a list of account credentials and generate a CSV containing all the zones associated with those accounts. They could then review and filter the zones they wanted to copy over, offline.

export Cloudflare zones tool

With the second file upload component, the users could provide the list of zones where they wanted to copy the firewall rules over. Once the user uploads their target zones, the app reads the CSV, validates the entries, and kicks off the copy operation — all without needing to retain any sensitive data server-side. Users stay in full control of their credentials and configurations, and I saved myself days of work by avoiding complex in-app editing features.

copy Cloudflare rules tool

And that’s how configberry.com was born! You can try it out your very selves, it’s completely free.


I started this blog because I wanted to have conversations on topics that I find interesting. So, feel welcome to reach out to me, even if to challenge my perspective. I'm on LinkedIn; please add a message when you connect. Alternatively, use this hideous contact form; include your email address if you'd like me to reply.