Coalition Builder¶
A modern platform for organizing and managing policy advocacy campaigns with stakeholder engagement tracking, endorsement collection, and geographic intelligence.
Key Capabilities¶
Organizations use this platform to:
- Manage Advocacy Campaigns: Create and track policy initiatives at federal and state levels
- Collect Verified Endorsements: Streamline supporter engagement with built-in verification and moderation
- Ensure Legal Compliance: GDPR-compliant cookie consent and comprehensive legal document management
- Customize Their Presence: Dynamic content management and comprehensive theming system
- Target Geographically: Leverage PostGIS integration for precise district-based organizing
- Track Campaign Impact: Monitor endorsement metrics and stakeholder distribution
How Organizations Use Coalition Builder¶
Campaign Lifecycle & Advocacy Workflow¶
%%{init: {'theme':'basic'}}%%
flowchart TD
A[π― Create Campaign] --> B[π₯ Recruit Stakeholders]
B --> C[β
Collect Endorsements]
C --> D[π Track Progress]
D --> E[ποΈ Engage Legislators]
E --> F[π’ Drive Policy Change]
Coalition Builder guides your organization through the complete advocacy process:
- Create Campaign: Launch policy initiatives around federal or state legislation
- Recruit Stakeholders: Identify and engage diverse supporters (businesses, nonprofits, citizens, government officials)
- Collect Endorsements: Secure verified support with built-in spam protection
- Track Progress: Analyze geographic distribution and engagement metrics
- Engage Legislators: Target representatives using congressional district data
- Drive Policy Change: Export supporter data and coordinate strategic advocacy
Core Components & Relationships¶
%%{init: {'theme':'basic'}}%%
flowchart TD
Stakeholders[π₯ Stakeholders<br/>Businesses, Nonprofits, Citizens, Government]
Regions[πΊοΈ Regions<br/>States, Counties, Districts]
Legislators[ποΈ Legislators<br/>Federal, State]
subgraph Core["π― Core Platform"]
Campaigns[π Policy Campaigns]
Endorsements[π Verified Endorsements]
end
Legislation[π Legislation<br/>Federal Bills, State Bills]
Stakeholders --> Endorsements
Campaigns --> Endorsements
Campaigns --> Legislation
Regions --> Stakeholders
Regions --> Legislators
Regions --> Legislation
Legislators --> Legislation
Coalition Builder manages:
- Diverse stakeholder categories across sectors and organizational types
- Multi-level campaigns linking federal and state legislation
- Verified endorsements with geographic and legislative targeting
- Geographic intelligence for strategic advocacy and outreach
Architecture¶
- Backend: Django API with PostgreSQL/PostGIS
- Frontend: React with TypeScript and styled-components
- SSR: Next.js for SEO optimization (optional)
- Infrastructure: Terraform-managed AWS deployment
Frontend Architecture¶
Coalition Builder uses a flexible frontend architecture that supports both traditional SPA deployment and optional server-side rendering (SSR).
How the Frontend Works¶
The /frontend
directory contains a React application built with Webpack that serves as the primary user interface. This single codebase works in two different deployment modes:
Without SSR (Default Mode):
- React app is built into static files (JS/CSS with cache-busting hashes)
- Django serves these files through a template (
index.html
) - Django's
home
view readsasset-manifest.json
to inject correct file paths - React takes over as a single-page application in the browser
- API calls go to Django backend via
/api/*
routes
With SSR (Optional Mode):
- Next.js handles server-side rendering for better SEO
- Django serves only API endpoints (
/api/*
,/admin/*
) - nginx routes frontend requests (
/*
) to Next.js instead of Django - Next.js imports and renders the same React components from
/frontend/src/components/
- Shared error handling logic ensures consistent behavior in both modes
Request Routing¶
SSR Disabled:
SSR Enabled:
Key Benefits¶
- Single Frontend Codebase: Write once, deploy with or without SSR
- Django Integration: Static files served through Django's static system
- Asset Management: Automatic cache-busting via asset manifest
- Deployment Flexibility: Choose complexity vs. performance trade-offs
- Fallback Strategy: Can disable SSR without losing frontend functionality
This architecture allows organizations to start simple (Django + React SPA) and add SSR later for improved SEO without rewriting their frontend code.
Getting Started¶
- Installation - Quick setup for development
- Configuration - Environment variables and settings
- Development - Development workflow and contributing
- Deployment - Production deployment options
User Guides¶
Comprehensive guides for managing your coalition platform:
- Endorsement Workflow - Collect and manage campaign endorsements
- Legal Compliance - Configure Terms of Use, Privacy Policy, and GDPR cookie consent
- Content Management - Complete guide to the Django admin interface
- Campaign Management - Create and manage policy advocacy campaigns
- Stakeholder Management - Organize and engage with supporters and partners
- Homepage Management - Configure organization branding and homepage content
- Theme Management - Customize branding, colors, and visual appearance
Development Guides¶
- Development Setup - Detailed environment setup including automated tooling
- Testing Guide - Comprehensive testing with pytest, Jest, and Go
- Site Password Protection - Configure site-wide authentication for development and production
Documentation¶
- Database Models - Visual diagrams and documentation of database structure
- Endorsement Workflow - Complete endorsement system process flow with Mermaid diagrams
- API Reference - Auto-generated from Django models and views
- Frontend Components - Auto-generated from React components
- Environment Variables - Complete configuration reference
- CLI Reference - Command-line tools and Django management commands
Support¶
- Issues and feature requests: GitHub Issues
- Development questions: See Development Guide
- Deployment help: See Deployment Guide