3.8 KiB
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
- Auth Module - JWT authentication, login, register, refresh tokens, logout
- Users Module - User CRUD, pagination, search, role management
- Settings Module - Global site settings singleton
Influence (Advocacy Campaigns)
- Campaigns Module - Campaign CRUD, targeting, public views
- Representatives Module - Represent API integration, representative cache
- Responses Module - Response wall, moderation, verification, upvoting
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
- Pages Module - Landing page CRUD, block library, MkDocs export
- Email Templates Module - Template CRUD, variable processing, versioning
- Media Module - 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 | 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) |