=== Schedopia ===
Contributors: thinkmatic
Donate link: https://thinkmatic.net
Tags: booking, appointments, scheduling, calendar, staff
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

Self-hosted appointment booking for service businesses: customers book a service with a staff member at a date and time.

== Description ==

Schedopia is a complete, self-hosted appointment booking plugin for WordPress. A customer picks a service, chooses a staff member, and books an available time — and every booking is a real, dated record with a transactional double-booking guard, so two customers can never take the same slot. Built for salons, clinics, consultants, tutors, and any service business that runs on appointments.

**Features**

* Service catalog: services, categories, and per-staff pricing.
* Staff and customer management, with per-staff availability — weekly working hours, days off, buffer times, and capacity — that drives the bookable time slots.
* Real, dated appointments that carry their own date, time, and timezone, with a transactional double-booking guard.
* A customer-facing booking form — server-rendered and mobile-first — that you place with the `[schedopia_booking]` shortcode; customers pick a service, choose a staff member, and book an available time in a few steps.
* A Form Appearance customizer to brand the form: global colors, fonts, shape, and button style, plus per-step labels, with a live preview.
* A fast single-page admin: dashboard, bookings with filters and a detail drawer, a team calendar, the service catalog, scheduling, customers, staff, payments, an activity log, and a setup wizard.
* Manual / offline payment recording (cash, bank transfer, mark-as-paid).
* Email notifications: booking confirmation, cancellation, an operator new-booking alert, and booking reminders.
* A REST API for every entity, with schema-driven validation.
* An extension surface (lifecycle hooks, filters, and driver interfaces) so extensions build on the plugin without forking it.

The `[schedopia_booking]` shortcode works in any editor — including inside the Gutenberg shortcode block and the Elementor Shortcode widget.

== Installation ==

1. Upload the `schedopia` folder to the `/wp-content/plugins/` directory, or install the plugin through the **Plugins** screen in WordPress.
2. Activate the plugin through the **Plugins** screen.
3. The plugin's custom tables (`wp_schedopia_*`) are created automatically on activation/upgrade.
4. Manage your catalog, staff, and bookings via the Schedopia admin screens and the REST API under `/wp-json/schedopia/v1/`.
5. Add the booking form to your site: create or edit a page and insert the `[schedopia_booking]` shortcode (it also works inside the Gutenberg shortcode block and the Elementor Shortcode widget).

== Frequently Asked Questions ==

= Does Schedopia use custom database tables or custom post types? =

Custom tables (`wp_schedopia_*`). Bookings, services, staff, customers, and payments are stored relationally rather than as posts.

= Can I take payments? =

Schedopia records manual / offline payments — cash, bank transfer, and mark-as-paid.

= How do extensions build on Schedopia? =

Through documented lifecycle hooks, filters, and driver interfaces (`BookingSource`, `NotificationChannel`, `PaymentMethod`). Every booking flows through one validated path, so an extension can never create a booking the core would reject.

= How do I add the booking form to a page? =

Place the `[schedopia_booking]` shortcode in any page or post. It also works inside the Gutenberg shortcode block and the Elementor Shortcode widget. Only one booking form can appear per page.

== Changelog ==

= 1.0.0 =
* First stable release: a complete appointments booking system — a service catalog with categories and per-staff pricing; staff with weekly working hours, days off, buffers, and capacity; real dated bookings with a transactional double-booking guard; manual / offline payment recording; email notifications (confirmation, cancellation, operator alert, reminders); a setup wizard; a single-page admin dashboard; and the customer-facing `[schedopia_booking]` form with the Form Appearance customizer.
* Single validated booking path (admin, form, and future sources) with serial/reference generation and a confirmation email on every booking.
* REST API for every entity with schema-driven validation; granular per-area capabilities and rate limiting on the public API.
* Self-hosted fonts and assets — loads nothing from third-party CDNs. Uninstall preserves business data unless you opt in to deletion.

== Upgrade Notice ==

= 1.0.0 =
First stable release: a complete appointments booking system — services, staff, availability, the booking form, payments, and email notifications.
