Generated Epics
This commit is contained in:
@@ -0,0 +1,302 @@
|
||||
# Epic 8: Email Notification System
|
||||
|
||||
## Epic Goal
|
||||
|
||||
Implement a comprehensive email notification system with professional templates, bilingual support, and reliable delivery for all platform communications.
|
||||
|
||||
## Epic Description
|
||||
|
||||
### Business Context
|
||||
|
||||
Email is the primary communication channel. Clients receive mandatory notifications (no opt-out) for account creation, booking updates, reminders, and timeline updates. Admin receives notifications for new bookings and system events.
|
||||
|
||||
### Technical Context
|
||||
|
||||
- **Sender:** no-reply@libra.ps
|
||||
- **Sender Name:** Libra Law Firm / مكتب ليبرا للمحاماة
|
||||
- **SMTP:** Configured via .env
|
||||
- **Delivery:** All mandatory (no opt-out for clients)
|
||||
- **Templates:** Professional with branding
|
||||
|
||||
### Success Criteria
|
||||
|
||||
- [ ] Professional email templates with branding
|
||||
- [ ] Bilingual emails (based on recipient preference)
|
||||
- [ ] All 9+ notification types implemented
|
||||
- [ ] Calendar file attachments
|
||||
- [ ] Queued delivery for performance
|
||||
- [ ] Plain text fallback
|
||||
- [ ] Consistent branding across all emails
|
||||
|
||||
---
|
||||
|
||||
## Stories
|
||||
|
||||
### Story 8.1: Email Infrastructure Setup
|
||||
|
||||
**Description:** Configure email sending infrastructure and base template.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] SMTP configuration via .env:
|
||||
- MAIL_MAILER
|
||||
- MAIL_HOST
|
||||
- MAIL_PORT
|
||||
- MAIL_USERNAME
|
||||
- MAIL_PASSWORD
|
||||
- MAIL_ENCRYPTION
|
||||
- MAIL_FROM_ADDRESS (no-reply@libra.ps)
|
||||
- MAIL_FROM_NAME
|
||||
- [ ] Base email template with:
|
||||
- Libra logo header
|
||||
- Navy blue (#0A1F44) and gold (#D4AF37) colors
|
||||
- Professional typography
|
||||
- Footer with firm contact info
|
||||
- Mobile-responsive layout
|
||||
- [ ] Plain text fallback generation
|
||||
- [ ] Queue configuration for async sending
|
||||
- [ ] Email logging for debugging
|
||||
|
||||
**Technical Notes:**
|
||||
- Use Laravel Mail with Mailable classes
|
||||
- Create base Mailable with shared layout
|
||||
- Configure queue connection
|
||||
|
||||
---
|
||||
|
||||
### Story 8.2: Welcome Email (Account Created)
|
||||
|
||||
**Description:** Email sent when admin creates a new client account.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on user creation
|
||||
- [ ] **Content:**
|
||||
- Personalized greeting (name/company)
|
||||
- "Your account has been created"
|
||||
- Login credentials (email, password)
|
||||
- Login URL link
|
||||
- Brief platform introduction
|
||||
- Contact info for questions
|
||||
- [ ] Language based on user's preferred_language
|
||||
- [ ] Call-to-action button: "Login Now"
|
||||
- [ ] Security note about changing password (N/A - admin only)
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: WelcomeEmail
|
||||
- Trigger: User created event
|
||||
- Queue for performance
|
||||
|
||||
---
|
||||
|
||||
### Story 8.3: Booking Submitted Confirmation
|
||||
|
||||
**Description:** Email to client confirming their booking request was submitted.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on booking submission
|
||||
- [ ] **Content:**
|
||||
- "Your consultation request has been submitted"
|
||||
- Requested date and time
|
||||
- Problem summary preview
|
||||
- "Pending Review" status note
|
||||
- Expected response timeframe (general)
|
||||
- [ ] Language based on client preference
|
||||
- [ ] No action required message
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: BookingSubmittedEmail
|
||||
- Trigger: Consultation created with status 'pending'
|
||||
|
||||
---
|
||||
|
||||
### Story 8.4: Booking Approved Email
|
||||
|
||||
**Description:** Email to client when admin approves their booking.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on booking approval
|
||||
- [ ] **Content:**
|
||||
- "Your consultation has been approved"
|
||||
- Confirmed date and time
|
||||
- Duration (45 minutes)
|
||||
- Consultation type (free/paid)
|
||||
- If paid: amount and payment instructions
|
||||
- Calendar file (.ics) attached
|
||||
- "Add to Calendar" button/link
|
||||
- Location/contact information
|
||||
- [ ] Language based on client preference
|
||||
- [ ] Professional confirmation tone
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: BookingApprovedEmail
|
||||
- Attach .ics file from Epic 3
|
||||
- Trigger: Consultation status changed to 'approved'
|
||||
|
||||
---
|
||||
|
||||
### Story 8.5: Booking Rejected Email
|
||||
|
||||
**Description:** Email to client when admin rejects their booking.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on booking rejection
|
||||
- [ ] **Content:**
|
||||
- "Your consultation request could not be approved"
|
||||
- Original requested date and time
|
||||
- Rejection reason (if provided by admin)
|
||||
- Invitation to request new consultation
|
||||
- Contact info for questions
|
||||
- [ ] Empathetic, professional tone
|
||||
- [ ] Language based on client preference
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: BookingRejectedEmail
|
||||
- Optional reason field from admin
|
||||
- Trigger: Consultation status changed to 'rejected'
|
||||
|
||||
---
|
||||
|
||||
### Story 8.6: Consultation Reminder (24 Hours)
|
||||
|
||||
**Description:** Reminder email sent 24 hours before scheduled consultation.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Scheduled job runs daily
|
||||
- [ ] Find consultations 24 hours away
|
||||
- [ ] **Content:**
|
||||
- "Reminder: Your consultation is tomorrow"
|
||||
- Date and time
|
||||
- Consultation type
|
||||
- Payment reminder (if paid and not received)
|
||||
- Calendar file link
|
||||
- Any preparation notes
|
||||
- [ ] Skip cancelled/no-show consultations
|
||||
- [ ] Language based on client preference
|
||||
|
||||
**Technical Notes:**
|
||||
- Scheduled command: php artisan reminders:send-24h
|
||||
- Run via Laravel scheduler
|
||||
- Mailable: ConsultationReminder24Email
|
||||
|
||||
---
|
||||
|
||||
### Story 8.7: Consultation Reminder (2 Hours)
|
||||
|
||||
**Description:** Reminder email sent 2 hours before scheduled consultation.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Scheduled job runs hourly
|
||||
- [ ] Find consultations 2 hours away
|
||||
- [ ] **Content:**
|
||||
- "Your consultation is in 2 hours"
|
||||
- Date and time
|
||||
- Final payment reminder (if applicable)
|
||||
- Contact info for last-minute issues
|
||||
- [ ] Skip cancelled/no-show consultations
|
||||
- [ ] Language based on client preference
|
||||
|
||||
**Technical Notes:**
|
||||
- Scheduled command: php artisan reminders:send-2h
|
||||
- More frequent checks for accuracy
|
||||
- Mailable: ConsultationReminder2hEmail
|
||||
|
||||
---
|
||||
|
||||
### Story 8.8: Timeline Update Notification
|
||||
|
||||
**Description:** Email to client when admin adds update to their timeline.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on timeline update creation
|
||||
- [ ] **Content:**
|
||||
- "Update on your case: [Case Name]"
|
||||
- Case reference number
|
||||
- Update content (full or summary)
|
||||
- Date of update
|
||||
- "View Timeline" button/link
|
||||
- [ ] Language based on client preference
|
||||
- [ ] Professional, informative tone
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: TimelineUpdateEmail
|
||||
- Trigger: TimelineUpdate created event
|
||||
- Link to client dashboard timeline view
|
||||
|
||||
---
|
||||
|
||||
### Story 8.9: Admin Notification - New Booking
|
||||
|
||||
**Description:** Email to admin when client submits new booking request.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Triggered on booking submission
|
||||
- [ ] Sent to admin email
|
||||
- [ ] **Content:**
|
||||
- "New Consultation Request"
|
||||
- Client name (individual or company)
|
||||
- Requested date and time
|
||||
- Problem summary (full)
|
||||
- Client contact info
|
||||
- "Review Request" button/link
|
||||
- [ ] Admin language preference (or default)
|
||||
- [ ] Priority indicator in subject line
|
||||
|
||||
**Technical Notes:**
|
||||
- Mailable: NewBookingAdminEmail
|
||||
- Send to configured admin email
|
||||
- Include direct link to booking management
|
||||
|
||||
---
|
||||
|
||||
### Story 8.10: Admin Notification - System Events
|
||||
|
||||
**Description:** Critical system notifications to admin.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
- [ ] Email failures notification
|
||||
- [ ] Scheduled job failures notification
|
||||
- [ ] Critical errors summary
|
||||
- [ ] **Content:**
|
||||
- Event type and description
|
||||
- Timestamp
|
||||
- Relevant details
|
||||
- Recommended action (if any)
|
||||
- [ ] Sent immediately (not queued)
|
||||
- [ ] Clear subject line indicating urgency
|
||||
|
||||
**Technical Notes:**
|
||||
- Use Laravel exception handler
|
||||
- Monitor queues and scheduler
|
||||
- Consider separate notification channel
|
||||
|
||||
---
|
||||
|
||||
## Dependencies
|
||||
|
||||
| Epic | Dependency |
|
||||
|------|------------|
|
||||
| Epic 1 | Base application, user preferences |
|
||||
| Epic 2 | User creation (welcome email) |
|
||||
| Epic 3 | Booking events, calendar files |
|
||||
| Epic 4 | Timeline updates |
|
||||
|
||||
## Risks & Mitigations
|
||||
|
||||
| Risk | Impact | Mitigation |
|
||||
|------|--------|------------|
|
||||
| Email delivery failures | High | Queue retry, logging, admin alerts |
|
||||
| SMTP configuration issues | High | Test email feature, validation |
|
||||
| Spam filtering | Medium | Proper SPF/DKIM, professional content |
|
||||
| Timezone issues in reminders | Medium | Store and display in consistent timezone |
|
||||
|
||||
## Definition of Done
|
||||
|
||||
- [ ] All stories completed with acceptance criteria met
|
||||
- [ ] All 9+ email types implemented
|
||||
- [ ] Emails render correctly (HTML and plain text)
|
||||
- [ ] Bilingual emails working
|
||||
- [ ] Branding consistent across all emails
|
||||
- [ ] Queue processing reliable
|
||||
- [ ] Reminder jobs scheduled and tested
|
||||
- [ ] Calendar attachments working
|
||||
- [ ] Admin notifications delivered
|
||||
- [ ] Code formatted with Pint
|
||||
Reference in New Issue
Block a user