1103 lines
34 KiB
Markdown
1103 lines
34 KiB
Markdown
# Product Requirements Document (PRD)
|
|
## Libra Law Firm Website
|
|
|
|
**Version:** 1.2
|
|
**Date:** January 3, 2026
|
|
**Domain:** libra.ps
|
|
**Prepared for:** Development Team & Client Review
|
|
|
|
---
|
|
|
|
## 1. Executive Summary
|
|
|
|
Libra Law Firm requires a professional, bilingual (Arabic/English) web platform to manage client consultations, appointments, and case tracking. The system will serve as both a public-facing website and an internal management tool for the law firm's operations.
|
|
|
|
---
|
|
|
|
## 2. Project Objectives
|
|
|
|
- Provide a professional online presence for Libra Law Firm
|
|
- Streamline consultation booking process
|
|
- Manage client accounts and case timelines
|
|
- Enable the lawyer to publish legal content/updates
|
|
- Maintain professional, detail-oriented design standards
|
|
- Ensure easy usability for both admin and clients
|
|
|
|
---
|
|
|
|
## 3. Target Audience
|
|
|
|
### Primary Users:
|
|
- General public with legal concerns (all law practice areas)
|
|
- Individual clients and corporate/business clients
|
|
- Arabic-speaking primary audience with English language support
|
|
|
|
### Admin User:
|
|
- Single lawyer/firm owner
|
|
- Manages all aspects of the platform
|
|
- Female lawyer with high attention to detail and professional standards
|
|
|
|
---
|
|
|
|
## 4. Technical Specifications
|
|
|
|
### 4.1 Technology Stack
|
|
- **Framework:** Laravel 11.x (latest stable version)
|
|
- **Frontend:** Blade Templates
|
|
- **CSS Framework:** Bootstrap 5.3+ with RTL support
|
|
- **Database:** MariaDB (latest stable)
|
|
- **Authentication:** Laravel's built-in authentication
|
|
- **Server:** Rocky Linux 9 (client-managed infrastructure)
|
|
- **Email Server:** SMTP (details to be configured in .env)
|
|
- **PHP Version:** PHP 8.2+
|
|
|
|
### 4.2 Language Support
|
|
- **Primary Language:** Arabic (default)
|
|
- **Secondary Language:** English
|
|
- **Implementation:** Full site language toggle
|
|
- **Layout:** RTL (Right-to-Left) for Arabic, LTR for English
|
|
- **Content:** All UI elements, notifications, and admin interface in both languages
|
|
- **Numerals:** Western numerals (123) for both languages
|
|
- **Time Format:** 12-hour format (AM/PM) for both languages
|
|
- **Date Format:**
|
|
- Arabic: DD/MM/YYYY (e.g., ٢٠/١٢/٢٠٢٥)
|
|
- English: MM/DD/YYYY (e.g., 12/20/2025)
|
|
|
|
---
|
|
|
|
## 5. Core Features & Requirements
|
|
|
|
### 5.1 Landing Page (About Us)
|
|
|
|
**Purpose:** Main entry point showcasing the law firm
|
|
|
|
**Components:**
|
|
- Company introduction and overview
|
|
- Team/lawyer personal information
|
|
- Professional, elegant design reflecting law firm standards
|
|
- Embedded simplified booking form
|
|
- Call-to-action elements
|
|
- Responsive design (mobile, tablet, desktop)
|
|
|
|
**Design Requirements:**
|
|
- Highly professional aesthetic
|
|
- Detail-oriented with polished elements
|
|
- Clean lines and sophisticated typography
|
|
- Color palette: Charcoal with Warm Gray accents (see docs/brand.md)
|
|
- Libra scales logo prominently displayed
|
|
- Elegant, refined visual elements
|
|
- Easy navigation despite sophistication
|
|
|
|
---
|
|
|
|
### 5.2 Navigation System
|
|
|
|
**Structure:**
|
|
- Fixed top navigation bar
|
|
- Language toggle (Arabic/English)
|
|
- Main menu items:
|
|
- Home/About Us
|
|
- Booking/Consultations
|
|
- Posts/Updates
|
|
- Login (for registered clients)
|
|
- Responsive mobile menu
|
|
- Clear visual hierarchy
|
|
|
|
---
|
|
|
|
### 5.3 User Management System
|
|
|
|
**User Types:**
|
|
|
|
#### A. Individual Clients
|
|
- Full Name
|
|
- National ID Number
|
|
- Email Address
|
|
- Phone Number
|
|
- Password (set by admin)
|
|
|
|
#### B. Company/Corporate Clients
|
|
- Company Name
|
|
- Company Certificate/Registration Number
|
|
- Contact Person Name
|
|
- Contact Person ID
|
|
- Email Address
|
|
- Phone Number
|
|
- Password (set by admin)
|
|
- **Note:** Unlimited contact persons per company account
|
|
|
|
**Key Features:**
|
|
- **No self-registration** - all accounts created by admin only
|
|
- System clearly distinguishes between individual and company accounts
|
|
- Admin manually sets passwords for all users
|
|
- No password reset functionality for users (admin must reset manually)
|
|
- Email notification sent to user upon account creation with login credentials
|
|
- User profile management by admin
|
|
- Account activation/deactivation by admin
|
|
- Admin can convert individual accounts to company accounts and vice versa
|
|
|
|
**Account Management:**
|
|
- **Deactivate Account:** User cannot login, but all data is retained
|
|
- **Delete Account:** Permanently removes user and all associated data
|
|
- Deactivated accounts can be reactivated by admin
|
|
- Deleted accounts cannot be recovered
|
|
|
|
---
|
|
|
|
### 5.4 Booking & Consultation System
|
|
|
|
**Consultation Details:**
|
|
- **Actual Duration:** 45 minutes per session
|
|
- **Booking Slot:** 1 hour (45 min consultation + 15 min buffer)
|
|
- **Types:** Free or Paid (determined by admin after submission)
|
|
- **Working Hours:** Configurable by admin via dashboard
|
|
- **Payment:** No online payment gateway (handled offline)
|
|
- **Client Limit:** Maximum 1 consultation per client per day
|
|
- **Advance Booking:** Clients can book without payment confirmation
|
|
- **Admin Flexibility:** Admin decides how to handle no-shows and missed appointments
|
|
|
|
**Booking Flow:**
|
|
|
|
1. **Client Initiates Booking:**
|
|
- Logs into their account
|
|
- Views available dates/times in calendar
|
|
- Selects preferred date and time
|
|
- System checks: no more than 1 booking per day for this client
|
|
- Provides detailed problem summary (text field)
|
|
- Submits booking request
|
|
|
|
2. **Request Status: Pending**
|
|
- Booking enters pending queue
|
|
- Admin receives email notification at no-reply@libra.ps
|
|
- Client sees "Pending Review" status
|
|
|
|
3. **Admin Reviews:**
|
|
- Reviews problem summary
|
|
- Determines if consultation is Free or Paid
|
|
- Sets consultation type
|
|
- If paid, admin can specify amount/payment instructions
|
|
- Approves or rejects booking
|
|
|
|
4. **Booking Confirmed:**
|
|
- Client receives approval email notification
|
|
- If paid: email includes payment instructions (offline)
|
|
- Calendar event automatically generated
|
|
- Downloadable .ics calendar file provided
|
|
- Admin can mark payment as received (for paid consultations)
|
|
- Payment confirmation not required before appointment
|
|
|
|
**Calendar System Features:**
|
|
- Real-time availability display
|
|
- Admin sets working hours per day of week
|
|
- Admin can block time slots for personal events
|
|
- Shows booked appointments (blocks those times for other clients)
|
|
- 15-minute automatic buffer time between appointments
|
|
- Visual indicator for availability
|
|
- System prevents double-booking
|
|
- System prevents client from booking more than 1 consultation per day
|
|
|
|
**Admin Controls:**
|
|
- View all bookings (pending, approved, completed, cancelled, no-show)
|
|
- Filter by consultation type (free/paid)
|
|
- Filter by date range
|
|
- Mark consultations as completed
|
|
- Mark consultations as no-show
|
|
- Cancel bookings on behalf of clients
|
|
- Reschedule appointments
|
|
- Flexible handling of no-shows (admin decides action)
|
|
- Mark payment as received/pending for paid consultations
|
|
|
|
**Client Restrictions:**
|
|
- Cannot cancel their own bookings (must contact admin)
|
|
- Cannot reschedule directly (must contact admin)
|
|
- Maximum 1 consultation per day
|
|
- Cannot book if payment is marked as required but not confirmed (admin discretion)
|
|
|
|
**Email Notifications:**
|
|
|
|
*To Client (from no-reply@libra.ps):*
|
|
- Account created with login credentials
|
|
- Booking submitted confirmation
|
|
- Booking approved/rejected notification
|
|
- Consultation reminder (24 hours before)
|
|
- Consultation reminder (2 hours before)
|
|
- Timeline update notification
|
|
- All notification emails are mandatory (no opt-out)
|
|
|
|
*To Admin:*
|
|
- New booking request submitted
|
|
- New user registration (if applicable in future)
|
|
- System notifications - critical system events
|
|
|
|
#### Guest Booking Flow
|
|
|
|
In addition to client bookings, the system supports guest bookings for visitors without accounts.
|
|
|
|
**Guest Booking Process:**
|
|
|
|
1. **Guest Visits /booking:**
|
|
- Views available dates/times in calendar
|
|
- Selects preferred date and time
|
|
- Enters contact information (name, email, phone)
|
|
- Provides problem summary
|
|
- Completes captcha verification
|
|
- Submits booking request
|
|
|
|
2. **Spam Protection:**
|
|
- Custom math-based captcha (no third-party services)
|
|
- 1 booking request per email per day
|
|
- 5 booking requests per IP per 24 hours
|
|
|
|
3. **Guest Booking Status:**
|
|
- Booking enters pending queue (same as client bookings)
|
|
- Admin receives notification with guest contact info
|
|
- Guest receives email confirmation
|
|
|
|
4. **Admin Reviews Guest Booking:**
|
|
- Guest bookings appear in pending queue with "Guest" indicator
|
|
- Admin sees guest name, email, phone
|
|
- Same approval/rejection workflow as client bookings
|
|
|
|
5. **Guest Notifications:**
|
|
- Confirmation email on submission
|
|
- Approval email with calendar file on approval
|
|
- Rejection email with reason on rejection
|
|
|
|
**Guest vs Client Comparison:**
|
|
|
|
| Feature | Client Booking | Guest Booking |
|
|
|---------|---------------|---------------|
|
|
| Account Required | Yes | No |
|
|
| 1-per-day Limit | By user_id | By email |
|
|
| Contact Info | From user profile | Entered at booking |
|
|
| Email Notifications | To user email | To guest_email |
|
|
| View Past Bookings | In dashboard | N/A |
|
|
| Captcha | Not required | Required |
|
|
|
|
**Note:** Logged-in users visiting `/booking` are redirected to the client booking page.
|
|
|
|
---
|
|
|
|
### 5.5 Case Tracking Timeline System
|
|
|
|
**Overview:**
|
|
Each client can have multiple case timelines to track progress on different legal matters.
|
|
|
|
**Timeline Structure:**
|
|
- **Case Name/Reference:** Set by admin when creating timeline
|
|
- **Creation Date:** Automatically recorded
|
|
- **Status:** Active or Archived
|
|
- **Updates:** Text-based entries added by admin
|
|
|
|
**Features:**
|
|
|
|
**Admin Capabilities:**
|
|
- Create new timeline for any client
|
|
- Create unlimited timelines per client
|
|
- Assign case name/reference number
|
|
- Add text-based updates/milestones
|
|
- Edit existing timeline entries
|
|
- Archive/close timelines when cases are resolved
|
|
- View all timelines across all clients
|
|
|
|
**Client View:**
|
|
- See list of all their timelines/cases (both active and archived)
|
|
- View detailed timeline for each case
|
|
- Read admin updates in chronological order
|
|
- Receive email notification when timeline is updated
|
|
- Cannot add comments or respond to timeline updates
|
|
- Cannot edit timeline entries
|
|
- Archived timelines remain visible to clients
|
|
|
|
**Timeline Entry Components:**
|
|
- Date/timestamp (automatic)
|
|
- Admin name (automatic)
|
|
- Update text (entered by admin)
|
|
- Entry edit history
|
|
|
|
**Note:**
|
|
- No document upload functionality - text updates only
|
|
- Strictly one-way communication (admin to client)
|
|
- Clients cannot interact with timelines beyond viewing
|
|
|
|
---
|
|
|
|
### 5.6 Posts/Blog Section
|
|
|
|
**Purpose:** Admin-only content publishing for legal updates, articles, news
|
|
|
|
**Features:**
|
|
|
|
**Content Management:**
|
|
- Admin creates posts with title and body content
|
|
- Text content only (no media uploads for now)
|
|
- Rich text editor for formatting
|
|
- Immediate publishing (no scheduling)
|
|
- Edit published posts
|
|
- Delete posts
|
|
- Posts display in reverse chronological order
|
|
- Simple search functionality (title and body)
|
|
- No categories or tags at this time
|
|
- No SEO optimization (meta descriptions, custom slugs) at this time
|
|
|
|
**Public Display:**
|
|
- Posts visible to all website visitors (no login required)
|
|
- Clean, readable layout
|
|
- Responsive design
|
|
- No comments functionality
|
|
- No user interaction (read-only)
|
|
- Search bar to find posts
|
|
|
|
**Admin Interface:**
|
|
- List view of all posts
|
|
- Quick edit/delete actions
|
|
- Post preview before publishing
|
|
- Draft saving capability
|
|
- Search through existing posts
|
|
|
|
---
|
|
|
|
### 5.7 Admin Dashboard
|
|
|
|
**Overview:**
|
|
Central control panel for lawyer to manage all platform operations
|
|
|
|
**Dashboard Components:**
|
|
|
|
#### A. Overview/Statistics (Main Dashboard):
|
|
- **User Metrics:**
|
|
- Total active clients (individual vs company breakdown)
|
|
- Total deactivated clients
|
|
- New clients this month
|
|
|
|
- **Booking Metrics:**
|
|
- Pending booking requests count
|
|
- Today's consultations count
|
|
- This week's consultations count
|
|
- This month's consultations count
|
|
- Total consultations (all time)
|
|
- Free vs Paid consultations breakdown
|
|
- No-show rate percentage
|
|
|
|
- **Timeline Metrics:**
|
|
- Total active case timelines
|
|
- Total archived timelines
|
|
- Updates added this week
|
|
|
|
- **Posts Metrics:**
|
|
- Total published posts
|
|
- Posts published this month
|
|
|
|
**Visual Representation:**
|
|
- Clean card-based layout
|
|
- Charts for monthly trends (line/bar charts)
|
|
- Color-coded status indicators
|
|
- Quick stats at a glance
|
|
|
|
#### B. Booking Management:
|
|
- List of pending booking requests
|
|
- Today's approved consultations
|
|
- Upcoming consultations calendar view
|
|
- Filter by: consultation type, date range, status, payment status
|
|
- Quick approve/reject actions
|
|
- Mark as completed/no-show
|
|
- Mark payment as received
|
|
|
|
#### C. User Management:
|
|
- List all users (individual and company separate views)
|
|
- Search users by name, email, ID
|
|
- Create new user account
|
|
- Edit user information
|
|
- Convert individual to company or vice versa
|
|
- Reset user password
|
|
- Deactivate user account (data retained)
|
|
- Delete user account (permanent removal)
|
|
- View user's consultation history
|
|
- View user's case timelines
|
|
|
|
#### D. Working Hours Configuration:
|
|
- Set available days of the week
|
|
- Set start/end times for each day
|
|
- Set different hours for different days
|
|
- Block specific dates/times
|
|
- 15-minute buffer time automatically applied between appointments
|
|
|
|
#### E. Timeline Management:
|
|
- View all active timelines
|
|
- Create new timeline for client
|
|
- Create multiple timelines per client
|
|
- Add updates to existing timelines
|
|
- Archive completed timelines
|
|
- Filter by client or case status
|
|
|
|
#### F. Posts Management:
|
|
- Create new post
|
|
- Edit/delete existing posts
|
|
- View all posts
|
|
- Search posts
|
|
- Simple list interface
|
|
|
|
#### G. Reports & Exports:
|
|
- **Export Options:**
|
|
- User list (CSV, PDF)
|
|
- Consultation records (CSV, PDF)
|
|
- Timeline reports (CSV, PDF)
|
|
- Monthly statistics summary (PDF)
|
|
|
|
- **Date Range Filters:**
|
|
- Custom date range selection
|
|
- Preset ranges (This Month, Last Month, This Quarter, This Year)
|
|
|
|
#### H. Settings:
|
|
- Profile information
|
|
- Email notification preferences
|
|
- System configurations
|
|
- Terms of Service page editor
|
|
- Privacy Policy page editor
|
|
|
|
**Design Requirements:**
|
|
- Clean, professional interface
|
|
- Easy navigation between sections
|
|
- Quick action buttons for common tasks
|
|
- Responsive design for tablet use
|
|
- Arabic-first with English toggle
|
|
- Clear visual hierarchy
|
|
- Charcoal and Warm Gray color scheme (see docs/brand.md)
|
|
|
|
---
|
|
|
|
### 5.8 Client Dashboard
|
|
|
|
**Purpose:** Client portal to access their information and services
|
|
|
|
**Dashboard Components:**
|
|
|
|
#### A. Overview:
|
|
- Upcoming consultations
|
|
- Active case timelines count
|
|
- Recent timeline updates (last 3)
|
|
- Booking limit status (1 per day indicator)
|
|
|
|
#### B. My Consultations:
|
|
- Upcoming consultations with details
|
|
- Past consultation history
|
|
- Pending booking requests status
|
|
- Download calendar files (.ics)
|
|
- Payment status for paid consultations
|
|
- Consultation type indicator (Free/Paid)
|
|
|
|
#### C. My Cases/Timelines:
|
|
- List of all timelines (active and archived clearly separated)
|
|
- Click to view detailed timeline
|
|
- See updates in chronological order
|
|
- Status indicators (active/archived)
|
|
- Visual distinction between active and archived
|
|
|
|
#### D. Profile:
|
|
- View personal/company information
|
|
- Contact details
|
|
- Account type (individual/company)
|
|
- Cannot edit (admin only)
|
|
|
|
#### E. New Booking:
|
|
- Quick access to booking form
|
|
- Calendar view of availability
|
|
- Submit new consultation request
|
|
- Warning if already booked for selected day
|
|
|
|
**Design Requirements:**
|
|
- Simple, intuitive interface
|
|
- Professional yet accessible design
|
|
- Clear status indicators
|
|
- Mobile-friendly
|
|
- Consistent with main site design
|
|
- Charcoal and Warm Gray color scheme (see docs/brand.md)
|
|
|
|
---
|
|
|
|
## 6. User Roles & Permissions
|
|
|
|
### 6.1 Admin Role
|
|
**Full Access:**
|
|
- All CRUD operations on users
|
|
- Convert user types (individual ↔ company)
|
|
- Deactivate and delete accounts
|
|
- All booking management functions
|
|
- All timeline management
|
|
- All post management
|
|
- System configuration
|
|
- Working hours management
|
|
- View all data and reports
|
|
- Export data (CSV, PDF)
|
|
- Edit Terms of Service and Privacy Policy
|
|
|
|
### 6.2 Client Role
|
|
**Limited Access:**
|
|
- View own profile (cannot edit)
|
|
- Submit booking requests (max 1 per day)
|
|
- View own consultations
|
|
- View own timelines (read-only, including archived)
|
|
- Cannot cancel/modify bookings
|
|
- Cannot reset own password
|
|
- Cannot comment on timelines
|
|
- Cannot opt-out of email notifications
|
|
|
|
---
|
|
|
|
## 7. Design Requirements
|
|
|
|
### 7.1 Brand Identity & Visual Guidelines
|
|
|
|
#### A. Color Palette
|
|
|
|
> **Note:** The color palette was updated in Epic 10 (Brand Color Refresh).
|
|
> See `docs/brand.md` for complete and current brand guidelines.
|
|
|
|
**Primary Colors:**
|
|
- **Charcoal:** #4A4A42
|
|
- Usage: Primary brand color, buttons, links, headings
|
|
- Creates professional, grounded atmosphere
|
|
|
|
- **Warm Gray:** #C9C4BA
|
|
- Usage: Accent elements, secondary buttons, borders, dividers
|
|
- Represents sophistication, balance, legal authority
|
|
|
|
**Supporting Colors:**
|
|
- **Off-White:** #E8E4DC (backgrounds, card backgrounds, hover states)
|
|
- **Deep Black:** #1A1A1A (text, footer, high-contrast elements)
|
|
- **Success Green:** #27AE60 (approved status, success messages)
|
|
- **Warning Red:** #E74C3C (rejected status, error messages)
|
|
- **Pending Yellow:** #F39C12 (pending status indicators)
|
|
|
|
**Accessibility Compliance:**
|
|
- All text/background combinations meet WCAG AA standards
|
|
- Minimum contrast ratio of 4.5:1 for body text
|
|
- Minimum contrast ratio of 3:1 for large text and UI elements
|
|
|
|
#### B. Logo Usage
|
|
|
|
**Botanical/Wheat Libra Symbol:**
|
|
- Primary logo featuring botanical wheat stalks forming Libra scales
|
|
- Symbol represents growth, balance, and natural justice
|
|
- Logo placement:
|
|
- Top left corner of navigation (desktop)
|
|
- Centered in mobile navigation
|
|
- Footer (smaller version)
|
|
|
|
**Logo Specifications:**
|
|
- Minimum size: 120px width (desktop), 80px width (mobile)
|
|
- Clear space: Minimum 20px padding on all sides
|
|
- Acceptable formats: SVG (primary), PNG (fallback)
|
|
- Color variations:
|
|
- Charcoal on Off-White - primary use
|
|
- Off-White on Charcoal - for dark sections
|
|
- Monochrome Deep Black - for special applications
|
|
|
|
#### C. Typography
|
|
|
|
**Arabic Font:**
|
|
- **Primary:** Cairo or Tajawal (Google Fonts)
|
|
- **Characteristics:** Modern, professional, highly legible
|
|
- **Weights:** Light (300), Regular (400), SemiBold (600), Bold (700)
|
|
|
|
**English Font:**
|
|
- **Primary:** Montserrat or Lato
|
|
- **Characteristics:** Clean, professional, pairs well with Arabic fonts
|
|
- **Weights:** Light (300), Regular (400), SemiBold (600), Bold (700)
|
|
|
|
**Font Hierarchy:**
|
|
- **H1 (Page Titles):** Bold, 2.5rem (40px)
|
|
- **H2 (Section Headings):** SemiBold, 2rem (32px)
|
|
- **H3 (Subsection Headings):** SemiBold, 1.5rem (24px)
|
|
- **Body Text:** Regular, 1rem (16px)
|
|
- **Small Text/Captions:** Regular, 0.875rem (14px)
|
|
- **Line Height:** 1.6 for body text, 1.3 for headings
|
|
|
|
#### D. Visual Elements
|
|
|
|
**Accent Usage:**
|
|
- Primary action buttons (solid Charcoal background)
|
|
- Secondary buttons (Warm Gray outline)
|
|
- Links and hover states
|
|
- Decorative dividers between sections
|
|
- Icon highlights
|
|
- Active state indicators
|
|
- Border highlights on cards
|
|
|
|
**Cards & Containers:**
|
|
- Subtle box-shadow: 0 2px 8px rgba(0,0,0,0.1)
|
|
- Border-radius: 8px for consistency
|
|
- Card backgrounds: Off-White (#E8E4DC) on page background
|
|
- Padding: 24px standard internal padding
|
|
|
|
**Icons:**
|
|
- Style: Line-based, minimalist (e.g., Feather Icons or Bootstrap Icons)
|
|
- Color: Charcoal for primary actions, Warm Gray for secondary
|
|
- Size: 24px standard, 32px for featured icons
|
|
|
|
**Buttons:**
|
|
- **Primary Button:**
|
|
- Background: Charcoal (#4A4A42)
|
|
- Text: Off-White (#E8E4DC)
|
|
- Hover: Deep Black (#1A1A1A)
|
|
- Border-radius: 6px
|
|
- Padding: 12px 24px
|
|
|
|
- **Secondary Button:**
|
|
- Background: Transparent
|
|
- Border: 2px solid Warm Gray (#C9C4BA)
|
|
- Text: Charcoal (#4A4A42)
|
|
- Hover: Warm Gray background with Charcoal text
|
|
|
|
- **Disabled State:**
|
|
- Background: #CCCCCC
|
|
- Text: #666666
|
|
- No hover effect
|
|
|
|
**Background Patterns (Optional):**
|
|
- Subtle texture or geometric pattern on Off-White backgrounds
|
|
- Very low opacity (5-10%) to add depth without distraction
|
|
- Botanical/wheat motif integrated subtly if desired
|
|
|
|
#### E. Spacing & Layout
|
|
|
|
**Grid System:**
|
|
- Bootstrap 5 12-column grid
|
|
- Container max-width: 1200px
|
|
- Gutter width: 24px
|
|
|
|
**Spacing Scale:**
|
|
- xs: 4px
|
|
- sm: 8px
|
|
- md: 16px
|
|
- lg: 24px
|
|
- xl: 32px
|
|
- xxl: 48px
|
|
|
|
**Section Padding:**
|
|
- Desktop: 64px vertical, 24px horizontal
|
|
- Tablet: 48px vertical, 20px horizontal
|
|
- Mobile: 32px vertical, 16px horizontal
|
|
|
|
### 7.2 Design Principles
|
|
- **Professional:** High-end law firm standard
|
|
- **Elegant:** Subtle, refined touches throughout
|
|
- **Accessible:** Easy to use despite sophistication
|
|
- **Responsive:** Perfect display on all devices
|
|
- **Consistent:** Unified design language across all pages
|
|
- **Attention to Detail:** Polished micro-interactions and transitions
|
|
|
|
### 7.3 UI/UX Requirements
|
|
- Intuitive navigation
|
|
- Clear call-to-action buttons with gold accents
|
|
- Proper form validation with helpful error messages
|
|
- Loading states for async operations
|
|
- Success/error notifications (toast messages or modal)
|
|
- Consistent spacing and alignment
|
|
- Accessible color contrast ratios
|
|
- Clear visual feedback for user actions
|
|
- Smooth transitions and animations (subtle, professional)
|
|
- Mobile-first responsive design
|
|
|
|
### 7.4 Responsive Breakpoints
|
|
- **Mobile:** < 576px
|
|
- **Tablet:** 576px - 991px
|
|
- **Desktop:** 992px - 1199px
|
|
- **Large Desktop:** ≥ 1200px
|
|
|
|
---
|
|
|
|
## 8. Email System
|
|
|
|
### 8.1 Email Server
|
|
- SMTP configuration provided by client team
|
|
- Configuration via .env file
|
|
- **Sender Email:** no-reply@libra.ps
|
|
- **Sender Name:** Libra Law Firm / مكتب ليبرا للمحاماة
|
|
|
|
### 8.2 Email Templates
|
|
All emails in both Arabic and English based on user preference:
|
|
|
|
**Client Emails (Mandatory - No Opt-out):**
|
|
1. **Welcome Email** - Account created with login credentials
|
|
2. **Booking Confirmation** - Request submitted successfully
|
|
3. **Booking Approved** - With consultation details, payment instructions (if paid), and calendar file
|
|
4. **Booking Rejected** - With reason (if provided)
|
|
5. **Consultation Reminder** - 24 hours before
|
|
6. **Consultation Reminder** - 2 hours before
|
|
7. **Timeline Update** - When admin adds update to their case
|
|
|
|
**Admin Emails:**
|
|
1. **New Booking Request** - With client details and problem summary
|
|
2. **System Notifications** - Critical system events
|
|
|
|
**Guest Emails:**
|
|
1. **Guest Booking Confirmation** - Request submitted successfully
|
|
2. **Guest Booking Approved** - With consultation details and calendar file
|
|
3. **Guest Booking Rejected** - With reason (if provided)
|
|
|
|
### 8.3 Email Requirements
|
|
- Professional email templates matching brand design (Charcoal & Warm Gray)
|
|
- Mobile-responsive email layout
|
|
- Plain text fallback
|
|
- Clear subject lines (bilingual based on user preference)
|
|
- Logo and branding elements in header
|
|
- Consistent typography and spacing
|
|
- Call-to-action buttons (Charcoal) where applicable
|
|
- Footer with firm contact information
|
|
|
|
---
|
|
|
|
## 9. Security & Data Privacy
|
|
|
|
### 9.1 Authentication & Authorization
|
|
- Secure password hashing (Laravel default: bcrypt)
|
|
- Session management with timeout (2 hours inactivity)
|
|
- Role-based access control (admin vs client)
|
|
- CSRF protection on all forms
|
|
- XSS prevention
|
|
- Rate limiting on login attempts
|
|
|
|
### 9.2 Data Protection
|
|
- All sensitive client data encrypted in database
|
|
- Secure HTTPS connection (SSL certificate required)
|
|
- Regular backup schedule (managed by client infrastructure team)
|
|
- Audit logs for admin actions (user edits, account deletions, booking modifications)
|
|
- Secure password storage (hashed, never plain text)
|
|
|
|
### 9.3 User Privacy
|
|
- No public display of client information
|
|
- Case timelines private to assigned client
|
|
- Secure login required for all client data access
|
|
- Admin-only access to user management
|
|
- Clear deactivation vs deletion policies
|
|
- **Terms of Service page** (admin editable)
|
|
- **Privacy Policy page** (admin editable)
|
|
|
|
### 9.4 Data Retention
|
|
- **Deactivated Accounts:** All data retained indefinitely until admin deletes
|
|
- **Deleted Accounts:** Permanent removal of all associated data (consultations, timelines, bookings)
|
|
- **Backups:** Follow client infrastructure backup schedule
|
|
|
|
---
|
|
|
|
## 10. Legal & Compliance
|
|
|
|
### 10.1 Required Pages
|
|
- **Terms of Service:** Admin-editable page, accessible from footer
|
|
- **Privacy Policy:** Admin-editable page, accessible from footer
|
|
- Both pages available in Arabic and English
|
|
|
|
### 10.2 Compliance Notes
|
|
- No specific Palestinian legal requirements identified at this time
|
|
- Standard best practices for data privacy applied
|
|
- Client consent implied through account usage
|
|
- Cookie consent: To be determined (not specified in requirements)
|
|
|
|
---
|
|
|
|
## 11. Analytics & Reporting
|
|
|
|
### 11.1 Admin Dashboard Analytics
|
|
|
|
**Real-time Metrics:**
|
|
- Active users online
|
|
- Pending booking requests
|
|
- Today's consultations
|
|
|
|
**Historical Metrics:**
|
|
- New clients per month (chart)
|
|
- Consultations per month (chart)
|
|
- Free vs Paid consultations trend (chart)
|
|
- No-show rate over time (chart)
|
|
|
|
**Visualization:**
|
|
- Simple line/bar charts
|
|
- Color-coded cards for quick stats
|
|
- Percentage indicators for growth/decline
|
|
- No complex analytics tools required
|
|
|
|
### 11.2 Export Functionality
|
|
|
|
**Export Formats:**
|
|
- CSV (for data analysis)
|
|
- PDF (for presentation/printing)
|
|
|
|
**Exportable Data:**
|
|
- **User Lists:**
|
|
- All users with details
|
|
- Individual clients only
|
|
- Company clients only
|
|
- Filterable by date range, status (active/deactivated)
|
|
|
|
- **Consultation Records:**
|
|
- All consultations with client details
|
|
- Filter by date range, consultation type, status, payment status
|
|
- Include client problem summaries
|
|
|
|
- **Timeline Reports:**
|
|
- All timelines for a specific client
|
|
- All timelines across all clients
|
|
- Filter by active/archived status
|
|
|
|
- **Monthly Statistics Summary (PDF):**
|
|
- Overview of all key metrics for selected month
|
|
- Charts and graphs included
|
|
- Professional PDF template with branding
|
|
|
|
**Export Location:**
|
|
- Button in each management section
|
|
- Admin dashboard has "Generate Monthly Report" button
|
|
- Exports download directly to admin's device
|
|
|
|
---
|
|
|
|
## 12. Development Phases
|
|
|
|
### Phase 1: Core Setup (Week 1)
|
|
- Laravel 11.x project setup
|
|
- Database schema design and migration
|
|
- Authentication system implementation
|
|
- Admin and client role implementation
|
|
- Bilingual support infrastructure (Arabic/English)
|
|
- RTL/LTR layout switching
|
|
- Base UI/UX framework with brand colors
|
|
|
|
### Phase 2: User Management (Week 1-2)
|
|
- Admin creates user accounts (individual/company)
|
|
- User type conversion functionality
|
|
- User profile views
|
|
- Password management by admin
|
|
- Account deactivation/deletion logic
|
|
- Email notifications for account creation
|
|
- User search and filtering
|
|
|
|
### Phase 3: Booking System (Week 2-3)
|
|
- Calendar interface with availability display
|
|
- Working hours configuration
|
|
- Booking request flow
|
|
- Admin approval workflow
|
|
- Consultation type assignment (free/paid)
|
|
- Email notifications (booking confirmations, reminders)
|
|
- Calendar file generation (.ics)
|
|
- Payment status tracking (offline)
|
|
- 1 consultation per day per client validation
|
|
- 15-minute buffer time implementation
|
|
|
|
### Phase 4: Timeline System (Week 3-4)
|
|
- Create timelines for clients
|
|
- Add/edit timeline updates
|
|
- Client timeline view (read-only)
|
|
- Archive/unarchive functionality
|
|
- Email notifications for updates
|
|
- Multiple timelines per client support
|
|
|
|
### Phase 5: Posts System (Week 4)
|
|
- Admin post creation with rich text editor
|
|
- Public posts display
|
|
- Edit/delete functionality
|
|
- Search functionality
|
|
- Draft saving
|
|
|
|
### Phase 6: Dashboards (Week 5)
|
|
- Admin dashboard with overview and analytics
|
|
- Client dashboard with overview
|
|
- Statistics and charts
|
|
- Quick action interfaces
|
|
- Export functionality (CSV, PDF)
|
|
|
|
### Phase 7: Design & Branding (Week 5-6)
|
|
- Logo integration and brand identity implementation
|
|
- Professional design implementation (Charcoal & Warm Gray palette)
|
|
- UI/UX refinement
|
|
- Responsive design testing
|
|
- RTL/LTR layout perfection
|
|
- Email template design
|
|
- Terms of Service and Privacy Policy pages
|
|
|
|
### Phase 8: Testing & Deployment (Week 6-7)
|
|
- Functional testing
|
|
- Security testing
|
|
- Cross-browser testing (Chrome, Firefox, Safari, Edge)
|
|
- Mobile responsiveness testing (iOS, Android)
|
|
- Email template testing
|
|
- Export functionality testing
|
|
- User acceptance testing (UAT) with client
|
|
- Production deployment on Rocky Linux 9
|
|
- SSL certificate configuration
|
|
- Final review and adjustments
|
|
|
|
---
|
|
|
|
## 13. Success Criteria
|
|
|
|
### 13.1 Functional Success
|
|
- Admin can manage all users efficiently
|
|
- User type conversion works seamlessly
|
|
- Account deactivation/deletion functions correctly
|
|
- Booking system handles appointments smoothly with 1-per-day limit
|
|
- Clients can easily request consultations
|
|
- Timeline system tracks cases effectively (multiple per client)
|
|
- Email notifications delivered reliably from no-reply@libra.ps
|
|
- Both languages work flawlessly with proper RTL/LTR
|
|
- Posts are searchable and manageable
|
|
- Analytics display accurate data
|
|
- Exports generate correctly (CSV, PDF)
|
|
|
|
### 13.2 Design Success
|
|
- Professional, polished appearance with Charcoal and Warm Gray branding
|
|
- Logo properly integrated throughout
|
|
- Easy to use for non-technical users
|
|
- Positive feedback from lawyer/admin
|
|
- Mobile experience is seamless
|
|
- Brand identity properly reflected in all elements
|
|
|
|
### 13.3 Technical Success
|
|
- Stable performance under normal load
|
|
- Secure data handling with encryption
|
|
- No critical bugs
|
|
- Fast page load times (< 3 seconds)
|
|
- Compatible with major browsers
|
|
- Proper RTL/LTR functionality
|
|
- Email delivery is reliable
|
|
- Exports complete within reasonable time
|
|
|
|
---
|
|
|
|
## 14. Open Items / Future Discussion
|
|
|
|
### 14.1 Timeline System Enhancements (Future)
|
|
- Private admin notes feature (not visible to client)
|
|
- Timeline status types beyond active/archived
|
|
- Document attachment capability
|
|
|
|
### 14.2 Post-Launch Items
|
|
- Admin training on dashboard usage
|
|
- User documentation (client guide)
|
|
- Maintenance and update plan
|
|
- Feature enhancements based on usage feedback
|
|
- Cookie consent implementation (if needed)
|
|
- Advanced SEO for posts (meta tags, custom URLs)
|
|
|
|
### 14.3 Potential Future Features
|
|
- Native mobile apps (iOS/Android)
|
|
- Online payment gateway integration
|
|
- Post categories and tagging
|
|
- Advanced analytics and business intelligence
|
|
- Multi-admin support
|
|
- Client self-service password reset (with admin approval)
|
|
- SMS notifications
|
|
- Video consultation integration
|
|
|
|
---
|
|
|
|
## 15. Assumptions & Constraints
|
|
|
|
### 15.1 Assumptions
|
|
- Client will provide logo in vector format (SVG preferred)
|
|
- Email server configuration will be provided with working credentials
|
|
- Rocky Linux 9 server infrastructure is ready and accessible
|
|
- Domain (libra.ps) is registered and DNS configured
|
|
- SSL certificate will be obtained and configured by client team
|
|
- Server has sufficient resources for MariaDB, PHP 8.2+, and Laravel 11
|
|
- Admin has basic computer literacy for dashboard usage
|
|
|
|
### 15.2 Constraints
|
|
- Single admin user (no multi-admin support needed)
|
|
- No online payment processing
|
|
- Text-only content in timelines and posts (no document uploads)
|
|
- Client-managed hosting infrastructure
|
|
- No self-registration for clients
|
|
- No password reset for clients (admin only)
|
|
- Simple analytics (no complex BI tools)
|
|
- Web-only platform (no native mobile apps)
|
|
- Maximum 1 consultation per client per day
|
|
- All email notifications are mandatory (no opt-out)
|
|
|
|
---
|
|
|
|
## 16. Appendices
|
|
|
|
### 16.1 Database Schema Overview
|
|
|
|
**Key Tables:**
|
|
|
|
1. **users**
|
|
- id, user_type (individual/company), full_name, national_id, company_name, company_cert_number, contact_person_name, contact_person_id, email, phone, password, status (active/deactivated), preferred_language, created_at, updated_at
|
|
|
|
2. **consultations (bookings)**
|
|
- id, user_id (nullable for guests), guest_name, guest_email, guest_phone, booking_date, booking_time, duration (45 min), problem_summary, consultation_type (free/paid), payment_amount, payment_status (pending/received), status (pending/approved/rejected/completed/no-show/cancelled), admin_notes, created_at, updated_at
|
|
|
|
3. **timelines**
|
|
- id, user_id, case_name, case_reference, status (active/archived), created_at, updated_at
|
|
|
|
4. **timeline_updates**
|
|
- id, timeline_id, admin_id, update_text, created_at, updated_at
|
|
|
|
5. **posts**
|
|
- id, title (bilingual), body (bilingual), status (draft/published), created_at, updated_at
|
|
|
|
6. **working_hours**
|
|
- id, day_of_week, start_time, end_time, is_active
|
|
|
|
7. **blocked_times**
|
|
- id, block_date, start_time, end_time, reason
|
|
|
|
8. **notifications**
|
|
- id, user_id, type, title, body, read_at, sent_at, created_at
|
|
|
|
9. **admin_logs (audit trail)**
|
|
- id, admin_id, action, target_type, target_id, old_values, new_values, ip_address, created_at
|
|
|
|
### 16.2 API Endpoints (Internal)
|
|
- Not applicable (Blade-based application, not API-driven)
|
|
- All interactions server-side through Laravel routes and controllers
|
|
|
|
### 16.3 Third-Party Dependencies
|
|
|
|
**Frontend:**
|
|
- Bootstrap 5.3+ (CSS framework with RTL support)
|
|
- Chart.js (for analytics charts)
|
|
- FullCalendar.js or similar (for booking calendar)
|
|
- Rich text editor (e.g., TinyMCE or Quill)
|
|
|
|
**Backend:**
|
|
- Laravel 11.x framework
|
|
- Laravel Mail (email sending)
|
|
- Laravel Notifications
|
|
- maennchen/zipstream-php (for generating ICS calendar files)
|
|
- barryvdh/laravel-dompdf (for PDF exports)
|
|
- league/csv (for CSV exports)
|
|
|
|
**Fonts:**
|
|
- Google Fonts: Cairo/Tajawal (Arabic), Montserrat/Lato (English)
|
|
|
|
**Icons:**
|
|
- Bootstrap Icons or Feather Icons
|
|
|
|
---
|
|
|
|
## 17. Approval & Sign-off
|
|
|
|
**Document Prepared By:** Development Team
|
|
**Version:** 1.1
|
|
**Last Updated:** December 20, 2025
|
|
|
|
**Review Date:** _________________________
|
|
**Client Approval:** _________________________
|
|
**Development Team Lead:** _________________________
|
|
|
|
---
|
|
|
|
## 18. Change Log
|
|
|
|
| Version | Date | Changes | Author |
|
|
|---------|------|---------|--------|
|
|
| 1.0 | Nov 26, 2025 | Initial PRD creation | Development Team |
|
|
| 1.1 | Dec 20, 2025 | Added brand identity section, clarified booking rules (1/day, 45min), multiple timelines, account management (deactivate/delete), exports, analytics, Terms/Privacy pages | Development Team |
|
|
| 1.2 | Jan 3, 2026 | Added guest booking functionality: public booking form at /booking, custom captcha, 1-per-day limit, guest email notifications, admin guest booking management | Development Team |
|
|
|
|
---
|
|
|
|
**END OF DOCUMENT**
|