Files
ladill-events/DEPLOY.md
T
isaaccladandCursor d8dbc83e2d
Deploy Ladill QR Plus / deploy (push) Successful in 28s
Extract Ladill Events as a standalone events suite at events.ladill.com.
Full control center for ticketed events, contributions, attendees, badges,
and programmes — not a QR utility clone. Includes SSO shell, import command,
and platform cutover runbook.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 09:39:53 +00:00

2.6 KiB

Ladill Events — deploy & cutover runbook

Standalone app for the full events suite at events.ladill.com — ticketed events, contributions, free registration, attendee check-in, badge printing, and programme/itinerary outlines. Not a QR utility app; this is the events control center (Overview, Events, Programmes, Payments & Payouts).

Trusts auth.ladill.com for SSO. Ticket/contribution money settles via Ladill Pay into the one platform UserWallet. Public scans stay at ladill.com/q/<code> (blueprint decision — printed codes never migrate).


0. Prerequisites

Secret Where
LADILL_SSO_CLIENT_ID / LADILL_SSO_CLIENT_SECRET passport:client on platform
BILLING_API_KEY_EVENTS platform .env + this app
IDENTITY_API_KEY_EVENTS platform .env + this app

1. Gitea repo + CI

  1. Repo: ladill-events (create on Gitea)
  2. Push to main triggers .gitea/workflows/deploy.yml.
  3. App root: /var/www/ladill-events

2. Server app-slot + database

sudo install -d -o deploy -g www-data /var/www/ladill-events
sudo mysql -e "CREATE DATABASE ladill_events CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'ladill_events'@'127.0.0.1' IDENTIFIED BY '<pw>';"
sudo mysql -e "GRANT ALL ON ladill_events.* TO 'ladill_events'@'127.0.0.1'; FLUSH PRIVILEGES;"

3. Register OIDC client (platform)

php artisan passport:client \
  --name="Ladill Events" \
  --redirect_uri="https://events.ladill.com/sso/callback"

4. Platform integration

BILLING_API_KEY_EVENTS=<same>
IDENTITY_API_KEY_EVENTS=<same>
RP_EVENTS_FRONTCHANNEL_LOGOUT=https://events.ladill.com/sso/logout-frontchannel
LADILL_EVENTS_APP_URL=https://events.ladill.com

5. nginx + TLS

sudo deployment/setup-service-subdomain-nginx.sh events --app /var/www/ladill-events/current

Public /q/* event landings can stay on the monolith initially; nginx can proxy event codes to this app after import.

6. First deploy

cd /var/www/ladill-events/current
php artisan migrate --force
php artisan config:cache route:cache view:cache

7. Data migration

# platform
php artisan events:export --out=/tmp/events-export.json

# events app
php artisan events:import /tmp/events-export.json \
  --storage-source=/var/www/ladill/current/storage/app/private/qr \
  --commit

8. Verify

  • Sign in at https://events.ladill.com
  • Overview shows registrations, revenue, check-in rate
  • Events list + create (tickets / contributions / free)
  • Attendees, badges, programme share
  • Account portal /qr-codes/{id}/attendees redirects here