=== Swellweb Booking ===
Contributors: marcocaciotti
Tags: booking, appointments, scheduling, calendar, availability
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.1
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Appointment booking with free slots: durations, buffers, weekly availability and double-booking protection. No external service.

== Description ==

Swellweb Booking adds free-slot appointment scheduling to WordPress. You set how
long an appointment lasts, how much of a break to leave between one and the next,
and which time ranges you are available in — the plugin works out the bookable
slots and shows them to your visitors.

Everything runs on your own site: **no external service, no third-party account,
no data sent anywhere else**.

= Features =

* **Appointment types** with configurable duration, buffer between appointments
  and weekly availability (several time ranges per day).
* **Front-end calendar** via shortcode: a real month calendar where only the
  bookable days are selectable (closed days, past days and fully booked days are
  greyed out), with month navigation. Pick a day, see the free times, done.
* **Optional context field**: visitors can add a short note about what they want
  to discuss — it reaches you in the notification email and in the dashboard.
* **Double-booking protection**: the slot is checked again when the booking is
  confirmed, so two people cannot take the same time.
* **Automatic emails**: confirmation to the visitor, notification to the admin.
* **Dashboard**: bookings in the next 7 days, this month and in total, your next
  appointments and a short setup checklist — everything at a glance.
* **Agenda view**: a month calendar in the dashboard showing every appointment at
  a glance, with month navigation; click an entry to open the booking.
* **Bookings list** in the dashboard with date, time, name and email, sortable.
* **No dependencies**: no external libraries, vanilla JavaScript, lightweight CSS.
* **Responsive and accessible** on desktop and mobile.
* **Translation ready**: POT file included, Italian translation bundled.

= Getting started =

1. Go to **Bookings → Appointment types** and create one, for example
   *Intro call (30 min)*.
2. Set the duration, the buffer and the time ranges for each day.
3. Copy the shortcode shown in the sidebar box and paste it into a page.

= Privacy =

The plugin stores the details entered by the person booking (name, email, day and
time) in your own database, and sends two emails through WordPress: the
confirmation to the visitor and the notification to the site administrator. It
does not contact any external service and does not collect usage statistics.

== Installation ==

1. Upload the `swellweb-booking` folder to `/wp-content/plugins/`, or install the
   plugin from your WordPress dashboard.
2. Activate the plugin through the **Plugins** menu.
3. Create an appointment type under **Bookings** and publish the shortcode on a
   page.

== Frequently Asked Questions ==

= Do I need an account on an external service? =

No. The plugin runs entirely on your site: settings, slots, bookings and emails
all stay on your WordPress installation.

= Can I have more than one appointment type? =

Yes. Create as many as you need and publish the shortcode with the ID:
`[swellweb_booking type="123"]`. Without the attribute, the first published type
is used.

= How do I handle a lunch break? =

Add two time ranges to the same day, for example 09:00–13:00 and 14:00–18:00.
The generated slots will skip the gap automatically.

= Can two people book the same slot? =

No. Besides hiding slots that are already taken, the plugin checks availability
again when the booking is submitted: if the time was taken in the meantime, the
visitor is told and picks another one.

= Are past times shown? =

No. Slots earlier than the current time are excluded automatically.

= Which data does the plugin store? =

Name, email address, day and time of each booking, plus the settings of your
appointment types. Nothing is sent to external services.

== Screenshots ==

1. Front-end booking calendar: pick a day, then an available time.
2. Dashboard: key numbers, upcoming appointments and the setup checklist.
3. Agenda: month view of every appointment.
4. Appointment type settings: duration, buffer and weekly availability.

== Changelog ==

= 1.0.0 =
* First public release.
* Appointment types with duration, buffer and weekly availability.
* Front-end month calendar with selectable days and REST endpoints for
  available days and slots.
* Double-booking protection with re-check on submit.
* Optional context note from the visitor, shown in the dashboard and emails.
* Dashboard with key numbers, upcoming appointments and setup checklist.
* Agenda: month calendar view of all appointments.
* Confirmation and notification emails; bookings list columns.

== Upgrade Notice ==

= 1.0.0 =
First public release of Swellweb Booking.
