
DoBu.uk
Displays availability and takes booking enquiries
I've done a couple of updates in the last year and Fly.io haven't charged me anything because the costs fall below the thresholds. Even if they did charge me, then it would start by using my credits they gave me when I did a job interview there.
I guess I will have to pay for domain renewal at some point and of course there is my time which you can argue is more important if you want to be nice to me.
While I have been mostly ignoring dobu.uk, it's been serving one user and collecting new signups. I have a small list now that I can reach out to.
Something in my personality must have cracked as well because I am considering cold outreach.
I just implemented time zones, I removed the multi-month view which nobody wants and improved the single month view. Removing stuff had a big improvement looking at it from the inside.
I rewrote the calendar code, made it simpler, faster and increased test coverage.
Ideally I would remove a lot more stuff and clean up the code base. However I have set a deadline to put the project into maintenance mode. So we shall see how much of this gets done.
Presently I have one user who is happy. I'm confident that there are more out there, the problem is that it is all taking too long.
This is because I took the classic engineer path of pushing the boat out as far as I could on the technical side. I wrote a lot of stuff from scratch, which has a lot of benefits, but high risks.
On the plus side the project has few dependencies or costs. So it can be parked while I survey the landscape and think about what I have done. I won't want to stop SEO altogether; it's something which takes time anyway. So stoking it occasionally and leaving it on a slow burn seems like a plausible idea.
If I were to start the project again I would probably try a "barbell" strategy of writing the core calendar components from scratch and use a lowcode tool like budibase for everything else.
Something I'd like to do now is allow the whole thing to be configured through a Google workspace plugin. Assuming that is viable. Which has the added benefit of being available in the marketplace.
Developing the core of the application from scratch is not a huge amount of work, maximises freedom and performance. The core of the product is where your edge is (if you are a technical obsessive), so it makes sense to perfect that.
However all of the CRUD around it, that users rarely ever interact with, just needs to work on some basic level to enable the core to shine.
Oddly a lowcode/nocode service and a low/no dependency app have the same property of being low maintenance. At least I'd consider it a bug if a nocode created app required major maintenance on a regular basis.
1 Like
Comment
Most products don't have documentation which presents the necessary settings widgets inline. Nor do they show extended validation for the settings in the context of the current document.
I have started implementing this for the following page:
https://dobu.uk/how-to/link/forms
You can select a user profile (or not), enter a link URL and save it for the selected user. Also it does some limited validation.
It's easy to see why most software does not have this just from the difficulty of implementing it. Essentially it makes the docs a programming and UI challenge like any other part of the application.
Meanwhile I am convinced it is worth it, at least to some extent. Just now I started using logtail which was essentially a case of copy and paste because they inserted my keys into their code examples which were in the main UI.
Most likely Pareto applies here and one quickly runs into diminishing returns.
1 Like
Comment
I added the ability to populate an external form field in a bout 5 minutes. It lets the customer inject the selected date into another forms product. For example you can populate the date hidden field in Typeforms with a url template like "https://xxx.typeform.com/to/xxx#date={year}-{month}-{day}"
String substitution is really easy to implement for a programmer. However it's horrible for a user to figure out how to construct the URL. The best way to deal with this would be to integrate properly with the forms product.
Never mind that for now though. There are trillions of forms products. The best I can do right now is document it and maybe use to heuristics to validate the URL.
The best documentation I have seen uses live data for the logged in user. If no one is logged in then it just shows an example or a login link.
Requiring the user to login to see the docs would not be smart. Apart from damaging SEO I often use mobile devices to look at docs where I am not logged in.
Making the documentation interactive is some work. However I quickly realised, while trying to figure out how a bunch of forms products worked, how much better it is if the docs are directly connected to the app.
1 Like
Comment
I have replaced the boxes of text with bullet point lists. These tried to make a bunch of points that belong in long form articles if anywhere.
For many products I ignore the landing page and go to the pricing table. Usually this includes a list of features which actually says what the product is.
It's funny but a lot of the time I can't tell what a, apparently successful, product does at all. The landing page states its benefits, which are often nebulous, but I don't believe them.
It's only when the ends can be connected with the means that I begin to believe.
Having said that my landing page is probably still not selling the benefits enough. Or the means for that matter.
Let me know what you think: https://dobu.uk/
1 Like
Comment
Trying to host a distributed HA KeyDB cluster as a Fly app does feel a bit like putting a round peg in a square hole. However it is working.
I have a master-to-master replication setup across regions. Most operations are done on the nearest instance. A handful are done on a central instance so that they are atomic.
This means most reads and writes are quick and that I don't need Upstash anymore.
More importantly the calendar and enquiry forms work and are quick in the regions where I have a server. I still need to implement timezone selection to get users outside of the UK, but it helps to actually show them what it will look like.
It takes between 4 and 40ms to serve the availability calendar page on Fly's smallest VM. This includes fetching the data from the DB.
1 Like
Comment
To cut a long story short I switched from a self managed Redis instance to Upstash and I'm not happy.
I'm on the fly.io flavor of Upstash and it behaves horribly with my app outside of Europe. In fact it's slower than my Redis instance in the home region.
The pricing model also seems like a trap.
Part of me wants to try porting my whole app to pouchdb and couchdb. I'm ignoring that part.
After switching to Upstash my brother reported from Tokyo that the website wasn't working. Ironically it worked better when I had a single Redis instance in London.
I don't know how much is my fault and how much Upstash, but I do know that keydb exists.
This allows master-master replication or writes to any replica. Most of my application can be made to work with eventual consistency.
So in theory this will make it mostly ultra low latency even in Australia.
The bits that are difficult to make work with eventual consistency, I just write to one instance. If that instance disappears for a while then I swap to another.
The reason I switched to Upstash was mainly because Fly.io turned off the Redis app to save space on the physical machine. Apparently VMs with volumes take several hours to migrate between machines (I didn't wait for that).
Clearly I should have a HA setup, but Redis seemed to be a pain in this regard. So I left it for future me to deal with.
Anyway I think I can swap to writing locally and dealing with eventual consistency piecemeal.
Which is good because I should be working on marketing right now. Or integrations or mostly anything else.
The problem is that I can't completely ignore the rest of the world while focusing on the UK.
Search engines, random WordPress users and various services I integrate with access the site from distant IPs. I at least need to support these in some capacity.
1 Like
Comment
I'm convinced that a dev with low costs can find a profitable niche in any software segment.
However if your customers are a small group then finding them can be an issue.
Contacting individuals is perhaps the best way. But this can be creepy and annoying when done wrong. Ideally you want them to solicit your attention... I'm leaving this to my partner for now.
I'm currently working on the long tail of keywords for SEO, e.g.
https://dobu.uk/blog/wedding-design
Doing SEO is like watching paint dry.
I have also tried some advertising, but so far it looks too expensive. However it does provide data and it's extremely easy to setup.
Finally most signups actually come from the WordPress integration. Once I laid the foundations for SEO, I think I'll go work on integrations.
1 Like
4 Comments
4 Comments
-
1
Any examples of whats working best with your SEO?
-
1
I can only talk about the results on my technical blog (richiejp.com) which has had time to develop. All the things that have worked for me I see repeated fairly often on Indiehackers.
-
The the vast majority of traffic comes from one article because it hits a pair of keywords which are searched for, but there is little content. That is, it hits a niche.
-
Technical SEO; that is, do a site audit with ahrefs and Google/Bing search console then follow the advice. Manually request indexing.
-
Internally link content relevant to each other.
-
Create external links to your content.
I think that without 2-3 your website won't even get indexed in a reasonable time. I noticed that on dobu.uk a page had been crawled, but not indexed for weeks.
-
-
This is a (draft at time of posting) article I have written for SEO and because people ask Christine how she setup her website.
"How Christine Palethorpe, wedding harpist, takes bookings and runs her website."
Overview:
Customer acquisition with Wordpress and social media
Displaying her availability with DoBu.uk and Google calendar
Taking enquiries with DoBu.uk
Tailoring her packages to each customer
Finalising the contract with Gravity forms and Zapier
Invoicing
1 Like
Comment
Every so often I realise a word doesn't exist in international English. Apparently "enquiry" is one of them. Americans always use inquiry. To me inquiry is pronounced differently and means something serious is afoot. Possibly involving parliamentary committees and lords. Perhaps ending in serious jail time for someone.
Enquiry on the other hand, is the type of thing you do to find out if someone can take photos at your wedding. Hence why it's embedded throughout my website.
Meanwhile it has become increasingly clear that my MVP is not an MVP. It in fact contains an enquiry form which is unnecessary. It could integrate with any forms package by populating a hidden field.
Logically there is a case for me to include a limited form for clients who have no appetite for configuring Gravity forms, typeform, simpleforms, superduperforms, ...etc. However there is so much lower hanging fruit.
I am already stepping into a densely saturated market with creating an availability calendar. Then stepping into two by including a form.
I think I have always known this, but was in denial about the extra complication having a form would bring. Any extra feature has cascading effects into every aspect of development and marketing.
So why did I do it? I think because my flagship user said they just want a form that works better than the Google form they were using at the time. I went ahead and provided that in the initial release.
I came up with a way to avoid CAPTCHA and making users type their e-mail in twice. This get's my ego's juices flowing, but at the same time, these are viable products in themselves.
There is a huge difference between implementing a feature and creating value.
So do I just kill the form off? There are some complications, my sister currently uses it, but may switch to Gravity forms. I also have some users in the trial period, but no one paying for it.
1 Like
Comment
About
My sister plays the harp at weddings and needs to display her availability and take bookings. I need more stress in my life.


Comment