Copied

Kanban Board

Backlog In Progress Testing Bugs Verified Shipped
Backlog
31
Security & Ops
BAA flips (Phase A.5)
JWT signing-key shape
P1 audit follow-ups
Card account updater
Staging environment split
Tribute polish (Phase D+) — only minor follow-ons remain
Tribute honoree-notify address (Phase D+)
AI-drafted tribute paragraph in receipt body (Phase D+)
Detail-page sidebar
Pause-recurring (vs cancel)
Pledge tracking
Engagement & Events
Event registration
Mobile event check-in
Auctions
Peer-to-peer fundraising
Volunteer scheduling
Memberships + dues
Beneficiary self-service
Marketing & Outreach
Email campaigns (advanced)
SMS text-to-give
Social posting
Direct mail tools
Tenant website builder
Operations
Grants management
Major-gifts pipeline
Accounting
Reporting dashboards
Integrations marketplace
AI & Mobile
Embedded AI assistant
AI donor outreach
iOS + Android apps
Deprioritized
Donor portal auth rethink
In Progress
3
Paused — infra-gated
Marketing-only sender subdomain — PAUSED (D2, infra-gated)
Active Work
Per-tenant rate limits
Stripe dunning config
Testing
2
Donor Merge
Playwright e2e (merge)
Seed near-duplicate fixture
Bugs
0
Verified
0
Shipped
78
Tribute donations — every surface live (2026-05-11)
Tribute donations — every surface live: form + kernel + receipt + PDF + thank-you + admin + donor portal (v1.0.178)
Donor self-service receipt PDF download (2026-05-11)
Donor self-service receipt PDF download (v1.0.159)
CI green — fully closed (2026-05-11)
CI green — fully closed in 3 commits + 1 follow-up format cleanup (v1.0.151)
Donor-portal smoke ALL GREEN (2026-05-11)
Donor-portal smoke ALL GREEN — §1.16 bug resolved; Inngest + Resend webhook chain verified for real workflow emails
Phase D Wave 1 — Email Marketing (smoke GREEN 2026-05-07)
Resend webhook chain verified end-to-end (19:04 UTC)
Campaigns smoke Step 9 (unsubscribe) done
Admit Resend webhook rows into email_events (v1.0.128) — verified
Resend webhook: svix-id-as-dedup-key (v1.0.125)
Resend webhook: real svix.Webhook.verify (v1.0.123)
Sarah Smoke segment filter — not a bug (merge-redirect); regression test added
Campaign detail page live polling
email_events.raw_event silent-failure fix
BFCache + CDN cache fix on auth surfaces
Wave 1 smoke GREEN on testcharity (2 recipients delivered)
EMAIL_FROM_DOMAIN env fix (doubled subdomain)
Surface Resend error in campaign_recipient.error_code
Campaigns dispatch race fix (status='sending')
Inngest concurrency scope=fn keyed on tenantId
Inngest cloud-mode default + prod env fix
Campaigns pages AdminShell fix
Migration 0035 — email marketing schema
Segment engine kernel
Campaign dispatch workers
Campaign admin UI
Unsubscribe + webhook correlation
D1 pgTAP (20) + Vitest (17) tests
Roadmap Site Hardening
Roadmap site security split
Foundation
Multi-tenant routing
Email + Google sign-in
Magic-link auth
Tenant onboarding
Subdomain per tenant
Marketing landing
Internal admin console
CI pipeline
Dev seed data
Auto-versioned deploys
Audit logging
Realtime infra
Audit P0 sweep (12)
FORCE RLS sweep
Party-read lint gate
Auto-reload on deploy
File-header naming sweep
Hook automation (3 agents)
Online Giving
Branded donation pages
Stripe Connect
One-time donations
Recurring donations
Tax receipts (instant)
Thank-you emails (1 hr)
Refunds
Webhook idempotency
Admin Dashboard
Live KPI tiles
Activity feed (realtime)
Donor list + search
Donor typeahead
Inline gift detail
Inline refund
Recurring schedules
Top donors widget
Donor edit form
Donor merge (3-step)
Soft-delete with undo
Refund modal live-updates
Donor Portal
Donor sign-in
Donor dashboard
Profile editing
Email-change confirm
Card swap on recurring
Cancel recurring
Revoke-all sign-out
donor.{slug} subdomain
ADR 032
Bug Fixes (C-06)
Email-change confirm fix
Card swap env var fix
Stripe Link overlay fix
Card swap retest
Diagnostic cleanup
pgTAP donor email change