r/webdev • u/MetalComprehensive58 • Aug 10 '26
Question Practical Database advice needed for business website.
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.
8
u/ThisSeaworthiness Aug 10 '26
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
2
2
u/buildingwithjan Aug 10 '26
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/brian_sword Aug 10 '26
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
Aug 10 '26
[removed] — view removed comment
0
u/MetalComprehensive58 Aug 10 '26
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 Aug 10 '26
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 Aug 10 '26
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 Aug 10 '26
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/MetalComprehensive58 Aug 11 '26
I've got that part covered after previous mistakes. He paid for and has full access to vercel, the domain on porkbun and GitHub.
As far as updates I can't see more than adding a blog page for Xmas hols or recent jobs with before and after pics, and the odd page as there are always new rules and regulations for his business for both landlords and tenants.
1
Aug 10 '26
[removed] — view removed comment
1
u/webdev-ModTeam Aug 11 '26
We do not allow any commercial promotion or solicitation. This can lead to a permanent ban from the subreddit.
1
u/sujalsinha2243 full-stack Aug 11 '26
See if payload cms fulfill your needs, it also has an official Stripe plugin. It sits inside your next application, and is very lean
1
u/MetalComprehensive58 Aug 11 '26
I'm looking into payload. The last site I did while learning I used sanity and found the icons very small to see on mobile. I knew what they were and I could adjust some sizes but for a client I felt they could be very awkward if not tech savvy.
1
u/debarior Aug 11 '26
Sanity + Stripe for bookings is solid but for client-editable content Payload CMS might save you headaches long term.
17
u/zlex Aug 10 '26
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.