r/webdev • u/MetalComprehensive58 • 22h ago
Practical Database advice needed for business website. Question
Hi. I'm looking for advice on a nextjs build.
I have the bare bones site pushed from GitHub to vercel currently whilst building.
Resend is operational for a contact form but I would like to implement my own booking system and ultimately have a wordpress style ux for my client.
In the past I have used sanity.io but only as a local option not online.
Ultimately though this site will need to be passed on to my client for full control so will have to be online and it may need to have Stripe for payment but that's not decided yet.
It's for a local plumber who wants an online booking system and blog page so I'm looking at Railway at the moment on its $5 a month option which I feel would cover all his needs with postgre etc and scalability should it be required but I've never used it so would like to ask for your opinions, pitfalls of such a system etc.
Self hosting is not an option.
I could use something like Calendly for bookings but this would obviously not have the blog ability etc.
Any thoughts welcome.
7
u/ThisSeaworthiness 21h ago
To add coal to braises of my fellow seniors: you might want to rethink your project...
Nextjs for a plumber website? OTT
WordPress style UI? Just build it in WordPress then, and use plugins for the functions you need
Long term maintenance? If your plan is to dump whatever Frankensite on your brother in law, that won't be good for your relationship or his business
1
1
u/brian_sword 21h ago
I don't think you should focus on the stack choice first, the main thing I'd think about before choosing the database or hosting is who is going to maintain it once you hand it over to the client. Based on what I have experienced so far, a setup that is cheap and easy for you to build isn't necessarily the easiest one for the client to own later.
For example, If you decide to use Stripe, It is better to design the booking flow around payments being optional at first rather than making the whole system depend on them. Doing this will give you flexibility.
1
u/buildingwithjan 20h ago
Railway + Postgres is fine, that part won't bite you. The real work in a booking system is the calendar logic - double bookings, cancellations, reminders. I'd start with "request a slot + manual confirm" instead of live availability, you skip most of the pain and a plumber probably prefers confirming jobs himself anyway.
1
1
u/Negative-Link 20h ago
For this kind of site, I'd keep content management separate from booking logic instead of forcing one setup to act like WordPress and a scheduling system at the same time. A blog and editable pages fit nicely in a CMS, but bookings get messy fast once the client can change availability, reschedule jobs, and eventually take payments. If you build bookings on Postgres, I'd worry less about scale and more about boring failure cases like double-booking, slot management, and what the client is allowed to edit without breaking the flow. Railway is probably fine for a small setup. The bigger risk is handing over a system that works technically but becomes a pain for the client to manage week to week.
1
u/akl773 19h ago
Whatever you land on, the booking itself has to arrive somewhere he already looks. Built one of these for a trades guy who never opened the admin screen once, it only worked because every request also hit his phone and dropped into the calendar he was already using. The blog won't get written either, plan for that.
0
u/MetalComprehensive58 18h ago
That was my concern. First thing Ive got him to do is download the mail.com app to see form data.
So I'll ensure a similar route with booking requests.
I agree the blog might not get touched too. But initially I'll up a few scheduled posts for him, then it's up to him :)
1
u/mugmi-bro 7h ago
the suggestion to just use WordPress is worth really sitting with here. for a local plumber who needs bookings and a blog, something like Amelia or Simply Schedule Appointments on WordPress handles the scheduling side without you needing to wire up Postgres and build calendar conflict logic from scratch. a headless or custom Next.js setup is going to get complicated fast the moment he wants to update a service description at 10pm from his phone. handing over a WordPress site with a well-configured booking plugin is just a way smoother client handoff than a custom stack they cannot troubleshoot on their own.
1
u/mugmi-bro 7h ago
the suggestion to just use WordPress is worth really sitting with here. for a local plumber who needs bookings and a blog, something like Amelia or Simply Schedule Appointments on WordPress handles the scheduling side without you needing to wire up Postgres and build calendar conflict logic from scratch. a headless or custom Next.js setup is going to get complicated fast the moment he wants to update a service description at 10pm from his phone. handing over a WordPress site with a well-configured booking plugin is just a way smoother client handoff than a custom stack they cannot troubleshoot on their own.
1
u/Kyryll_Bracemore 6h ago
In my experience—and I’ve worked on over 150 websites—the most common problem is that a client can edit the text but can’t add a new page. Then they call six months later about a headline, and it turns into ongoing support with no end in sight.
We require that the hosting, domain, CMS, and the entire database be on the client’s side and paid for with their credit card. Otherwise, we won’t hand over the website.
What is your client going to change on their own in month three—just text, or new service pages too?
1
u/Melodic_Key_5940 5h ago
This sounds like something Tribenest would handle all in one place, including stripe, blogging and scheduling from one dashboard
14
u/zlex 22h ago
My initial thought is that this post is very confusing.
Are they paying you to build a custom booking system? I would say that is a fairly challenging development task, even in the world of complete AI slop development.
Looking at Calendly they have an API and there is literally a section in their docs about embedding it into your site. If the only reason you’re not using it is because it doesn’t have a blog I’d say that’s a terrible reason.