Storefront and landing views use publicPath() so menu, shop, and booking pages resolve asset URLs on ladl.link.
Co-authored-by: Cursor <cursoragent@cursor.com>
Customers can connect their own domain to a merchant page (storefront/event):
add a domain, point an A record (apex + www) to the app server, click Verify —
DNS is checked, then Ladill Domains' central SSL service issues + installs the
Let's Encrypt cert and calls back to flip it live. The custom domain then serves
the mapped page (host resolution on /). Feature-gated: only active when a Domains
SSL API key is set, so this deploy is inert until wired.
- custom_domains table + CustomDomain model
- CustomDomainService (DNS verify, request cert), DomainsSslClient, DnsResolver
- settings UI panel, signed SSL callback receiver, host resolution on /
- feature tests (DNS verify/fail, signed callback, ownership)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The give→merchant transform left several independent breakages that 500'd
once a logged-in user hit the pages:
- /storefronts/{create,show,update,...} were wired to Qr\QrCodeController,
which renders events-lineage qr-codes.* views referencing 14 undefined
events.* routes. Rewire to StorefrontController (clean storefronts.* views).
- storefronts/show.blade.php @include('give.storefronts.partials.*') — the
view dir was renamed give→merchant but the include namespace wasn't.
- /payouts + /search queried qr_sale_orders.*_minor; migration created *_ghs.
- Remove dead GiveDonation model (nonexistent give_donations table).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The customize script's blind TYPE_CHURCH→TYPE_SHOP and churchLogo→menuLogo
replacements created a duplicate QrCode::TYPE_SHOP constant and duplicate
QrScanController::menuLogo()/menuCover() methods — fatal at request time
(crashed /dashboard with 500). The menu* methods already cover TYPE_SHOP,
so drop the redundant church-origin copies.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>