3.8 KiB

Backend Modules

Backend modules provide feature-specific functionality for the Changemaker Lite platform. Each module follows a consistent architecture pattern with schemas, services, and routes.

Module Architecture

Each module typically contains:

  • Schemas (*.schemas.ts) - Zod validation schemas for requests/responses
  • Service (*.service.ts) - Business logic and database operations
  • Routes (*.routes.ts) - Express router definitions with middleware
  • Types - TypeScript interfaces (when needed beyond Prisma types)

Modules may split routes into admin and public variants (e.g., campaigns.routes.ts and campaigns-public.routes.ts).

Core Modules

Authentication & User Management

Influence (Advocacy Campaigns)

Map & Location Services

  • Locations Module - Location CRUD, geocoding, NAR import, CSV operations
  • Cuts Module - Polygon CRUD, spatial queries, point-in-polygon
  • Shifts Module - Shift CRUD, volunteer signups, email notifications
  • Canvass Module - Canvassing sessions, visit tracking, walking routes

Content Management

Supporting Modules

Infrastructure

  • Services Module - Service health checks and monitoring
  • QR Module - QR code PNG generation
  • Docs Module - MkDocs and Code Server integration

Integrations

  • Listmonk Module - Newsletter sync, list management
  • Pangolin Module - Tunnel management, resource configuration
  • Observability Module - Prometheus/Grafana integration

Email & Queuing

  • Campaign Emails Module - Email tracking, statistics
  • Email Queue Module - BullMQ queue administration
  • Postal Codes Module - Postal code caching service

Geocoding & Spatial

  • Geocoding Module - Multi-provider geocoding (6 providers)
  • Tracking Module - GPS tracking sessions (volunteer + admin)
  • Map Settings Module - Map configuration singleton

Module List

Module Purpose Routes
auth Authentication & sessions /api/auth/*
users User management /api/users/*
settings Site settings /api/settings/*
campaigns Advocacy campaigns /api/campaigns/*
representatives Representative lookup /api/representatives/*
responses Response wall /api/responses/*
locations Location database /api/locations/*
cuts Geographic cuts /api/cuts/*
shifts Volunteer shifts /api/shifts/*
canvass Canvassing system /api/canvass/*
pages Landing pages /api/pages/*
media Video library /media-api/* (port 4100)