During the early weeks of the COVID pandemic back in 2020 I built a simple tool for churches. Being unable to meet together in person, many congregations turned to online services of one kind or another. While for many this involved Zoom, there were many who found this technology difficult to use proficiently, including church leaders.
The tool I built was called Church Service Planner and it enabled non-technical users to create online services by dragging and dropping a choice of elements into page. Text, video, images, Bible passages and so on could be added in any order. Once complete the service could be shared by email or WhatsApp message so that individuals could access the content on whatever device they preferred to use.
Church Service Planner got a fair amount of interest, with lots of churches signing up to use the system. It’s still being used now by a small selection of users who continue to find it helpful for internal service planning or sharing content with members of their congregations who are unable to meet in person.
Fast forward to last week and I decided it was time to develop a new SaaS tool, building on some of the things I learned creating Church Service Planner.
The 37 Signals Approach
Having heard DHH speak at WeAreDevelopers in Berlin in the summer, I’ve been listening to the 37 Signals Podcast, ReWork. A few things which regularly come up in their conversations have struck a cord with me:
- Small agencies and individual developers can build great SaaS tools
- Embracing constraints and keeping things simple and retaining focus is key to success
- Tech stack doesn’t matter to customers, value does
I guess I’ve been put off attempting to build anything more than a niche tool with a limited lifespan due to the need to create something which can be maintained and managed over an indefinitely long period of time.
Time to get over my fears and jump in!
Tech Stack
I’m a full-stack developer, which basically means I’m not an expert at anything! However, after nearly 20 years of building websites and web applications I consider myself proficient at PHP development and front-end development. My new Saas project will be built using:
- PHP
- MySQL
- HTML
- CSS
- JavaScript
Nothing fancy. Nothing I’m going to need to spend months learning before having the confidence to use in public.
Database Design
This is something which takes a bit more thought, as a bad decision at this stage could make things difficult further down the line. I’m trying to consider the obvious ways the project might grow over time, or the kinds of things customers might want to do with it in the future.
The basic structure looks something like this:
- Users
- User 1
- Organisation 1
- Apples
- Oranges
- Pears
- Organisation 2
- Apples
- Oranges
- Pears
- Organisation 1
- User 2
- Organisation 1
- Apples
- Oranges
- Pears
- Organisation 1
- User 3
- Organisation 1
- Apples
- Oranges
- Pears
- Organisation 1
- User 1
In order to not shoot myself in the foot I’m creating a slightly larger structure than is strictly necessary. Each User could have access to just a single Organisation, but I think it would be helpful for Users to be able to manage multiple organisations within a single account. Each Organisation will have an individual subscription.
I’m creating fields for everything I might want to store in the database at this point. I’ve worked with systems which have stored data as JSON within a single database field, but this creates problems down the line. Better to create a database structure which can be easily queried on any field than one which can only surface particular details.
The database structure really is key to any project’s success. New interfaces can be built on top of a database at any point. Re-structuring a database once it’s home to lots of customer data is a different story.
Interface
I made a start building the first few feature of the tool, such as:
- Registration
- Login
- Subscription management
- Profile management
Initially I built all this without applying any layout or styling – just plain old HTML. Once I was happy with the registration and account management processes I began building more structure for the interface. I worked through quite a few changes of colour scheme, font choice and layout options before landing on something which felt sufficiently robust.
Here’s a little glimpse:

Again, nothing ground-breaking here. The whole point is to create an interface which feels trustworthy, familiar and simple. This tool is aimed at non-technical users who don’t have time to waste learning how to use complex systems.
I’ve built structures for all the key elements of any app:
- Navigation
- Forms
- Alerts
- Panels and text content
- Lists
- Cards
Within the development version of the tool I’ve built a ‘Design Patterns’ page, into which I’m adding each new interface element the system requires. As with most tools there’s lots which can be re-used between modules. This ensures the design remains familiar and predictable. When new elements are required I’ll build them into the Design Patterns page first, to ensure they work alongside pre-existing elements.
Ajax
Lots of web apps are built using tools like React which provide Ajax-style interfaces (Asynchronous JavaScript and XML). While I’m not loading content into any pages using Ajax, some forms are submitted via Ajax to end-points which process the submission. I’m happy with how this is working, it offers a choice when it comes to form submissions and UX.
Security
Ensuring the validity of any request is vital to the security of any SaaS tool. I’ve built structures to support this across the tool, ensuring data is only visible to those who own it, and that any form submissions are pre-validated. I’ll be adding reCaptcha type tools to registration and sign in forms, as these are increasingly targetted by spam bots. This tool will be handling personal details, so ensuring the security of the platform is a priority.
Week 1 Complete!
I’m hoping to build my MVP (minimum viable product) over the next few weeks – ideally by end of November at the latest. So far progress has been swift. I’ve re-arranged my working week to ensure I can dedicate plenty of time to this project, whilst my enthusiasm remains, and also keep on top of client projects.
I already feel like I’ve learned a lot through the process and am enjoying seeing what was just a thought a few days ago become reality.
