feat: email receipts and repair estimates #13

Merged
ryan merged 1 commits from feature/email-receipts into main 2026-04-05 20:35:00 +00:00
Owner

Summary

  • POS receipt emailing from the payment completion dialog
  • Repair estimate emailing from the ticket detail page
  • Server-side HTML email templates with inline CSS
  • Per-transaction/ticket rate limiting (5/hr via Redis)
  • Customer email pre-fill from linked account
  • Test email provider for API tests

Test plan

  • 12 unit tests for email template renderers
  • 8 API tests for email endpoints (send, validation, customerEmail)
  • Manual: complete a POS sale → email receipt → verify email received
  • Manual: open repair ticket → email estimate → verify email received
  • Verify rate limiting blocks after 5 sends per hour

🤖 Generated with Claude Code

## Summary - POS receipt emailing from the payment completion dialog - Repair estimate emailing from the ticket detail page - Server-side HTML email templates with inline CSS - Per-transaction/ticket rate limiting (5/hr via Redis) - Customer email pre-fill from linked account - Test email provider for API tests ## Test plan - [x] 12 unit tests for email template renderers - [x] 8 API tests for email endpoints (send, validation, customerEmail) - [ ] Manual: complete a POS sale → email receipt → verify email received - [ ] Manual: open repair ticket → email estimate → verify email received - [ ] Verify rate limiting blocks after 5 sends per hour 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ryan added 1 commit 2026-04-05 20:33:07 +00:00
feat: email receipts and repair estimates
All checks were successful
CI / ci (pull_request) Successful in 24s
CI / e2e (pull_request) Successful in 1m2s
45fd6d34eb
Backend:
- Server-side HTML email templates (receipt + estimate) with inline CSS
- POST /v1/transactions/:id/email-receipt with per-transaction rate limiting
- POST /v1/repair-tickets/:id/email-estimate with per-ticket rate limiting
- customerEmail field added to receipt and ticket detail responses
- Test email provider for API tests (logs instead of sending)

Frontend:
- POS payment dialog Email button enabled with inline email input
- Pre-fills customer email from linked account
- Repair ticket detail page has Email Estimate button with dialog
- Pre-fills from account email

Tests:
- 12 unit tests for email template renderers
- 8 API tests for email receipt/estimate endpoints and validation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ryan merged commit abe75fb1fd into main 2026-04-05 20:35:00 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ryan/lunarfront-app#13