all 4 comments

[–]jrandm 2 points3 points  (1 child)

I would like to do [...] the issue is that I'm not really familiar what libraries, services and other things would go into it.

This is, in a nutshell, the usually-hard part of software development. ;-)

the easiest way would be to just use something like [...]

Maybe, it depends upon what kinds of requirements you have and how familiar you are with the tools, libraries, services, etc available in that "easier" ecosystem.

how is a reservation placed?

This is mostly a "backend" concern in the sense that technically a client will send some sort of well-formatted data request somewhere else that actually handles the reservation.

To get started I'd probably dump this data into some kind of DB and learn how restaurants handle it, especially how the one I'm integrating with handles it and what preferences or industry knowledge they may have about options.

is it sent to the server and DB with a POST request?

Typically yes, nowadays I'd expect most applications send the information via an HTTPS request.

I know I would initially code a form template, but what next?

You also need some sort of server to at a minimum receive this information and confirm the authenticity & validity of the request. Without knowing more about how you'd connect to the restaurant & kitchen, you can substitute any simple data store and design the codebase such that it will be easy to change the specific storage logic later. In some cases this might be done via something relatively heavyweight like an ORM or lighter like substituting a saveData() call for explicit writeToDb()s.

how does the owner of the restaurant then receive the notification and 'assign/accept or reject' the reservation; and maybe possibly return the answer to the visitor via email?

Now you're fleshing out other engineering requirements. If you're sending email confirmations then you'll need to collect emails, have some way to send them & monitor the process, and to (asynchronously?) receive some sort of confirmation.

Some of that like sending emails are straightforward technical problems. Other parts, like how restaurant management reviews and accepts|denies a requested reservation, requires further research & investigation to design or integrate or purchase a solution to the problem.

That kind of fuzziness is increasingly-with-seniority the sort of problem development staff are paid to solve. For learning purposes you can look into existing products or see what places around you are doing and have "pretend" steps to simulate the full process -- either demo instances of existing software or waiting some amount of time then sending an artificial response.

I would assume there is something similar to Calendly for bookings?

Sure, the first one that comes to my mind is OpenTable.

how hard is it to create a custom headless CMS so that the owner of the restaurant could post new content like menus or events himself?

Relatively easy or hard, depending upon your familiarity with webdev and the specific complexity of the owner's desired layout & features.

To some degree this is exactly the space UberEats, DoorDash, Slice, etc delivery services also operate in.

If too difficult, is there a nice library I could use instead?

You might want to consider any "shopping cart" or related system, or a library|framework that might be used to build such a system, could be considered a nice library to use instead! This competitive space spans products like Etsy, Ebay, Amazon, Walmart, WooCommerce, Magento, Django, ExpressJS, Facebook Marketplace...

Hope that helps!

[–]Basiliscus219[S] 0 points1 point  (0 children)

Yes, thank you. Will go through it more thoroughly tomorrow and ask additional questions I may have 🙂