POSITIONING FIX — PNPL is NOT just 'QR codes at events': - Charities collecting at events (QR per table) - High-net-worth donor outreach (personal links via WhatsApp/email) - Org-to-org pledges (multi-charity projects) - Personal fundraisers (LaunchGood/Enthuse redirect) TERMINOLOGY (throughout app): - Events → Campaigns (sidebar, pages, create dialogs, onboarding) - QR Codes page → Pledge Links (sharing-first, QR is one option) - Scans → Clicks (not just QR scans) - 'New Event' → 'New Campaign' - 'Create QR Code' → 'Create Pledge Link' - Source label: 'Table Name' → 'Source / Channel' SHARING (pledge links page): - 4-button share row: Copy · WhatsApp · Email · More (native share) - Each link shows its full URL - Create dialog suggests: 'WhatsApp Family Group, Table 5, Instagram Bio' - QR code is still shown but as one option, not the hero LANDING PAGE (complete rewrite): - Hero: 'Collect pledges. Convert them into donations.' - 4 use case cards: Events, HNW Donors, Org-to-Org, Personal Fundraisers - 'Share anywhere' section: WhatsApp, QR, Email, Instagram, Twitter, 1-on-1 - Platform support: Bank Transfer, LaunchGood, Enthuse, JustGiving, GoFundMe, Any URL - Islamic fund types section: Zakat, Sadaqah, Sadaqah Jariyah, Lillah, Fitrana ZAKAT & FUND TYPES: - Organization.zakatEnabled toggle in Settings - Pledge.fundType: general, zakat, sadaqah, lillah, fitrana - Identity step: fund type picker (5 options) when org has zakatEnabled - Zakat note: Quran 9:60 categories reference - Settings: toggle card with fund type descriptions FUND ALLOCATION: - Event.fundAllocation: 'Mosque Building Fund', 'Orphan Sponsorship' etc. - Charities can also add external URL for reference/allocation (not just fundraisers) - Shows on campaign cards and pledge flow
83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
# Infrastructure Access
|
|
# All values live in `.env` (gitignored). This file maps the topology.
|
|
|
|
## Servers
|
|
| Var | Purpose |
|
|
|-----|---------|
|
|
| `SSH_USER`, `SSH_HOST`, `SSH_PORT` | Primary server SSH (159.195.60.33) |
|
|
| `CR_LIVE_HOST`, `CR_LIVE_USER`, `CR_LIVE_SSH_KEY` | CR owned live server (161.35.173.174) — Laravel app |
|
|
| `MARKETING_HOST`, `MARKETING_USER`, `MARKETING_SSH_KEY` | Marketing site (178.128.169.175) — not yet accessible |
|
|
| `WP_HOST` | WordPress production (157.245.43.50) — www.charityright.org.uk |
|
|
|
|
### SSH Commands
|
|
```bash
|
|
# Primary server
|
|
ssh root@159.195.60.33
|
|
|
|
# CR owned live server
|
|
ssh -i ~/.ssh/id_ed25519_charity root@161.35.173.174
|
|
|
|
# Marketing site (not yet accessible)
|
|
ssh -i ~/.ssh/id_ed25519_charity root@178.128.169.175
|
|
|
|
# WordPress production (www.charityright.org.uk)
|
|
ssh root@157.245.43.50
|
|
```
|
|
|
|
## Incus Containers (on primary server)
|
|
| Container | Internal IP | Status | Purpose |
|
|
|-----------------|-----------------|---------|---------------|
|
|
| cr-server-new | 10.213.16.224 | RUNNING | CharityRight |
|
|
| qc-server-new | 10.213.16.234 | RUNNING | QuikCue |
|
|
| qc-server | — | STOPPED | legacy |
|
|
|
|
## HAProxy (on primary server)
|
|
| Domain pattern | Backend |
|
|
|----------------------|----------------------|
|
|
| charityright domains | → cr-server-new:443/80 |
|
|
| quikcue domains | → qc-server-new:443/80 |
|
|
| antivirus.quikcue.com| → localhost:8877 |
|
|
| SSH (gitea) | → qc-server-new:2224 |
|
|
|
|
## Databases
|
|
| Var | Type | Purpose |
|
|
|-----|------|---------|
|
|
| `DATABASE_URL` | Postgres | donation_warehouse (port 5000 on primary) |
|
|
| `MYSQL_HOST`, `MYSQL_PORT`, `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD` | MySQL | CharityRight legacy (DigitalOcean managed) |
|
|
| `REDIS_HOST`, `REDIS_PASSWORD`, `REDIS_PORT` | Redis | CharityRight sessions/cache |
|
|
|
|
## Services on Server
|
|
| Path | Service | Key Vars |
|
|
|------|---------|----------|
|
|
| `/opt/ayn-antivirus` | AYN Antivirus scanner + dashboard | `ANTHROPIC_API_KEY` |
|
|
| `/opt/enthuse-db-sync-v2` | Enthuse donation sync | `ENTHUSE_EMAIL`, `TOTP_SECRET`, `GOOGLE_CLIENT_*` |
|
|
| `/opt/launchgood-sync` | LaunchGood donation sync | `LG_EMAIL`, `LG_PASSWORD` |
|
|
| `/root/legacy-donation-system-laravel` | CharityRight Laravel app | `STRIPE_*`, `PAYPAL_*`, `GOCARDLESS_*`, `POSTMARK_TOKEN` |
|
|
| `/root/redis-v2` | Redis instance | `REDIS_PASSWORD` |
|
|
|
|
## Payment Providers
|
|
| Var prefix | Provider |
|
|
|------------|----------|
|
|
| `STRIPE_*` | Stripe (live) |
|
|
| `PAYPAL_*` | PayPal (live) |
|
|
| `GOCARDLESS_*` | GoCardless (live) |
|
|
|
|
## Mail
|
|
| Var | Provider |
|
|
|-----|----------|
|
|
| `SENDGRID_TX_API_KEY` | SendGrid |
|
|
| `POSTMARK_TOKEN` | Postmark (active mailer) |
|
|
|
|
## Third-party Integrations
|
|
| Var | Service |
|
|
|-----|---------|
|
|
| `N3O_*_ENDPOINT` | N3O/Engage donation import hooks |
|
|
| `ZAPIER_WEBHOOK_ENDPOINT` | Zapier automation |
|
|
| `GOOGLE_PLACES_API_KEY` | Google Places autocomplete |
|
|
| `CT_STRAVA_*` | Strava challenge tracker |
|
|
| `WORDPRESS_URL`, `WORDPRESS_KEY` | WordPress (Cloudways) |
|
|
|
|
## CharityRight n8n
|
|
- **URL**: https://n8n.charityright.org.uk
|
|
- **API Key**: stored in .env as N8N_CR_API_KEY
|