Jump to content

[WIP] WireBooking – A lightweight, self-hosted appointment booking system


Recommended Posts

Posted

Hi everyone! 

I am currently developing a new module for a client project and wanted to quickly reach out to see if there is broader interest in the community for a solution like this.

The Use Case My client needed an appointment booking system similar to "Calendly". However, they had specific requirements:

  1. Zero external dependencies: No third-party SaaS for GDPR/DSGVO compliance and to avoid monthly fees.

  2. Full Design Control: It had to fit seamlessly into their custom design.

  3. Lightweight: No heavy bloat.

The Solution: WireBooking is a native ProcessWire module that handles appointment slots and bookings using standard ProcessWire pages.

Current Features:

  • Frontend Wizard: An interactive, step-by-step booking process built with AlpineJS and Tailwind CSS.

  • Native Storage: Bookings are saved as standard ProcessWire pages (booking-entry), allowing you to use the full power of PW selectors and hooks.

  • Backend Management: Simple interface using the native ProcessWire Admin Theme (UIkit) to view bookings.

  • Notifications: Sends confirmation emails to the customer and admin, including generated .ics calendar files for Outlook/Apple/Google Calendar.

  • Availability Management: Manually block specific time slots or entire date ranges via the module settings.

  • AJAX Driven: Dynamically loads available slots via JSON to keep the initial page load light.

The "Catch" (Requirements) To keep the module lightweight and modern, it is opinionated regarding the frontend stack. It assumes you are already using (or are willing to include):

  • Tailwind CSS (Utility classes) for the styling.

Usage Example: Using it in a template is extremely simple:

<?php echo $modules->get('WireBooking')->renderWizard(); ?>

I need your feedback! The module is currently functional for this specific use case (Consultants/Service Providers). Before I invest time into generalizing it for a public release on the modules directory, I have two questions for you:

  1. Is this something you would use? Is there a need for a native "Calendly" alternative?

  2. Is the dependency on Tailwind a dealbreaker? Since the markup relies on Tailwind utility classes, it might be hard to style if you use Bootstrap or custom CSS.

Looking forward to your thoughts and suggestions!

Cheers, Markus

image.png.1ba8dab9bb03e8b4680d1c39fd46349d.pngimage.png.766a40a8b3c937cd457afc4ad7c0866d.png

image.png.edd81bf26d0e297a7efcef1abbb2f5fc.pngimage.png.6c9475f6e680f343ca7e39688f93e80e.png

image.thumb.png.fa328f168c5b113bc94227cf340ed688.png

image.thumb.png.af434bf9d3a05e9aec3d1d75ff4ef5e2.png

  • Like 9
  • Thanks 1
Posted

Hi @markus-th! That is looking really promising. I was talking about that feature with a client not so long ago. They wanted to include a booking system (for "time slots") almost exactly like that. I am really looking forward to try out your module! Let me know when it is finished.

To answer your questions:

  1. Is this something you would use? Is there a need for a native "Calendly" alternative?

-> Yes.

  1. Is the dependency on Tailwind a dealbreaker? Since the markup relies on Tailwind utility classes, it might be hard to style if you use Bootstrap or custom CSS.

-> I am not using Tailwind at all but UIKit. Would you provide a basic stylesheet with the module or is the Tailwind integration a must-have in that case? I am not afraid to tweak the module code to alter the style classes to make it work for UIKit, though.

Posted

Hi @Stefanowitsch

I can integrate as option a base CSS with semantic class names, similar to how I handled it in my WireMagnet module. This way, the styling can be done independently of Tailwind.

I plan to release the module on GitHub in the next 2–3 weeks, once I've successfully completed some final tests.

  • Like 4
Posted

This looks amazing! I`m actually helping a friend on a project for his tiny psychologist clinic. We implemented Google Calendar appointments since it’s almost no configuration and just works. But this project look really promising.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   1 member

×
×
  • Create New...