d802ce2a7c
feat(subscribe): queue Weeztix coupon, then Mailwizz; document queues
...
- RegisterSubscriberOnPage: persist subscriber then dispatch integrations
- IssueWeeztixCouponForSubscriber on weeztix queue; dispatches Mailwizz after
coupon attempt (idempotent if coupon_code already set); failed() fallback
- SyncSubscriberToMailwizz implements ShouldQueueAfterCommit
- Deployment: worker listens weeztix,mailwizz,default; warn against sync in prod
- .env.example: QUEUE_CONNECTION notes for subscribe UX
Made-with: Cursor
2026-04-05 11:34:01 +02:00
a3158ffa34
fix: use official Weeztix OAuth login and token URLs
...
Redirect to login.weeztix.com/login per docs; default token host to
auth.weeztix.com. Open Ticket setups can override via env.
Made-with: Cursor
2026-04-05 09:51:11 +02:00
17e784fee7
feat: E.164 phone validation and storage with libphonenumber
...
- Add giggsey/libphonenumber-for-php, PhoneNumberNormalizer, ValidPhoneNumber rule
- Store subscribers as E.164; mutator normalizes on save; optional phone required from form block
- Migration to normalize legacy subscriber phones; Mailwizz/search/UI/tests updated
- Add run-deploy-from-local.sh and PREREGISTER_DEFAULT_PHONE_REGION in .env.example
Made-with: Cursor
2026-04-04 14:25:52 +02:00
4f3fefca5c
chore: checkpoint before block builder refactor
2026-04-03 23:03:09 +02:00
330950cc6e
feat: Phase 5 - polish, validation, rate limiting, Dutch translations
2026-04-03 22:13:59 +02:00
a1d570254e
feat: Phase 3 - public registration pages and Mailwizz config
2026-04-03 21:42:19 +02:00
904cf1241b
feat: initial project with Phase 1 complete
2026-04-03 19:56:38 +02:00