# 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 - [**Auth Module**](auth.md) - JWT authentication, login, register, refresh tokens, logout - [**Users Module**](users.md) - User CRUD, pagination, search, role management - [**Settings Module**](settings.md) - Global site settings singleton ### Influence (Advocacy Campaigns) - [**Campaigns Module**](campaigns.md) - Campaign CRUD, targeting, public views - [**Representatives Module**](representatives.md) - Represent API integration, representative cache - [**Responses Module**](responses.md) - Response wall, moderation, verification, upvoting ### Map & Location Services - [**Locations Module**](locations.md) - Location CRUD, geocoding, NAR import, CSV operations - [**Cuts Module**](cuts.md) - Polygon CRUD, spatial queries, point-in-polygon - [**Shifts Module**](shifts.md) - Shift CRUD, volunteer signups, email notifications - [**Canvass Module**](canvass.md) - Canvassing sessions, visit tracking, walking routes ### Content Management - [**Pages Module**](pages.md) - Landing page CRUD, block library, MkDocs export - [**Email Templates Module**](email-templates.md) - Template CRUD, variable processing, versioning - [**Media Module**](media.md) - Video library, upload, metadata, reactions (Fastify API) ## 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](auth.md) | Authentication & sessions | `/api/auth/*` | | [users](users.md) | User management | `/api/users/*` | | [settings](settings.md) | Site settings | `/api/settings/*` | | [campaigns](campaigns.md) | Advocacy campaigns | `/api/campaigns/*` | | [representatives](representatives.md) | Representative lookup | `/api/representatives/*` | | [responses](responses.md) | Response wall | `/api/responses/*` | | [locations](locations.md) | Location database | `/api/locations/*` | | [cuts](cuts.md) | Geographic cuts | `/api/cuts/*` | | [shifts](shifts.md) | Volunteer shifts | `/api/shifts/*` | | [canvass](canvass.md) | Canvassing system | `/api/canvass/*` | | [pages](pages.md) | Landing pages | `/api/pages/*` | | [media](media.md) | Video library | `/media-api/*` (port 4100) | ## Related Documentation - [Backend Overview](../index.md) - [Services](../services/index.md) - [Middleware](../middleware/index.md) - [Database Models](../../database/models/index.md) - [API Reference](../../api-reference/index.md)