| users | Id, email, password_hash, role (customer |
| providers | User id, business_name, slug, description, address, profile_image_url, stripe_account_id, default_slot_minutes, buffer_minutes, created_at, updated_at. |
| services | Provider id, name, duration_minutes, price_cents (nullable), sort_order. |
| business_hours | Provider id, day_of_week (0–6), open_time, close_time. |
| special_dates | Provider id, date, is_available (false = time off). |
| appointments | Provider id, customer (user) id, service id, slot start/end (or date + time), status, payment_method (cash |
| reviews | Appointment id, user id (customer), rating (1–5), comment (nullable), created_at. |
| refresh_tokens (optional) | Token hash, user id, expires_at, for revocation. |