I am very supportive of the Unix Philosophy:
>Write programs that do one thing and do it well.
>Write programs to work together.
>Write programs to handle text streams, because that is a universal interface.
While the third one can be extended to different formats depending on the application, it's still generally true.
In other words, I need a general idea of what's going on with external libraries, but the libraries should do one thing well and work with other programs. For example, if I want to save an image to a PNG, I can generate the pixels however I like, then send them to libpng
to making the PNG.
Furthermore, it's much more secure to use battle-tested security libraries rather than whatever you make. For example, if you want to do something with credit cards or passwords, you should use a standard library.
On the other side of the spectrum, we have web development. Now, conceptually, you should be able to program everything in HTML, CSS, JavaScript, some kind of database, and a server-side language (Yes, I know HTML and CSS aren't programing languages). You can extend and vary these languages (e.g. extend JavaScript to TypeScript), but they all boil down to these four languages. The problem lies in the large number of incompatible web frameworks that try to do everything for everyone all the time. For example, let's say you want to write a normal webpage that has everything in it and it allows people to book appointments and pay online. I had to dig deep and specifically look for libraries or plugins that don't use frameworks to find this one, which seems to be exactly what I'm looking for. It doesn't need an entire ecosystem just to mark a list of check boxes.
I use it for my works, pretty easy to setup, and it just works. There could be a bit more features ( sms reminder, 2 way synchronisation) but it's great (and open-source). There is also a wordpress plugin which adds these features, but I haven't tested it. (link)
I went looking for similar a few months ago, for an employee facing HR Department solution. I couldn't find anything that met our needs in Drupal. Ended up deploying the Easy!Appointments https://easyappointments.org/ project. It's worked well for us.
I did a separate project with D8, Webform, and some custom code to do event sign ups, but that may be difficult for your use case.