Campaigns (Internal)
Frontend
- Feature page:
src/features/campaigns/components/CampaignsPage.tsx - Route:
/campaigns - Main pattern: left create/list + right selected workspace tabs.
Tabs
detailsplanningcontentperformance
Core Behaviors
- Create campaign (manual)
- Create + auto-plan campaign (
/campaigns/:id/generate-plan) - Save/revert details with dirty state
- Generate content (
/campaigns/:id/generate-content) - Fetch content (
/campaigns/:id/content) - Fetch analytics (
/campaigns/:id/analytics)
Backend Endpoints Used
GET /api/campaignsPOST /api/campaignsPUT /api/campaigns/:idPOST /api/campaigns/chatPOST /api/campaigns/:id/generate-planPOST /api/campaigns/:id/generate-contentGET /api/campaigns/:id/contentGET /api/campaigns/:id/analytics
Data Mapping Pattern
Keep mapping helpers close to the feature:
fromBackend(campaign)toDraft(campaign)toUpdatePayload(draft)
This keeps API format changes isolated from UI controls.