Donation checkout via Ladill Pay (9% fee), church/giving QR pages, SSO, and platform scan forwarding. Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
Ladill Give — deploy & cutover runbook
Standalone app for online giving pages at give.ladill.com — branded donation
pages with collection categories (Offering, Tithe, Building Fund…). Donations
settle into the one platform UserWallet (9% fee), then withdraw via
account.ladill.com.
Public scans stay at ladill.com/q/<code> (blueprint decision — printed codes
never migrate). The platform host forwards church/giving codes to this app (see
GiveQrForwarder on the monolith); grant the platform DB user read access:
sudo mysql -e "GRANT SELECT ON ladill_give.qr_codes TO 'ladilldb'@'127.0.0.1'; FLUSH PRIVILEGES;"
Set GIVE_DB_* on the platform .env if the lookup user differs from the
main app DB user.
0. Prerequisites
| Secret | Where |
|---|---|
LADILL_SSO_CLIENT_ID / LADILL_SSO_CLIENT_SECRET |
passport:client on platform |
BILLING_API_KEY_GIVE |
platform .env + this app |
PAY_API_KEY_GIVE |
platform .env + this app — Ladill Pay checkout (9% donations tier) |
IDENTITY_API_KEY_GIVE |
platform .env + this app |
PLATFORM_DB_* |
read ladilldb.platform_settings (Paystack keys from admin → Billing) |
1. Gitea repo + CI
- Repo: ladill-give (create on Gitea)
- Push to
maintriggers.gitea/workflows/deploy.yml. - App root:
/var/www/ladill-give
2. Server app-slot + database
sudo install -d -o deploy -g www-data /var/www/ladill-give
sudo install -d -o deploy -g www-data /var/www/ladill-give/{releases,shared}
sudo mysql -e "CREATE DATABASE ladill_give CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'ladill_give'@'127.0.0.1' IDENTIFIED BY '<pw>';"
sudo mysql -e "GRANT ALL ON ladill_give.* TO 'ladill_give'@'127.0.0.1'; FLUSH PRIVILEGES;"
sudo mysql -e "GRANT SELECT ON ladilldb.platform_settings TO 'ladill_give'@'127.0.0.1'; FLUSH PRIVILEGES;"
3. Register OIDC client (platform)
php artisan passport:client \
--name="Ladill Give" \
--redirect_uri="https://give.ladill.com/sso/callback"
4. Platform integration
BILLING_API_KEY_GIVE=<same>
IDENTITY_API_KEY_GIVE=<same>
PAY_API_KEY_GIVE=<same>
RP_GIVE_FRONTCHANNEL_LOGOUT=https://give.ladill.com/sso/logout-frontchannel
LADILL_GIVE_APP_URL=https://give.ladill.com
GIVE_DB_DATABASE=ladill_give
Add give to config/pdns.php service subdomains.
5. nginx + TLS
sudo deployment/setup-service-subdomain-nginx.sh give --app /var/www/ladill-give/current
6. First deploy
cd /var/www/ladill-give/current
php artisan migrate --force
php artisan config:cache route:cache view:cache
7. Verify
- SSO login at
give.ladill.com - Create a giving page, download QR PNG
- Scan
/q/<code>, give test amount, confirm wallet credit (net of 9%) - Withdraw from
account.ladill.com/wallet
Product IA (blueprint)
- Overview — total raised, donors, active causes, recent donations
- Giving Pages — create/manage branded giving pages + QR
- Donations — incoming donation feed
- Payouts — wallet-first settlement, withdraw to bank/MoMo
- Settings — organisation profile