Files
Naser Mansour 7f35297025 Mark all libra tasks Done — confirmed live in production ~1 year
Naser confirmed all remaining QA Review / Draft rows (97 subtasks, 16
parent rollups) are done in substance: the site has been in production
for roughly a year. Overrides the conservative QA-Review/Draft mapping
from the prior takeover commit (0f9d12c) at his explicit instruction.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-27 22:04:04 +03:00

2.0 KiB

id, title, status, date, parent
id title status date parent
11-2 11-2 Public Booking Form with Custom Captcha Done 2026-09-27 11

Description

As a website visitor, I want to request a consultation without creating an account, So that I can easily reach out to the lawyer for legal assistance. Full implementation history: docs/stories/story-11.2-public-booking-form.md

Acceptance Criteria

  • /booking route displays guest booking form for unauthenticated visitors
  • Logged-in users redirected to /client/consultations/book
  • Page uses public layout (x-layouts.public)
  • Bilingual support (Arabic/English)
  • Mobile responsive design
  • Reuses existing availability-calendar Livewire component
  • Shows available time slots (same as client view)
  • Blocked/booked times not selectable
  • Full name field (required, min 3 chars, max 255)
  • Email field (required, valid email format)
  • Phone field (required, valid format)
  • Problem summary field (required, min 20 chars, max 2000)
  • All fields have clear labels and validation messages
  • Form follows Flux UI patterns
  • Math-based captcha (e.g., "What is 7 + 3?")
  • Question generated server-side, answer stored in session
  • User must enter correct answer to submit
  • Refresh button to get new captcha question
  • Captcha validates before form submission
  • Bilingual captcha labels
  • Check if email has pending/approved booking for selected date
  • If limit reached, show error message and prevent submission
  • Clear error message explaining the limit
  • Limit applies per email address per calendar day
  • Maximum 5 booking attempts per IP per 24 hours
  • Rate limit error shown if exceeded
  • Step 1: Select date/time from calendar
  • Step 2: Fill contact info + problem summary + captcha
  • Step 3: Confirmation screen showing all details
  • Step 4: Submit creates guest consultation (status: pending)
  • Success message with instructions to check email