diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index b1e188e..c9b8b29 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -6,15 +6,24 @@ ## Current Status Summary -### ✅ Email Service +### ✅ Email Service - COMPLETE -**Status: MAILGUN CONFIGURED** +**Status: POSTAL SELF-HOSTED (PRODUCTION READY)** -- Mailgun API as primary provider -- AWS SES as fallback -- From address: `noreply@elmeg.xyz` -- Frontend URL: `https://elmeg.xyz` -- **Pending:** DNS records for `mail.elmeg.xyz` subdomain +| Component | Status | +|-----------|--------| +| Postal Mail Server | ✅ Running on tangible-aacorn | +| SMTP Host | `smtp.elmeg.xyz:25` | +| Web Dashboard | | +| SPF Record | ✅ Configured | +| DKIM Record | ✅ Configured | +| DMARC Record | ✅ Configured | +| Return Path | ✅ Configured | + +**SMTP Credentials:** + +- Username: `elmeg/main` +- Password: (in production .env) ### Templates Available @@ -35,9 +44,44 @@ | Auth Console Error Fix | ✅ Fixed | | Videos Page Link Fix | ✅ Fixed | | Hide Test Users | ✅ Implemented | -| Mailgun Integration | ✅ Code Ready | | Bandcamp/Nugs Links | ✅ Complete | | Enhanced Footer | ✅ Deployed | +| **Postal Mail Server** | ✅ Built & Deployed | +| **Email DNS Records** | ✅ SPF/DKIM/DMARC/RP | +| **SMTP Integration** | ✅ Backend configured | + +--- + +## Postal Mail Server Details + +### Infrastructure + +| Component | Details | +|-----------|---------| +| Location | tangible-aacorn (Hetzner ARM64) | +| Build | Custom ARM64 from source | +| Database | MariaDB 11 | +| Queue | RabbitMQ 3.13 | +| Routing | Traefik with Let's Encrypt | + +### DNS Records (Cloudflare) + +| Type | Name | Value | +|------|------|-------| +| A | postal | 159.69.219.254 (DNS only) | +| A | smtp | 159.69.219.254 (DNS only) | +| MX | @ | smtp.elmeg.xyz (Priority 10) | +| TXT | @ | v=spf1 mx a ip4:159.69.219.254 ~all | +| TXT | postal-VkYvkc._domainkey | v=DKIM1; t=s; h=sha256; p=... | +| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:admin@elmeg.xyz | +| CNAME | psrp | smtp.elmeg.xyz | + +### Admin Access + +- **URL:** +- **Login:** +- **Organization:** Elmeg +- **Mail Server:** main --- @@ -61,50 +105,21 @@ | Chase Song Played | Post-import check | Needs backend work | | Weekly Digest | Email templates + cron | Future | -### Phase 3: Data & Account (Deferred) - -| Feature | Notes | -|---------|-------| -| Export My Data | GDPR compliance, JSON download | -| Delete Account | Cascade delete + confirmation | -| Connected Accounts | OAuth providers (future) | - --- ## External Links System ### ✅ Phase 1: Database + Admin - COMPLETE -- `bandcamp_link`, `nugs_link` on Show model -- `bandcamp_link`, `nugs_link` on Performance model -- Admin PATCH endpoints for both -- Bulk import endpoint: `POST /admin/import/external-links` - ### ✅ Phase 2: Frontend Display - COMPLETE -- Show-level links (buttons next to tour info) -- Performance-level links (icons in setlist) - ### Phase 3: Import Tools (Future) -- [ ] CSV import UI -- [ ] Admin bulk edit - --- ## Bug Tracker -**Status: ✅ DEPLOYED** - -- **URL:** `/bugs` -- **Features:** - - Bug/Feature request submission - - My Tickets view - - Known Issues (public) - - Ticket detail with comments - - Upvoting - - Admin status/visibility control -- **Database:** `ticket`, `ticketcomment` tables created +**Status: ✅ DEPLOYED at `/bugs`** --- @@ -112,22 +127,7 @@ ### ✅ Phase 1: Jewel Tones (Complete) -12 gemstone-named colors available to all users - -### Phase 2: Pastels (Unlock 1) - -- Trigger: 5 shows attended OR 10 ratings -- Colors: Soft versions of jewel tones - -### Phase 3: Neons (Unlock 2) - -- Trigger: 15 shows attended OR Level 5 -- Colors: Vibrant high-saturation - -### Phase 4: Gradients (Unlock 3) - -- Trigger: Level 10 OR special achievement -- Two-tone diagonal gradients +### Phase 2-4: (Future) --- @@ -135,8 +135,8 @@ ### High Priority -- [ ] Configure Mailgun DNS records -- [ ] Add Mailgun env vars to production +- [ ] Test email verification flow end-to-end +- [ ] Test password reset flow end-to-end ### Medium Priority @@ -152,33 +152,13 @@ --- -## Questions to Resolve - -### 1. Analytics Provider - -**Options:** - -- **Plausible** (privacy-first, GDPR compliant, ~$9/mo) -- **Umami** (self-hosted, free) -- **PostHog** (product analytics + session replay) - -### 2. Email DNS - -**Needed for Mailgun:** - -- SPF record for mail.elmeg.xyz -- DKIM records (2) -- MX records for bounce handling -- DMARC record - ---- - ## Implementation Priority -### Immediate (Next Session) +### Immediate (Testing) -1. [ ] Add Mailgun env vars to production -2. [ ] Configure DNS for mail.elmeg.xyz +1. [ ] Register test account to trigger verification email +2. [ ] Test password reset flow +3. [ ] Monitor email deliverability in Postal dashboard ### This Week