From 7895ce683e4d132bf2f6cce755e5c34e76fe23ee Mon Sep 17 00:00:00 2001 From: bunker-admin Date: Mon, 16 Feb 2026 10:44:18 -0700 Subject: [PATCH] Tonne of debugging - getting ready for the production builds --- .claude/agents/foss-compliance-reviewer.md | 180 + CLAUDE.md | 836 +- NARguide.pdf | Bin 0 -> 363524 bytes PANGOLIN_NGINX_FIX_SUMMARY.md | 181 + PRODUCTION_403_FIX.md | 200 + RNAguide.pdf | Bin 0 -> 397942 bytes V2_PLAN.md | 15 +- admin/package-lock.json | 419 +- admin/package.json | 5 + admin/src/App.tsx | 93 +- admin/src/components/AppLayout.tsx | 67 +- admin/src/components/FeatureGate.tsx | 2 +- admin/src/components/GrapesJSEditor.tsx | 32 + admin/src/components/MediaPublicLayout.tsx | 104 + admin/src/components/PublicLayout.tsx | 37 +- admin/src/components/VolunteerFooterNav.tsx | 28 +- .../components/canvass/AddLocationDrawer.tsx | 27 +- .../canvass/AddressSearchOverlay.tsx | 25 +- admin/src/components/canvass/AdminLiveMap.tsx | 33 +- .../components/canvass/BottomControlPanel.tsx | 418 + .../canvass/CanvassBottomToolbar.tsx | 81 +- .../src/components/canvass/CanvassLegend.tsx | 7 +- .../components/canvass/CanvassMarkerGroup.tsx | 284 + .../components/canvass/LocationEditDrawer.tsx | 17 +- .../components/canvass/VisitRecordingForm.tsx | 300 +- .../components/canvass/VolunteerMapDrawer.tsx | 157 +- .../components/canvass/VolunteerMapHeader.tsx | 3 +- .../components/canvass/canvassClusterUtils.ts | 150 + .../email-templates/EmailTemplateEditor.tsx | 481 + .../email-templates/LAYOUT_RECOMMENDATION.md | 470 + .../email-templates/TestEmailModal.tsx | 247 + .../email-templates/VariablesPanel.tsx | 187 + .../email-templates/VersionHistoryDrawer.tsx | 156 + .../email-templates/VideoVariableEditor.tsx | 178 + .../landing-pages/LandingPageEditor.tsx} | 49 +- admin/src/components/map/AdminMapView.tsx | 443 +- admin/src/components/map/CutEditorMap.tsx | 19 +- admin/src/components/map/MapLegend.tsx | 14 + admin/src/components/map/TileLayerToggle.tsx | 8 +- admin/src/components/map/mapIcons.ts | 68 + admin/src/components/map/mapUtils.ts | 83 +- .../components/media/AdvancedVideoPlayer.tsx | 288 + admin/src/components/media/AnalyticsChart.tsx | 116 + admin/src/components/media/BulkActionsBar.tsx | 52 + admin/src/components/media/CommentSection.tsx | 226 + .../components/media/DeleteConfirmModal.tsx | 58 + admin/src/components/media/EditVideoModal.tsx | 155 + .../components/media/ExpandedVideoCard.tsx | 342 + admin/src/components/media/LiveChat.tsx | 570 + admin/src/components/media/MediaBottomNav.tsx | 108 + admin/src/components/media/MediaSidebar.tsx | 653 + .../components/media/ProgressBarMarkers.tsx | 131 + .../src/components/media/PublicVideoCard.tsx | 345 + admin/src/components/media/PublishModal.tsx | 64 + .../components/media/QuickAnalyticsModal.tsx | 203 + .../src/components/media/ReactionButtons.tsx | 144 + .../components/media/RelatedVideosList.tsx | 250 + admin/src/components/media/ScheduleBadge.tsx | 54 + .../media/ScheduleCalendarDrawer.tsx | 244 + .../components/media/SchedulePublishModal.tsx | 304 + .../src/components/media/SharedMediaCard.tsx | 38 + .../src/components/media/UploadVideoModal.tsx | 263 + admin/src/components/media/VideoActions.tsx | 326 + .../components/media/VideoAnalyticsModal.tsx | 270 + admin/src/components/media/VideoCard.tsx | 266 + .../src/components/media/VideoPickerModal.tsx | 405 + admin/src/components/media/VideoPlayer.tsx | 260 + .../src/components/media/VideoViewerModal.tsx | 200 + admin/src/components/media/ViewersTable.tsx | 89 + .../components/observability/AlertsTable.tsx | 59 + .../observability/IframeErrorBoundary.tsx | 55 + .../components/observability/MetricsGrid.tsx | 81 + .../observability/ServiceStatusCard.tsx | 35 + admin/src/components/shifts/EditModeModal.tsx | 82 + .../src/components/shifts/ShiftsCalendar.tsx | 73 + admin/src/contexts/ExpandedVideoContext.tsx | 82 + admin/src/contexts/MediaAuthContext.tsx | 123 + admin/src/hooks/useDebounce.ts | 17 + admin/src/hooks/useKeyboardShortcuts.ts | 95 + admin/src/hooks/useLocalStorage.ts | 23 + admin/src/lib/api.ts | 5 + admin/src/lib/media-api.ts | 83 + admin/src/lib/media-public-api.ts | 52 + admin/src/pages/CanvassDashboardPage.tsx | 37 +- admin/src/pages/CodeEditorPage.tsx | 13 +- admin/src/pages/CutExportPage.tsx | 45 +- admin/src/pages/CutsPage.tsx | 8 +- admin/src/pages/DataQualityDashboardPage.tsx | 239 + admin/src/pages/DocsPage.tsx | 317 +- admin/src/pages/EmailTemplateEditorPage.tsx | 363 + admin/src/pages/EmailTemplatesPage.tsx | 345 + admin/src/pages/ExcalidrawPage.tsx | 127 + admin/src/pages/LandingPagesPage.tsx | 107 +- admin/src/pages/ListmonkPage.tsx | 36 +- admin/src/pages/LocationsPage.tsx | 864 +- admin/src/pages/MiniQRPage.tsx | 123 + admin/src/pages/ObservabilityPage.tsx | 353 + admin/src/pages/PangolinPage.tsx | 719 +- admin/src/pages/ShiftsPage.tsx | 540 +- admin/src/pages/UsersPage.tsx | 219 +- .../pages/media/AnalyticsDashboardPage.tsx | 246 + admin/src/pages/media/LibraryPage.tsx | 386 + admin/src/pages/media/MediaJobsPage.tsx | 242 + admin/src/pages/public/LandingPage.tsx | 106 +- admin/src/pages/public/MapPage.tsx | 113 +- admin/src/pages/public/MediaGalleryPage.tsx | 228 + admin/src/pages/public/MediaViewerPage.tsx | 304 + admin/src/pages/volunteer/MyActivityPage.tsx | 4 +- .../src/pages/volunteer/VolunteerMapPage.tsx | 312 +- admin/src/stores/auth.store.ts | 7 +- admin/src/stores/canvass.store.ts | 282 +- admin/src/types/api.ts | 482 +- admin/src/types/canvass.ts | 61 +- admin/src/types/media.ts | 147 + admin/src/utils/sanitize.ts | 15 + admin/src/utils/url-validator.ts | 60 + admin/src/utils/video.ts | 159 + admin/tsconfig.tsbuildinfo | 1 + admin/vite.config.ts | 30 +- api/Dockerfile.media | 50 + api/dist/config/database.d.ts | 6 + api/dist/config/database.d.ts.map | 1 + api/dist/config/database.js | 10 + api/dist/config/database.js.map | 1 + api/dist/config/env.d.ts | 394 + api/dist/config/env.d.ts.map | 1 + api/dist/config/env.js | 143 + api/dist/config/env.js.map | 1 + api/dist/config/redis.d.ts | 3 + api/dist/config/redis.d.ts.map | 1 + api/dist/config/redis.js | 24 + api/dist/config/redis.js.map | 1 + api/dist/media-server.d.ts | 2 + api/dist/media-server.d.ts.map | 1 + api/dist/media-server.js | 117 + api/dist/media-server.js.map | 1 + api/dist/middleware/auth.middleware.d.ts | 4 + api/dist/middleware/auth.middleware.d.ts.map | 1 + api/dist/middleware/auth.middleware.js | 42 + api/dist/middleware/auth.middleware.js.map | 1 + api/dist/middleware/error-handler.d.ts | 8 + api/dist/middleware/error-handler.d.ts.map | 1 + api/dist/middleware/error-handler.js | 52 + api/dist/middleware/error-handler.js.map | 1 + api/dist/middleware/rate-limit.d.ts | 12 + api/dist/middleware/rate-limit.d.ts.map | 1 + api/dist/middleware/rate-limit.js | 187 + api/dist/middleware/rate-limit.js.map | 1 + api/dist/middleware/rbac.middleware.d.ts | 5 + api/dist/middleware/rbac.middleware.d.ts.map | 1 + api/dist/middleware/rbac.middleware.js | 27 + api/dist/middleware/rbac.middleware.js.map | 1 + api/dist/middleware/validate.d.ts | 4 + api/dist/middleware/validate.d.ts.map | 1 + api/dist/middleware/validate.js | 23 + api/dist/middleware/validate.js.map | 1 + api/dist/modules/auth/auth.routes.d.ts | 3 + api/dist/modules/auth/auth.routes.d.ts.map | 1 + api/dist/modules/auth/auth.routes.js | 116 + api/dist/modules/auth/auth.routes.js.map | 1 + api/dist/modules/auth/auth.schemas.d.ts | 38 + api/dist/modules/auth/auth.schemas.d.ts.map | 1 + api/dist/modules/auth/auth.schemas.js | 23 + api/dist/modules/auth/auth.schemas.js.map | 1 + api/dist/modules/auth/auth.service.d.ts | 86 + api/dist/modules/auth/auth.service.d.ts.map | 1 + api/dist/modules/auth/auth.service.js | 140 + api/dist/modules/auth/auth.service.js.map | 1 + api/dist/modules/docs/docs-files.service.d.ts | 40 + .../modules/docs/docs-files.service.d.ts.map | 1 + api/dist/modules/docs/docs-files.service.js | 248 + .../modules/docs/docs-files.service.js.map | 1 + api/dist/modules/docs/docs.routes.d.ts | 2 + api/dist/modules/docs/docs.routes.d.ts.map | 1 + api/dist/modules/docs/docs.routes.js | 219 + api/dist/modules/docs/docs.routes.js.map | 1 + .../modules/docs/mkdocs-config.service.d.ts | 30 + .../docs/mkdocs-config.service.d.ts.map | 1 + .../modules/docs/mkdocs-config.service.js | 190 + .../modules/docs/mkdocs-config.service.js.map | 1 + .../email-templates-admin.routes.d.ts | 3 + .../email-templates-admin.routes.d.ts.map | 1 + .../email-templates-admin.routes.js | 277 + .../email-templates-admin.routes.js.map | 1 + .../email-templates.schemas.d.ts | 324 + .../email-templates.schemas.d.ts.map | 1 + .../email-templates.schemas.js | 73 + .../email-templates.schemas.js.map | 1 + .../email-templates.service.d.ts | 266 + .../email-templates.service.d.ts.map | 1 + .../email-templates.service.js | 467 + .../email-templates.service.js.map | 1 + .../campaign-emails.routes.d.ts | 4 + .../campaign-emails.routes.d.ts.map | 1 + .../campaign-emails/campaign-emails.routes.js | 67 + .../campaign-emails.routes.js.map | 1 + .../campaign-emails.schemas.d.ts | 116 + .../campaign-emails.schemas.d.ts.map | 1 + .../campaign-emails.schemas.js | 39 + .../campaign-emails.schemas.js.map | 1 + .../campaign-emails.service.d.ts | 36 + .../campaign-emails.service.d.ts.map | 1 + .../campaign-emails.service.js | 206 + .../campaign-emails.service.js.map | 1 + .../campaigns/campaigns-public.routes.d.ts | 3 + .../campaigns-public.routes.d.ts.map | 1 + .../campaigns/campaigns-public.routes.js | 29 + .../campaigns/campaigns-public.routes.js.map | 1 + .../influence/campaigns/campaigns.routes.d.ts | 3 + .../campaigns/campaigns.routes.d.ts.map | 1 + .../influence/campaigns/campaigns.routes.js | 70 + .../campaigns/campaigns.routes.js.map | 1 + .../campaigns/campaigns.schemas.d.ts | 163 + .../campaigns/campaigns.schemas.d.ts.map | 1 + .../influence/campaigns/campaigns.schemas.js | 53 + .../campaigns/campaigns.schemas.js.map | 1 + .../campaigns/campaigns.service.d.ts | 230 + .../campaigns/campaigns.service.d.ts.map | 1 + .../influence/campaigns/campaigns.service.js | 202 + .../campaigns/campaigns.service.js.map | 1 + .../email-queue/email-queue.routes.d.ts | 3 + .../email-queue/email-queue.routes.d.ts.map | 1 + .../email-queue/email-queue.routes.js | 54 + .../email-queue/email-queue.routes.js.map | 1 + .../postal-codes/postal-codes.schemas.d.ts | 22 + .../postal-codes.schemas.d.ts.map | 1 + .../postal-codes/postal-codes.schemas.js | 24 + .../postal-codes/postal-codes.schemas.js.map | 1 + .../postal-codes/postal-codes.service.d.ts | 60 + .../postal-codes.service.d.ts.map | 1 + .../postal-codes/postal-codes.service.js | 61 + .../postal-codes/postal-codes.service.js.map | 1 + .../representatives/represent-api.client.d.ts | 39 + .../represent-api.client.d.ts.map | 1 + .../representatives/represent-api.client.js | 77 + .../represent-api.client.js.map | 1 + .../representatives.routes.d.ts | 3 + .../representatives.routes.d.ts.map | 1 + .../representatives/representatives.routes.js | 98 + .../representatives.routes.js.map | 1 + .../representatives.schemas.d.ts | 19 + .../representatives.schemas.d.ts.map | 1 + .../representatives.schemas.js | 11 + .../representatives.schemas.js.map | 1 + .../representatives.service.d.ts | 98 + .../representatives.service.d.ts.map | 1 + .../representatives.service.js | 175 + .../representatives.service.js.map | 1 + .../influence/responses/responses.routes.d.ts | 5 + .../responses/responses.routes.d.ts.map | 1 + .../influence/responses/responses.routes.js | 199 + .../responses/responses.routes.js.map | 1 + .../responses/responses.schemas.d.ts | 110 + .../responses/responses.schemas.d.ts.map | 1 + .../influence/responses/responses.schemas.js | 35 + .../responses/responses.schemas.js.map | 1 + .../responses/responses.service.d.ts | 129 + .../responses/responses.service.d.ts.map | 1 + .../influence/responses/responses.service.js | 370 + .../responses/responses.service.js.map | 1 + .../modules/listmonk/listmonk.routes.d.ts | 3 + .../modules/listmonk/listmonk.routes.d.ts.map | 1 + api/dist/modules/listmonk/listmonk.routes.js | 127 + .../modules/listmonk/listmonk.routes.js.map | 1 + .../map/canvass/canvass-route.service.d.ts | 16 + .../canvass/canvass-route.service.d.ts.map | 1 + .../map/canvass/canvass-route.service.js | 62 + .../map/canvass/canvass-route.service.js.map | 1 + .../modules/map/canvass/canvass.routes.d.ts | 4 + .../map/canvass/canvass.routes.d.ts.map | 1 + .../modules/map/canvass/canvass.routes.js | 276 + .../modules/map/canvass/canvass.routes.js.map | 1 + .../modules/map/canvass/canvass.schemas.d.ts | 264 + .../map/canvass/canvass.schemas.d.ts.map | 1 + .../modules/map/canvass/canvass.schemas.js | 89 + .../map/canvass/canvass.schemas.js.map | 1 + .../modules/map/canvass/canvass.service.d.ts | 323 + .../map/canvass/canvass.service.d.ts.map | 1 + .../modules/map/canvass/canvass.service.js | 795 + .../map/canvass/canvass.service.js.map | 1 + api/dist/modules/map/cuts/cuts.routes.d.ts | 4 + .../modules/map/cuts/cuts.routes.d.ts.map | 1 + api/dist/modules/map/cuts/cuts.routes.js | 160 + api/dist/modules/map/cuts/cuts.routes.js.map | 1 + api/dist/modules/map/cuts/cuts.schemas.d.ts | 122 + .../modules/map/cuts/cuts.schemas.d.ts.map | 1 + api/dist/modules/map/cuts/cuts.schemas.js | 51 + api/dist/modules/map/cuts/cuts.schemas.js.map | 1 + api/dist/modules/map/cuts/cuts.service.d.ts | 172 + .../modules/map/cuts/cuts.service.d.ts.map | 1 + api/dist/modules/map/cuts/cuts.service.js | 327 + api/dist/modules/map/cuts/cuts.service.js.map | 1 + .../map/geocoding/geocoding.routes.d.ts | 3 + .../map/geocoding/geocoding.routes.d.ts.map | 1 + .../modules/map/geocoding/geocoding.routes.js | 31 + .../map/geocoding/geocoding.routes.js.map | 1 + .../map/geocoding/geocoding.service.d.ts | 39 + .../map/geocoding/geocoding.service.d.ts.map | 1 + .../map/geocoding/geocoding.service.js | 554 + .../map/geocoding/geocoding.service.js.map | 1 + .../map/locations/bulk-geocode.routes.d.ts | 3 + .../locations/bulk-geocode.routes.d.ts.map | 1 + .../map/locations/bulk-geocode.routes.js | 46 + .../map/locations/bulk-geocode.routes.js.map | 1 + .../map/locations/bulk-geocode.schemas.d.ts | 19 + .../locations/bulk-geocode.schemas.d.ts.map | 1 + .../map/locations/bulk-geocode.schemas.js | 11 + .../map/locations/bulk-geocode.schemas.js.map | 1 + .../map/locations/locations.routes.d.ts | 4 + .../map/locations/locations.routes.d.ts.map | 1 + .../modules/map/locations/locations.routes.js | 289 + .../map/locations/locations.routes.js.map | 1 + .../map/locations/locations.schemas.d.ts | 228 + .../map/locations/locations.schemas.d.ts.map | 1 + .../map/locations/locations.schemas.js | 81 + .../map/locations/locations.schemas.js.map | 1 + .../map/locations/locations.service.d.ts | 266 + .../map/locations/locations.service.d.ts.map | 1 + .../map/locations/locations.service.js | 1133 ++ .../map/locations/locations.service.js.map | 1 + .../map/locations/nar-import.routes.d.ts | 3 + .../map/locations/nar-import.routes.d.ts.map | 1 + .../map/locations/nar-import.routes.js | 96 + .../map/locations/nar-import.routes.js.map | 1 + .../map/locations/nar-import.service.d.ts | 80 + .../map/locations/nar-import.service.d.ts.map | 1 + .../map/locations/nar-import.service.js | 532 + .../map/locations/nar-import.service.js.map | 1 + .../modules/map/settings/settings.routes.d.ts | 3 + .../map/settings/settings.routes.d.ts.map | 1 + .../modules/map/settings/settings.routes.js | 34 + .../map/settings/settings.routes.js.map | 1 + .../map/settings/settings.schemas.d.ts | 43 + .../map/settings/settings.schemas.d.ts.map | 1 + .../modules/map/settings/settings.schemas.js | 19 + .../map/settings/settings.schemas.js.map | 1 + .../map/settings/settings.service.d.ts | 40 + .../map/settings/settings.service.d.ts.map | 1 + .../modules/map/settings/settings.service.js | 37 + .../map/settings/settings.service.js.map | 1 + .../map/shifts/shift-series.routes.d.ts | 3 + .../map/shifts/shift-series.routes.d.ts.map | 1 + .../modules/map/shifts/shift-series.routes.js | 54 + .../map/shifts/shift-series.routes.js.map | 1 + .../map/shifts/shift-series.schemas.d.ts | 108 + .../map/shifts/shift-series.schemas.d.ts.map | 1 + .../map/shifts/shift-series.schemas.js | 39 + .../map/shifts/shift-series.schemas.js.map | 1 + .../map/shifts/shift-series.service.d.ts | 186 + .../map/shifts/shift-series.service.d.ts.map | 1 + .../map/shifts/shift-series.service.js | 180 + .../map/shifts/shift-series.service.js.map | 1 + .../modules/map/shifts/shifts.routes.d.ts | 5 + .../modules/map/shifts/shifts.routes.d.ts.map | 1 + api/dist/modules/map/shifts/shifts.routes.js | 198 + .../modules/map/shifts/shifts.routes.js.map | 1 + .../modules/map/shifts/shifts.schemas.d.ts | 128 + .../map/shifts/shifts.schemas.d.ts.map | 1 + api/dist/modules/map/shifts/shifts.schemas.js | 47 + .../modules/map/shifts/shifts.schemas.js.map | 1 + .../modules/map/shifts/shifts.service.d.ts | 253 + .../map/shifts/shifts.service.d.ts.map | 1 + api/dist/modules/map/shifts/shifts.service.js | 714 + .../modules/map/shifts/shifts.service.js.map | 1 + .../modules/map/tracking/tracking.routes.d.ts | 4 + .../map/tracking/tracking.routes.d.ts.map | 1 + .../modules/map/tracking/tracking.routes.js | 139 + .../map/tracking/tracking.routes.js.map | 1 + .../map/tracking/tracking.schemas.d.ts | 112 + .../map/tracking/tracking.schemas.d.ts.map | 1 + .../modules/map/tracking/tracking.schemas.js | 42 + .../map/tracking/tracking.schemas.js.map | 1 + .../map/tracking/tracking.service.d.ts | 127 + .../map/tracking/tracking.service.d.ts.map | 1 + .../modules/map/tracking/tracking.service.js | 260 + .../map/tracking/tracking.service.js.map | 1 + api/dist/modules/media/db/index.d.ts | 8 + api/dist/modules/media/db/index.d.ts.map | 1 + api/dist/modules/media/db/index.js | 57 + api/dist/modules/media/db/index.js.map | 1 + api/dist/modules/media/db/schema.d.ts | 16458 ++++++++++++++++ api/dist/modules/media/db/schema.d.ts.map | 1 + api/dist/modules/media/db/schema.js | 1734 ++ api/dist/modules/media/db/schema.js.map | 1 + api/dist/modules/media/middleware/auth.d.ts | 27 + .../modules/media/middleware/auth.d.ts.map | 1 + api/dist/modules/media/middleware/auth.js | 128 + api/dist/modules/media/middleware/auth.js.map | 1 + .../modules/media/routes/comments.routes.d.ts | 3 + .../media/routes/comments.routes.d.ts.map | 1 + .../modules/media/routes/comments.routes.js | 8 + .../media/routes/comments.routes.js.map | 1 + .../media/routes/public-media.routes.d.ts | 7 + .../media/routes/public-media.routes.d.ts.map | 1 + .../media/routes/public-media.routes.js | 740 + .../media/routes/public-media.routes.js.map | 1 + .../media/routes/reactions.routes.d.ts | 3 + .../media/routes/reactions.routes.d.ts.map | 1 + .../modules/media/routes/reactions.routes.js | 102 + .../media/routes/reactions.routes.js.map | 1 + .../modules/media/routes/upload.routes.d.ts | 3 + .../media/routes/upload.routes.d.ts.map | 1 + .../modules/media/routes/upload.routes.js | 265 + .../modules/media/routes/upload.routes.js.map | 1 + .../media/routes/video-actions.routes.d.ts | 3 + .../routes/video-actions.routes.d.ts.map | 1 + .../media/routes/video-actions.routes.js | 248 + .../media/routes/video-actions.routes.js.map | 1 + .../media/routes/video-schedule.routes.d.ts | 3 + .../routes/video-schedule.routes.d.ts.map | 1 + .../media/routes/video-schedule.routes.js | 266 + .../media/routes/video-schedule.routes.js.map | 1 + .../media/routes/video-streaming.routes.d.ts | 3 + .../routes/video-streaming.routes.d.ts.map | 1 + .../media/routes/video-streaming.routes.js | 227 + .../routes/video-streaming.routes.js.map | 1 + .../media/routes/video-tracking.routes.d.ts | 3 + .../routes/video-tracking.routes.d.ts.map | 1 + .../media/routes/video-tracking.routes.js | 207 + .../media/routes/video-tracking.routes.js.map | 1 + .../modules/media/routes/videos.routes.d.ts | 3 + .../media/routes/videos.routes.d.ts.map | 1 + .../modules/media/routes/videos.routes.js | 369 + .../modules/media/routes/videos.routes.js.map | 1 + .../media/schemas/public-media.schemas.d.ts | 49 + .../schemas/public-media.schemas.d.ts.map | 1 + .../media/schemas/public-media.schemas.js | 24 + .../media/schemas/public-media.schemas.js.map | 1 + .../media/services/ffprobe.service.d.ts | 18 + .../media/services/ffprobe.service.d.ts.map | 1 + .../modules/media/services/ffprobe.service.js | 151 + .../media/services/ffprobe.service.js.map | 1 + .../media/services/session.service.d.ts | 7 + .../media/services/session.service.d.ts.map | 1 + .../modules/media/services/session.service.js | 51 + .../media/services/session.service.js.map | 1 + .../media/services/thumbnail.service.d.ts | 29 + .../media/services/thumbnail.service.d.ts.map | 1 + .../media/services/thumbnail.service.js | 108 + .../media/services/thumbnail.service.js.map | 1 + .../services/video-analytics.service.d.ts | 79 + .../services/video-analytics.service.d.ts.map | 1 + .../media/services/video-analytics.service.js | 352 + .../services/video-analytics.service.js.map | 1 + api/dist/modules/media/types/enums.d.ts | 22 + api/dist/modules/media/types/enums.d.ts.map | 1 + api/dist/modules/media/types/enums.js | 27 + api/dist/modules/media/types/enums.js.map | 1 + .../observability/observability.routes.d.ts | 2 + .../observability.routes.d.ts.map | 1 + .../observability/observability.routes.js | 187 + .../observability/observability.routes.js.map | 1 + api/dist/modules/pages/blocks.routes.d.ts | 3 + api/dist/modules/pages/blocks.routes.d.ts.map | 1 + api/dist/modules/pages/blocks.routes.js | 69 + api/dist/modules/pages/blocks.routes.js.map | 1 + api/dist/modules/pages/blocks.service.d.ts | 54 + .../modules/pages/blocks.service.d.ts.map | 1 + api/dist/modules/pages/blocks.service.js | 76 + api/dist/modules/pages/blocks.service.js.map | 1 + .../modules/pages/pages-admin.routes.d.ts | 3 + .../modules/pages/pages-admin.routes.d.ts.map | 1 + api/dist/modules/pages/pages-admin.routes.js | 89 + .../modules/pages/pages-admin.routes.js.map | 1 + .../modules/pages/pages-public.routes.d.ts | 3 + .../pages/pages-public.routes.d.ts.map | 1 + api/dist/modules/pages/pages-public.routes.js | 19 + .../modules/pages/pages-public.routes.js.map | 1 + api/dist/modules/pages/pages.schemas.d.ts | 186 + api/dist/modules/pages/pages.schemas.d.ts.map | 1 + api/dist/modules/pages/pages.schemas.js | 71 + api/dist/modules/pages/pages.schemas.js.map | 1 + api/dist/modules/pages/pages.service.d.ts | 138 + api/dist/modules/pages/pages.service.d.ts.map | 1 + api/dist/modules/pages/pages.service.js | 554 + api/dist/modules/pages/pages.service.js.map | 1 + .../modules/pangolin/pangolin.routes.d.ts | 2 + .../modules/pangolin/pangolin.routes.d.ts.map | 1 + api/dist/modules/pangolin/pangolin.routes.js | 1142 ++ .../modules/pangolin/pangolin.routes.js.map | 1 + api/dist/modules/qr/qr.routes.d.ts | 2 + api/dist/modules/qr/qr.routes.d.ts.map | 1 + api/dist/modules/qr/qr.routes.js | 34 + api/dist/modules/qr/qr.routes.js.map | 1 + .../modules/services/services.routes.d.ts | 2 + .../modules/services/services.routes.d.ts.map | 1 + api/dist/modules/services/services.routes.js | 66 + .../modules/services/services.routes.js.map | 1 + .../modules/settings/settings.routes.d.ts | 3 + .../modules/settings/settings.routes.d.ts.map | 1 + api/dist/modules/settings/settings.routes.js | 83 + .../modules/settings/settings.routes.js.map | 1 + .../modules/settings/settings.schemas.d.ts | 82 + .../settings/settings.schemas.d.ts.map | 1 + api/dist/modules/settings/settings.schemas.js | 40 + .../modules/settings/settings.schemas.js.map | 1 + .../modules/settings/settings.service.d.ts | 70 + .../settings/settings.service.d.ts.map | 1 + api/dist/modules/settings/settings.service.js | 60 + .../modules/settings/settings.service.js.map | 1 + api/dist/modules/users/users.routes.d.ts | 3 + api/dist/modules/users/users.routes.d.ts.map | 1 + api/dist/modules/users/users.routes.js | 87 + api/dist/modules/users/users.routes.js.map | 1 + api/dist/modules/users/users.schemas.d.ts | 113 + api/dist/modules/users/users.schemas.d.ts.map | 1 + api/dist/modules/users/users.schemas.js | 42 + api/dist/modules/users/users.schemas.js.map | 1 + api/dist/modules/users/users.service.d.ts | 78 + api/dist/modules/users/users.service.d.ts.map | 1 + api/dist/modules/users/users.service.js | 120 + api/dist/modules/users/users.service.js.map | 1 + api/dist/scripts/seed-email-templates.d.ts | 9 + .../scripts/seed-email-templates.d.ts.map | 1 + api/dist/scripts/seed-email-templates.js | 237 + api/dist/scripts/seed-email-templates.js.map | 1 + api/dist/server.d.ts | 3 + api/dist/server.d.ts.map | 1 + api/dist/server.js | 221 + api/dist/server.js.map | 1 + api/dist/services/docker.service.d.ts | 24 + api/dist/services/docker.service.d.ts.map | 1 + api/dist/services/docker.service.js | 91 + api/dist/services/docker.service.js.map | 1 + api/dist/services/email-queue.service.d.ts | 33 + .../services/email-queue.service.d.ts.map | 1 + api/dist/services/email-queue.service.js | 102 + api/dist/services/email-queue.service.js.map | 1 + api/dist/services/email.service.d.ts | 86 + api/dist/services/email.service.d.ts.map | 1 + api/dist/services/email.service.js | 426 + api/dist/services/email.service.js.map | 1 + api/dist/services/geocode-queue.service.d.ts | 51 + .../services/geocode-queue.service.d.ts.map | 1 + api/dist/services/geocode-queue.service.js | 276 + .../services/geocode-queue.service.js.map | 1 + api/dist/services/listmonk-proxy.service.d.ts | 4 + .../services/listmonk-proxy.service.d.ts.map | 1 + api/dist/services/listmonk-proxy.service.js | 154 + .../services/listmonk-proxy.service.js.map | 1 + api/dist/services/listmonk-sync.service.d.ts | 36 + .../services/listmonk-sync.service.d.ts.map | 1 + api/dist/services/listmonk-sync.service.js | 239 + .../services/listmonk-sync.service.js.map | 1 + api/dist/services/listmonk.client.d.ts | 50 + api/dist/services/listmonk.client.d.ts.map | 1 + api/dist/services/listmonk.client.js | 142 + api/dist/services/listmonk.client.js.map | 1 + api/dist/services/pangolin.client.d.ts | 141 + api/dist/services/pangolin.client.d.ts.map | 1 + api/dist/services/pangolin.client.js | 269 + api/dist/services/pangolin.client.js.map | 1 + .../video-schedule-queue.service.d.ts | 87 + .../video-schedule-queue.service.d.ts.map | 1 + .../services/video-schedule-queue.service.js | 326 + .../video-schedule-queue.service.js.map | 1 + api/dist/utils/crypto.d.ts | 15 + api/dist/utils/crypto.d.ts.map | 1 + api/dist/utils/crypto.js | 64 + api/dist/utils/crypto.js.map | 1 + api/dist/utils/fetch-with-timeout.d.ts | 15 + api/dist/utils/fetch-with-timeout.d.ts.map | 1 + api/dist/utils/fetch-with-timeout.js | 36 + api/dist/utils/fetch-with-timeout.js.map | 1 + api/dist/utils/health-check.d.ts | 39 + api/dist/utils/health-check.d.ts.map | 1 + api/dist/utils/health-check.js | 64 + api/dist/utils/health-check.js.map | 1 + api/dist/utils/logger.d.ts | 3 + api/dist/utils/logger.d.ts.map | 1 + api/dist/utils/logger.js | 19 + api/dist/utils/logger.js.map | 1 + api/dist/utils/metrics.d.ts | 50 + api/dist/utils/metrics.d.ts.map | 1 + api/dist/utils/metrics.js | 264 + api/dist/utils/metrics.js.map | 1 + api/dist/utils/path-validator.d.ts | 14 + api/dist/utils/path-validator.d.ts.map | 1 + api/dist/utils/path-validator.js | 66 + api/dist/utils/path-validator.js.map | 1 + api/dist/utils/promql-validator.d.ts | 20 + api/dist/utils/promql-validator.d.ts.map | 1 + api/dist/utils/promql-validator.js | 66 + api/dist/utils/promql-validator.js.map | 1 + api/dist/utils/spatial.d.ts | 39 + api/dist/utils/spatial.d.ts.map | 1 + api/dist/utils/spatial.js | 101 + api/dist/utils/spatial.js.map | 1 + api/drizzle.config.ts | 15 + api/drizzle/0000_classy_hedge_knight.sql | 1451 ++ api/drizzle/meta/0000_snapshot.json | 11540 +++++++++++ api/drizzle/meta/_journal.json | 13 + api/package-lock.json | 2078 +- api/package.json | 14 +- .../migration.sql | 4 + api/prisma/schema.prisma | 2517 ++- api/prisma/seed.ts | 258 +- api/scripts/reexport-pages.ts | 80 + api/src/config/env.ts | 56 +- api/src/media-server.ts | 125 + api/src/middleware/error-handler.ts | 8 +- api/src/middleware/rate-limit.ts | 53 +- api/src/middleware/validate.ts | 18 +- api/src/modules/auth/auth.routes.ts | 10 +- api/src/modules/auth/auth.schemas.ts | 8 +- api/src/modules/auth/auth.service.ts | 33 +- api/src/modules/docs/docs-files.service.ts | 122 +- api/src/modules/docs/docs.routes.ts | 26 +- .../email-templates-admin.routes.ts | 356 + .../email-templates.schemas.ts | 93 + .../email-templates.service.ts | 557 + .../influence/responses/responses.routes.ts | 18 +- api/src/modules/map/canvass/canvass.routes.ts | 30 +- .../modules/map/canvass/canvass.schemas.ts | 11 +- .../modules/map/canvass/canvass.service.ts | 488 +- api/src/modules/map/cuts/cuts.service.ts | 50 +- .../map/geocoding/geocoding.service.ts | 449 +- .../map/locations/bulk-geocode.routes.ts | 49 + .../map/locations/bulk-geocode.schemas.ts | 10 + .../modules/map/locations/locations.routes.ts | 24 +- .../map/locations/locations.schemas.ts | 14 +- .../map/locations/locations.service.ts | 717 +- .../map/locations/nar-import.routes.ts | 6 +- .../map/locations/nar-import.service.ts | 221 +- .../modules/map/shifts/shift-series.routes.ts | 68 + .../map/shifts/shift-series.schemas.ts | 44 + .../map/shifts/shift-series.service.ts | 203 + api/src/modules/map/shifts/shifts.routes.ts | 23 + api/src/modules/map/shifts/shifts.service.ts | 33 + api/src/modules/media/README.md | 951 + api/src/modules/media/db/index.ts | 22 + api/src/modules/media/db/schema.ts | 2629 +++ api/src/modules/media/middleware/auth.ts | 162 + .../media/routes/chat-stream.routes.ts | 129 + .../modules/media/routes/comments.routes.ts | 225 + api/src/modules/media/routes/public.routes.ts | 353 + .../modules/media/routes/reactions.routes.ts | 250 + api/src/modules/media/routes/upload.routes.ts | 307 + .../media/routes/video-actions.routes.ts | 398 + .../media/routes/video-schedule.routes.ts | 365 + .../media/routes/video-streaming.routes.ts | 276 + .../media/routes/video-tracking.routes.ts | 276 + api/src/modules/media/routes/videos.routes.ts | 472 + .../modules/media/services/ffprobe.service.ts | 189 + .../modules/media/services/session.service.ts | 54 + .../media/services/thumbnail.service.ts | 120 + .../media/services/video-analytics.service.ts | 413 + api/src/modules/media/types/enums.ts | 22 + .../observability/observability.routes.ts | 224 + api/src/modules/pages/pages-admin.routes.ts | 13 + api/src/modules/pages/pages.schemas.ts | 2 + api/src/modules/pages/pages.service.ts | 126 +- api/src/modules/pangolin/pangolin.routes.ts | 880 +- api/src/modules/services/services.routes.ts | 48 +- api/src/modules/users/users.schemas.ts | 13 +- api/src/scripts/seed-email-templates.ts | 237 + api/src/server.ts | 40 +- api/src/services/docker.service.ts | 109 + api/src/services/email.service.ts | 264 +- api/src/services/geocode-queue.service.ts | 310 + api/src/services/listmonk-sync.service.ts | 37 +- api/src/services/pangolin.client.ts | 394 +- .../services/video-schedule-queue.service.ts | 394 + api/src/utils/fetch-with-timeout.ts | 37 + api/src/utils/health-check.ts | 82 + api/src/utils/metrics.ts | 109 + api/src/utils/path-validator.ts | 63 + api/src/utils/promql-validator.ts | 67 + api/test-media-api.sh | 87 + api/test-pangolin-endpoints.ts | 478 + api/test-pangolin-resources.ts | 232 + api/test-prisma.js | 9 + api/test.js | 6 + configs/pangolin/resources.yml | 92 + docker-compose.yml | 96 +- docs/MEDIA_ADMIN_FEATURES.md | 886 + docs/NGINX_DOMAIN_TEMPLATING.md | 176 + docs/VIDEO_ANALYTICS_GUIDE.md | 689 + media-manager/.dockerignore | 13 + media-manager/.gitignore | 40 + media-manager/.npmrc | 6 + media-manager/build.sh | 712 + media-manager/clip-embeddings/Dockerfile | 36 + media-manager/clip-embeddings/app.py | 407 + .../clip-embeddings/requirements.txt | 11 + media-manager/docker-compose.yml | 573 + media-manager/docs/.gitignore | 4 + media-manager/face-recognition/Dockerfile | 28 + media-manager/face-recognition/app.py | 171 + .../face-recognition/requirements.txt | 7 + media-manager/joytag/Dockerfile | 31 + media-manager/joytag/app.py | 425 + media-manager/joytag/requirements.txt | 7 + media-manager/llama-server/Dockerfile | 24 + media-manager/nginx/nginx.conf | 274 + media-manager/ollama/Dockerfile | 13 + media-manager/ollama/entrypoint.sh | 45 + media-manager/package.json | 16 + media-manager/packages/admin/Dockerfile | 30 + media-manager/packages/admin/index.html | 13 + media-manager/packages/admin/nginx.conf | 61 + media-manager/packages/admin/package.json | 31 + .../packages/admin/postcss.config.js | 6 + .../packages/admin/public/favicon.png | Bin 0 -> 74707 bytes media-manager/packages/admin/src/App.tsx | 268 + .../admin/src/components/ActivityFeed.tsx | 237 + .../admin/src/components/AdFormModal.tsx | 320 + .../admin/src/components/ClipTimeline.tsx | 121 + .../src/components/CompilationTagFilter.tsx | 401 + .../src/components/DeleteConfirmModal.tsx | 92 + .../src/components/DigestWarningModal.tsx | 116 + .../admin/src/components/FrameCard.tsx | 121 + .../src/components/InboxVideoSelector.tsx | 446 + .../src/components/LibraryVideoSelector.tsx | 434 + .../src/components/ManualClipSelector.tsx | 425 + .../admin/src/components/MobileBottomNav.tsx | 41 + .../src/components/MobileSidebarDrawer.tsx | 126 + .../admin/src/components/MobileTopBar.tsx | 58 + .../admin/src/components/MoveToLocalModal.tsx | 167 + .../admin/src/components/OllamaModels.tsx | 991 + .../src/components/OperationProgressModal.tsx | 163 + .../src/components/OrganizePublishModal.tsx | 752 + .../src/components/PerformerDiscrepancies.css | 485 + .../src/components/PerformerDiscrepancies.tsx | 511 + .../admin/src/components/RunningJobs.tsx | 400 + .../admin/src/components/ScriptModal.tsx | 238 + .../packages/admin/src/components/Sidebar.tsx | 143 + .../src/components/SortableMediaCard.tsx | 42 + .../admin/src/components/VideoPlayerModal.tsx | 316 + .../admin/src/components/WorldHeatMap.tsx | 273 + .../components/abstract/AbstractClipCard.tsx | 310 + .../abstract/AbstractClipTrimmer.tsx | 375 + .../abstract/AbstractDragOverlay.tsx | 121 + .../components/abstract/AbstractFilmstrip.tsx | 220 + .../abstract/AbstractFrameTooltip.tsx | 362 + .../abstract/AbstractOptionsPanel.tsx | 380 + .../abstract/AbstractSegmentFilmstrip.tsx | 558 + .../abstract/AbstractSequenceFilmstrip.tsx | 730 + .../abstract/AbstractSourceFilmstrip.tsx | 488 + .../abstract/AbstractTagFilterBar.tsx | 242 + .../components/abstract/AbstractTimeline.tsx | 301 + .../abstract/AbstractTranscriptPanel.tsx | 277 + .../src/components/abstract/AbstractView.tsx | 1082 + .../src/components/abstract/ClipTagEditor.tsx | 340 + .../abstract/hooks/useAbstractDragDrop.ts | 186 + .../abstract/hooks/useAbstractFilters.ts | 202 + .../abstract/hooks/useCenterIndicator.ts | 139 + .../abstract/hooks/useDragScroll.ts | 98 + .../admin/src/components/abstract/index.ts | 13 + .../components/digest/AnalysisLogPanel.tsx | 488 + .../admin/src/components/digest/ClipPanel.tsx | 704 + .../src/components/digest/ClipsFilmstrip.tsx | 697 + .../digest/ComprehensiveLogModal.tsx | 340 + .../components/digest/ContainerStatusBar.tsx | 191 + .../components/digest/DigestDetailView.tsx | 601 + .../components/digest/FaceThumbnailRow.tsx | 61 + .../src/components/digest/FilmstripViewer.tsx | 338 + .../components/digest/FrameDetailPanel.tsx | 382 + .../components/digest/GenerateClipsModal.tsx | 158 + .../src/components/digest/InlineTagEditor.tsx | 188 + .../components/digest/PipelineStepCard.tsx | 234 + .../src/components/digest/SceneFilmstrip.tsx | 230 + .../components/digest/TagApprovalPanel.tsx | 323 + .../src/components/digest/TranscriptPanel.tsx | 336 + .../src/components/digest/VocalFilmstrip.tsx | 485 + .../admin/src/components/digest/index.ts | 11 + .../src/components/faces/FaceDetailPanel.tsx | 263 + .../src/components/faces/FaceThumbnail.tsx | 129 + .../admin/src/components/faces/FacesView.tsx | 721 + .../components/faces/GroupFaceThumbnail.tsx | 96 + .../components/faces/GroupNamingWorkflow.tsx | 605 + .../src/components/faces/MergeFacesModal.tsx | 243 + .../src/components/faces/PerformerSection.tsx | 189 + .../admin/src/components/faces/index.ts | 7 + .../src/components/shared/AdminMediaCard.tsx | 256 + .../src/components/shared/AdminPageHeader.tsx | 153 + .../src/components/shared/BottomSheet.tsx | 57 + .../admin/src/components/shared/FileTree.tsx | 163 + .../src/components/shared/FileTreePanel.tsx | 76 + .../admin/src/components/shared/FilterBar.tsx | 241 + .../src/components/shared/FrameStrip.tsx | 220 + .../src/components/shared/LoadingSpinner.tsx | 93 + .../components/shared/SelectionActionBar.tsx | 121 + .../src/components/shared/TagApprovalCard.tsx | 281 + .../admin/src/components/shared/index.ts | 59 + .../src/components/tags/GenerateTagsTab.tsx | 899 + .../src/components/tags/ManualTagsTab.tsx | 653 + .../components/trustsafety/CommentsTab.tsx | 876 + .../components/trustsafety/GeoBlockingTab.tsx | 424 + .../src/components/trustsafety/ReportsTab.tsx | 414 + .../components/trustsafety/SessionsTab.tsx | 867 + .../admin/src/components/trustsafety/index.ts | 4 + .../admin/src/config/scriptConfigs.ts | 303 + .../admin/src/constants/navigation.ts | 89 + .../admin/src/contexts/AuthContext.tsx | 131 + .../admin/src/contexts/DigestContext.tsx | 84 + .../admin/src/contexts/MobileNavContext.tsx | 29 + .../src/contexts/OrganizePublishContext.tsx | 253 + .../admin/src/contexts/SFWContext.tsx | 39 + .../admin/src/contexts/ToastContext.tsx | 142 + .../packages/admin/src/hooks/index.ts | 12 + .../admin/src/hooks/useActivityFeed.ts | 68 + .../admin/src/hooks/useAutoScanSettings.ts | 125 + .../admin/src/hooks/useClickOutside.ts | 30 + .../packages/admin/src/hooks/useDigestSSE.ts | 962 + .../packages/admin/src/hooks/useFileTree.ts | 107 + .../packages/admin/src/hooks/useFrameSlots.ts | 57 + .../src/hooks/useIntersectionObserver.ts | 104 + .../packages/admin/src/hooks/useIsMobile.ts | 20 + .../admin/src/hooks/useLocalStorageState.ts | 49 + .../packages/admin/src/hooks/useSetting.ts | 81 + .../admin/src/hooks/useTabStatePersistence.ts | 82 + media-manager/packages/admin/src/index.css | 21 + media-manager/packages/admin/src/main.tsx | 13 + .../packages/admin/src/pages/Ads.tsx | 631 + .../packages/admin/src/pages/Dashboard.tsx | 554 + .../admin/src/pages/FeaturedPlaylists.tsx | 416 + .../packages/admin/src/pages/Fetch.tsx | 235 + .../packages/admin/src/pages/Fractal.tsx | 1815 ++ .../packages/admin/src/pages/Inbox.tsx | 4629 +++++ .../packages/admin/src/pages/Jobs.tsx | 406 + .../packages/admin/src/pages/Library.tsx | 1134 ++ .../packages/admin/src/pages/Login.tsx | 75 + .../packages/admin/src/pages/Payments.tsx | 791 + .../packages/admin/src/pages/PublicMedia.tsx | 990 + .../packages/admin/src/pages/Tags.tsx | 833 + .../admin/src/pages/TrustAndSafety.tsx | 69 + .../packages/admin/src/pages/Users.tsx | 688 + .../admin/src/types/react-simple-maps.d.ts | 98 + media-manager/packages/admin/src/utils/api.ts | 132 + .../packages/admin/src/utils/digestStorage.ts | 179 + .../admin/src/utils/frameStripCalculator.ts | 99 + .../admin/src/utils/mergeContiguousItems.ts | 291 + .../packages/admin/src/vite-env.d.ts | 1 + .../packages/admin/tailwind.config.js | 33 + media-manager/packages/admin/tsconfig.json | 21 + .../packages/admin/tsconfig.node.json | 11 + media-manager/packages/admin/vite.config.ts | 15 + media-manager/packages/api/Dockerfile | 71 + media-manager/packages/api/drizzle.config.ts | 10 + media-manager/packages/api/package.json | 51 + media-manager/packages/api/scripts/import.ts | 162 + .../packages/api/scripts/migrate-job-types.ts | 105 + .../packages/api/src/config/achievements.ts | 180 + media-manager/packages/api/src/db/index.ts | 38 + media-manager/packages/api/src/db/schema.ts | 2612 +++ media-manager/packages/api/src/db/seed.ts | 478 + media-manager/packages/api/src/index.ts | 237 + .../packages/api/src/middleware/auth.ts | 391 + .../packages/api/src/routes/admin.ts | 6921 +++++++ media-manager/packages/api/src/routes/ads.ts | 859 + media-manager/packages/api/src/routes/auth.ts | 606 + .../packages/api/src/routes/compilations.ts | 193 + .../packages/api/src/routes/dashboard.ts | 474 + .../packages/api/src/routes/digests.ts | 3496 ++++ .../packages/api/src/routes/faces.ts | 1713 ++ .../packages/api/src/routes/friends.ts | 2313 +++ media-manager/packages/api/src/routes/jobs.ts | 1766 ++ .../packages/api/src/routes/notifications.ts | 276 + .../packages/api/src/routes/ollama.ts | 751 + .../packages/api/src/routes/payments.ts | 759 + .../packages/api/src/routes/pipelines.ts | 425 + .../packages/api/src/routes/playlists.ts | 772 + .../packages/api/src/routes/porndb.ts | 67 + .../packages/api/src/routes/public.ts | 2266 +++ .../packages/api/src/routes/quickies.ts | 290 + .../packages/api/src/routes/reactions.ts | 475 + .../packages/api/src/routes/scripts.ts | 335 + .../packages/api/src/routes/tagGeneration.ts | 584 + media-manager/packages/api/src/routes/tags.ts | 917 + .../packages/api/src/routes/uploadPortal.ts | 1117 ++ .../packages/api/src/routes/uploads.ts | 590 + .../packages/api/src/routes/videos.ts | 410 + .../packages/api/src/routes/watchParty.ts | 2577 +++ .../packages/api/src/services/achievements.ts | 608 + .../packages/api/src/services/auth.ts | 220 + .../api/src/services/autoScanScheduler.ts | 396 + .../api/src/services/autoSequenceBuilder.ts | 1570 ++ .../packages/api/src/services/cache.ts | 115 + .../api/src/services/clipEmbeddings.ts | 749 + .../api/src/services/clipGenerator.ts | 1395 ++ .../packages/api/src/services/clipSelector.ts | 402 + .../api/src/services/clipTagMapper.ts | 647 + .../src/services/combinedSceneDetection.ts | 743 + .../packages/api/src/services/compilation.ts | 558 + .../api/src/services/concurrencyPool.ts | 52 + .../api/src/services/containerManager.ts | 399 + .../api/src/services/contentSafety.ts | 251 + .../api/src/services/digest/defaultPrompts.ts | 603 + .../api/src/services/digest/frameExtractor.ts | 198 + .../packages/api/src/services/digest/index.ts | 357 + .../api/src/services/digest/joytagBackend.ts | 355 + .../api/src/services/digest/joytagMappings.ts | 1139 ++ .../api/src/services/digest/logGenerator.ts | 1179 ++ .../src/services/digest/segmentPipeline.ts | 1431 ++ .../api/src/services/digest/transcriber.ts | 120 + .../packages/api/src/services/digest/types.ts | 184 + .../api/src/services/digest/visionBackend.ts | 280 + .../packages/api/src/services/email.ts | 988 + .../packages/api/src/services/faceCropper.ts | 243 + .../api/src/services/faceSimilarity.ts | 1006 + .../packages/api/src/services/ffprobe.ts | 166 + .../packages/api/src/services/fileWatcher.ts | 458 + .../packages/api/src/services/geoBlocking.ts | 129 + .../packages/api/src/services/geoip.ts | 116 + .../packages/api/src/services/gpuMonitor.ts | 225 + .../packages/api/src/services/imapPoller.ts | 403 + .../api/src/services/invoiceGenerator.ts | 407 + .../api/src/services/jobQueueManager.ts | 459 + .../packages/api/src/services/joytagSeeder.ts | 521 + .../api/src/services/modelSettings.ts | 239 + .../api/src/services/moderationSettings.ts | 558 + .../api/src/services/nameStandardizer.ts | 715 + .../packages/api/src/services/notification.ts | 674 + .../packages/api/src/services/ocrExtractor.ts | 292 + .../api/src/services/organizePublisher.ts | 840 + .../api/src/services/paymentParser.ts | 364 + .../src/services/performerCentroidManager.ts | 423 + .../api/src/services/performerNameLinker.ts | 598 + .../api/src/services/pipelineManager.ts | 831 + .../api/src/services/pipelineTemplates.ts | 324 + .../api/src/services/porndbService.ts | 492 + .../packages/api/src/services/privacy.ts | 248 + .../api/src/services/progressInterface.ts | 289 + .../api/src/services/promptBuilder.ts | 276 + .../api/src/services/quickieGenerator.ts | 475 + .../packages/api/src/services/scanner.ts | 910 + .../api/src/services/sceneDetection.ts | 373 + .../api/src/services/sceneExtractor.ts | 404 + .../api/src/services/sceneReleaseParser.ts | 597 + .../api/src/services/segmentAnalyzer.ts | 743 + .../api/src/services/segmentGenerator.ts | 683 + .../services/stepExecutors/frameExtraction.ts | 195 + .../api/src/services/stepExecutors/index.ts | 39 + .../services/stepExecutors/sceneDetection.ts | 162 + .../src/services/stepExecutors/synthesis.ts | 40 + .../services/stepExecutors/tagGeneration.ts | 231 + .../services/stepExecutors/transcription.ts | 202 + .../api/src/services/subscriptionManager.ts | 489 + .../api/src/services/subtitleGenerator.ts | 200 + .../packages/api/src/services/tagGenerator.ts | 906 + .../packages/api/src/services/tagMapper.ts | 449 + .../packages/api/src/services/tokens.ts | 166 + .../api/src/services/transnetService.ts | 483 + .../packages/api/src/services/userMatcher.ts | 354 + .../packages/api/src/services/videoChunker.ts | 161 + .../api/src/types/geolite2-redist.d.ts | 15 + .../packages/api/src/types/signaling.ts | 192 + media-manager/packages/api/tsconfig.json | 16 + media-manager/packages/public/Dockerfile | 36 + media-manager/packages/public/index.html | 15 + media-manager/packages/public/nginx.conf | 115 + media-manager/packages/public/package.json | 31 + .../packages/public/postcss.config.js | 6 + .../packages/public/public/assets/logo.png | Bin 0 -> 74707 bytes .../packages/public/public/favicon.png | Bin 0 -> 74707 bytes media-manager/packages/public/src/App.tsx | 129 + .../public/src/components/ActivityFeed.tsx | 241 + .../packages/public/src/components/AdCard.tsx | 182 + .../src/components/AddToPlaylistModal.tsx | 182 + .../src/components/AgeVerificationModal.tsx | 130 + .../public/src/components/AllTagsModal.tsx | 214 + .../public/src/components/BottomNav.tsx | 122 + .../public/src/components/CastButton.tsx | 57 + .../public/src/components/CommentSection.tsx | 196 + .../components/ContinueWatchingSection.tsx | 187 + .../src/components/CreatePlaylistModal.tsx | 164 + .../src/components/CreateWatchPartyModal.tsx | 262 + .../components/EditPlaylistVideosModal.tsx | 308 + .../src/components/ExpandedVideoCard.tsx | 611 + .../src/components/ExpandedVideoView.tsx | 644 + .../src/components/FloatingReactions.tsx | 96 + .../src/components/KeyboardHelpOverlay.tsx | 157 + .../public/src/components/LandscapeDrawer.tsx | 119 + .../packages/public/src/components/Layout.tsx | 58 + .../public/src/components/LiveChat.tsx | 450 + .../public/src/components/LoadingFallback.tsx | 14 + .../public/src/components/LoginModal.tsx | 128 + .../public/src/components/MediaGrid.tsx | 633 + .../src/components/NotificationBell.tsx | 96 + .../src/components/NotificationDropdown.tsx | 124 + .../src/components/NotificationItem.tsx | 238 + .../src/components/OnlineFriendsWidget.tsx | 174 + .../public/src/components/PlaylistCard.tsx | 116 + .../public/src/components/PlaylistChat.tsx | 259 + .../public/src/components/PlaylistModal.tsx | 441 + .../public/src/components/PlaylistPanel.tsx | 136 + .../public/src/components/PlaylistSidebar.tsx | 155 + .../public/src/components/PlyrVideoPlayer.tsx | 312 + .../src/components/ProgressBarMarkers.tsx | 196 + .../public/src/components/QuickieAdItem.tsx | 162 + .../src/components/QuickieReactionFAB.tsx | 160 + .../public/src/components/QuickiesFeed.tsx | 1504 ++ .../src/components/ReactionAnimation.tsx | 55 + .../public/src/components/ReactionButtons.tsx | 182 + .../public/src/components/RegisterModal.tsx | 254 + .../src/components/RelatedVideosList.tsx | 134 + .../public/src/components/ReportModal.tsx | 185 + .../public/src/components/ShareModal.tsx | 249 + .../public/src/components/Sidebar.tsx | 461 + .../src/components/SocialLinksModal.tsx | 356 + .../src/components/SocialShareModal.tsx | 502 + .../public/src/components/TagFilterBar.tsx | 678 + .../public/src/components/UploadModal.tsx | 477 + .../public/src/components/UpvoteButton.tsx | 66 + .../public/src/components/VideoCard.tsx | 363 + .../public/src/components/VideoPlayer.tsx | 386 + .../src/components/VirtualizedMediaGrid.tsx | 325 + .../src/components/WatchCurationCard.tsx | 90 + .../public/src/components/WatchPartyChat.tsx | 110 + .../WatchPartyInviteFriendsModal.tsx | 241 + .../WatchPartyInviteNotification.tsx | 162 + .../src/components/WatchPartyParticipants.tsx | 94 + .../components/WatchPartyReactionButtons.tsx | 83 + .../src/components/WatchPartySummary.tsx | 309 + .../src/components/WatchWithFriendsButton.tsx | 290 + .../public/src/components/chatbar/ChatBar.tsx | 49 + .../src/components/chatbar/MiniChatWindow.tsx | 121 + .../src/components/chatbar/MiniLiveChat.tsx | 357 + .../src/components/chatbar/MinimizedChat.tsx | 122 + .../components/dashboard/AchievementCard.tsx | 116 + .../components/dashboard/AchievementToast.tsx | 102 + .../dashboard/ChatNotificationToast.tsx | 117 + .../src/components/dashboard/ChatsPanel.tsx | 193 + .../src/components/dashboard/FinishButton.tsx | 197 + .../dashboard/ReactionDetailModal.tsx | 362 + .../components/dashboard/ReactionsPanel.tsx | 122 + .../dashboard/SocialLinksSection.tsx | 85 + .../src/components/dashboard/StatsCard.tsx | 23 + .../components/dashboard/StreakDisplay.tsx | 31 + .../components/settings/AccountSettings.tsx | 245 + .../settings/NotificationSettings.tsx | 356 + .../components/settings/PlaybackSettings.tsx | 162 + .../components/settings/PrivacySettings.tsx | 331 + .../src/components/settings/TagSettings.tsx | 180 + .../packages/public/src/config/api.ts | 35 + .../public/src/constants/makeAccountAds.ts | 146 + .../public/src/constants/reactions.ts | 27 + .../src/contexts/AgeVerificationContext.tsx | 93 + .../public/src/contexts/AuthContext.tsx | 165 + .../public/src/contexts/ChatBarContext.tsx | 242 + .../src/contexts/ExpandedVideoContext.tsx | 122 + .../contexts/KeyboardNavigationContext.tsx | 474 + .../public/src/contexts/ReactionsContext.tsx | 63 + .../public/src/contexts/SFWContext.tsx | 47 + .../public/src/contexts/SidebarContext.tsx | 42 + .../src/contexts/VideoPlaybackContext.tsx | 89 + .../src/contexts/WatchPartyInviteContext.tsx | 126 + .../public/src/hooks/useActivityFeed.ts | 69 + .../packages/public/src/hooks/useApi.ts | 173 + .../packages/public/src/hooks/useAutoPiP.ts | 259 + .../packages/public/src/hooks/useCast.ts | 292 + .../public/src/hooks/useChatNotifications.ts | 88 + .../packages/public/src/hooks/useChats.ts | 57 + .../public/src/hooks/useContinueWatching.ts | 50 + .../packages/public/src/hooks/useDashboard.ts | 130 + .../packages/public/src/hooks/useDeviceId.ts | 44 + .../packages/public/src/hooks/useFinish.ts | 49 + .../public/src/hooks/useFriendActivity.ts | 216 + .../packages/public/src/hooks/useFriends.ts | 228 + .../packages/public/src/hooks/useGallery.ts | 122 + .../packages/public/src/hooks/useHeartbeat.ts | 55 + .../public/src/hooks/useKeyboardShortcuts.ts | 108 + .../public/src/hooks/useLandscapeMode.ts | 46 + .../public/src/hooks/useMyReactions.ts | 111 + .../public/src/hooks/useNotificationSSE.ts | 121 + .../public/src/hooks/useNotifications.ts | 274 + .../packages/public/src/hooks/usePokes.ts | 80 + .../public/src/hooks/usePrivacySettings.ts | 183 + .../public/src/hooks/useQuickWatchParty.ts | 64 + .../public/src/hooks/useQuickieGeneration.ts | 156 + .../public/src/hooks/useReactionCooldown.ts | 167 + .../packages/public/src/hooks/useReactions.ts | 254 + .../public/src/hooks/useSocialLinks.ts | 195 + .../src/hooks/useVerticalVideoLayout.ts | 70 + .../src/hooks/useVideoRecommendations.ts | 117 + .../src/hooks/useVideoStatePreservation.ts | 117 + .../public/src/hooks/useWatchParty.ts | 357 + .../public/src/hooks/useWatchPartyInvites.ts | 120 + .../packages/public/src/hooks/useWatchTime.ts | 90 + .../public/src/hooks/useWebRTCHost.ts | 968 + .../public/src/hooks/useWebRTCParticipant.ts | 842 + media-manager/packages/public/src/index.css | 172 + media-manager/packages/public/src/main.tsx | 10 + .../public/src/pages/Compilations.tsx | 7 + .../packages/public/src/pages/Curated.tsx | 287 + .../packages/public/src/pages/Dashboard.tsx | 403 + .../public/src/pages/FriendDashboard.tsx | 409 + .../packages/public/src/pages/Friends.tsx | 717 + .../packages/public/src/pages/Home.tsx | 25 + .../packages/public/src/pages/MyPlaylists.tsx | 339 + .../packages/public/src/pages/MyUploads.tsx | 275 + .../packages/public/src/pages/Playback.tsx | 7 + .../packages/public/src/pages/Quickies.tsx | 5 + .../packages/public/src/pages/Settings.tsx | 102 + .../packages/public/src/pages/VerifyEmail.tsx | 108 + .../packages/public/src/pages/Videos.tsx | 7 + .../public/src/pages/WatchPartyHistory.tsx | 287 + .../public/src/pages/WatchPartyJoin.tsx | 166 + .../public/src/pages/WatchPartyLobby.tsx | 330 + .../public/src/pages/WatchPartyRoom.tsx | 966 + .../packages/public/src/types/cast.d.ts | 145 + .../packages/public/src/types/index.ts | 1014 + .../packages/public/src/utils/dateFormat.ts | 66 + .../public/src/utils/socialPlatforms.ts | 154 + .../packages/public/src/utils/videoUrl.ts | 23 + .../packages/public/src/vite-env.d.ts | 1 + .../packages/public/tailwind.config.js | 27 + media-manager/packages/public/tsconfig.json | 21 + .../packages/public/tsconfig.node.json | 11 + media-manager/packages/public/vite.config.ts | 15 + media-manager/packages/shared/package.json | 17 + media-manager/packages/shared/src/index.ts | 313 + media-manager/packages/shared/src/prompts.ts | 201 + media-manager/pnpm-workspace.yaml | 3 + media-manager/scene-detection/Dockerfile | 30 + media-manager/scene-detection/app.py | 126 + .../scene-detection/requirements.txt | 3 + .../scripts/create_gif_compilations.sh | 520 + .../scripts/create_mega_compilation.sh | 1035 + .../scripts/create_quad_compilation.sh | 970 + .../create_quad_horizontal_compilation.sh | 375 + .../scripts/create_random_compilation.sh | 429 + .../create_triple_vertical_compilation.sh | 361 + media-manager/scripts/fetch_content.sh | 250 + .../scripts/generate_gifs_from_video.sh | 294 + media-manager/scripts/organize_by_studio.sh | 610 + .../scripts/reencode_for_streaming.sh | 770 + media-manager/scripts/reset_all.sh | 49 + media-manager/startup.sh | 170 + media-manager/transnetv2/Dockerfile | 41 + media-manager/transnetv2/app.py | 396 + media-manager/transnetv2/requirements.txt | 7 + media-manager/whisper/Dockerfile | 35 + media-manager/whisper/entrypoint.sh | 20 + media-manager/whisper/transcribe.py | 150 + media-manager/yolo-detection/Dockerfile | 43 + media-manager/yolo-detection/main.py | 234 + media-manager/yolo-detection/requirements.txt | 8 + mkdocs/ADMIN_DOCS_VALIDATION_REPORT.md | 431 + mkdocs/docs/another-test-page.md | 7 - mkdocs/docs/assets/css/video-player.css | 161 + mkdocs/docs/assets/js/env-config.js | 13 + mkdocs/docs/assets/js/video-config.js | 18 + mkdocs/docs/assets/js/video-player.js | 224 + .../repo-data/admin-changemaker.lite.json | 4 +- .../env_config_hook.cpython-311.pyc | Bin 0 -> 4153 bytes mkdocs/docs/hooks/env_config_hook.py | 88 + mkdocs/docs/index.md | 84 +- mkdocs/docs/main.md | 7 - mkdocs/docs/overrides/main.html | 11 - mkdocs/docs/test-2.md | 7 - mkdocs/docs/{ => v1}/adv/ansible.md | 0 mkdocs/docs/{ => v1}/adv/index.md | 0 mkdocs/docs/{ => v1}/adv/vscode-ssh.md | 0 mkdocs/docs/{ => v1}/build/index.md | 0 mkdocs/docs/{ => v1}/build/influence.md | 0 mkdocs/docs/{ => v1}/build/map.md | 0 mkdocs/docs/{ => v1}/build/server.md | 0 mkdocs/docs/{ => v1}/build/site.md | 0 .../docs/{ => v1}/config/cloudflare-config.md | 0 mkdocs/docs/{ => v1}/config/coder.md | 0 mkdocs/docs/{ => v1}/config/index.md | 0 mkdocs/docs/{ => v1}/config/map.md | 0 mkdocs/docs/{ => v1}/config/mkdocs.md | 0 mkdocs/docs/v1/index.md | 129 + mkdocs/docs/{ => v1}/manual/index.md | 0 mkdocs/docs/{ => v1}/manual/map.md | 0 mkdocs/docs/{ => v1}/services/code-server.md | 0 mkdocs/docs/{ => v1}/services/code.png | Bin mkdocs/docs/{ => v1}/services/dashboard.png | Bin mkdocs/docs/{ => v1}/services/git.png | Bin mkdocs/docs/{ => v1}/services/gitea.md | 0 mkdocs/docs/{ => v1}/services/homepage.md | 0 mkdocs/docs/{ => v1}/services/index.md | 0 mkdocs/docs/{ => v1}/services/listmonk.md | 0 mkdocs/docs/{ => v1}/services/map.md | 0 mkdocs/docs/{ => v1}/services/map.png | Bin mkdocs/docs/{ => v1}/services/mini-qr.md | 0 mkdocs/docs/{ => v1}/services/mkdocs.md | 0 mkdocs/docs/{ => v1}/services/n8n.md | 0 mkdocs/docs/{ => v1}/services/nocodb.md | 0 mkdocs/docs/{ => v1}/services/postgresql.md | 0 .../docs/{ => v1}/services/static-server.md | 0 mkdocs/docs/v2/api-reference/index.md | 383 + mkdocs/docs/v2/architecture/authentication.md | 800 + mkdocs/docs/v2/architecture/dual-api.md | 751 + mkdocs/docs/v2/architecture/index.md | 590 + mkdocs/docs/v2/backend/index.md | 75 + mkdocs/docs/v2/backend/middleware/index.md | 214 + mkdocs/docs/v2/backend/modules/auth.md | 694 + mkdocs/docs/v2/backend/modules/campaigns.md | 538 + mkdocs/docs/v2/backend/modules/canvass.md | 1123 ++ mkdocs/docs/v2/backend/modules/index.md | 92 + mkdocs/docs/v2/backend/modules/locations.md | 1352 ++ mkdocs/docs/v2/backend/modules/media.md | 1164 ++ mkdocs/docs/v2/backend/modules/pages.md | 1434 ++ .../v2/backend/modules/representatives.md | 987 + mkdocs/docs/v2/backend/modules/responses.md | 1319 ++ mkdocs/docs/v2/backend/modules/settings.md | 844 + mkdocs/docs/v2/backend/modules/shifts.md | 1656 ++ mkdocs/docs/v2/backend/modules/users.md | 830 + mkdocs/docs/v2/backend/services/index.md | 181 + mkdocs/docs/v2/backend/utilities/index.md | 224 + .../docs/v2/contributing/code-of-conduct.md | 190 + .../docs/v2/contributing/development-setup.md | 596 + mkdocs/docs/v2/contributing/index.md | 478 + mkdocs/docs/v2/contributing/pull-requests.md | 619 + mkdocs/docs/v2/contributing/roadmap.md | 710 + mkdocs/docs/v2/database/index.md | 836 + mkdocs/docs/v2/database/indexes.md | 462 + mkdocs/docs/v2/database/migrations.md | 473 + mkdocs/docs/v2/database/models/auth.md | 543 + mkdocs/docs/v2/database/models/canvass.md | 276 + .../v2/database/models/email-templates.md | 119 + mkdocs/docs/v2/database/models/index.md | 370 + mkdocs/docs/v2/database/models/influence.md | 239 + mkdocs/docs/v2/database/models/map.md | 286 + mkdocs/docs/v2/database/models/media.md | 146 + mkdocs/docs/v2/database/models/pages.md | 134 + mkdocs/docs/v2/database/models/settings.md | 62 + mkdocs/docs/v2/database/schema.md | 1038 + mkdocs/docs/v2/database/seeding.md | 484 + mkdocs/docs/v2/deployment/backup-restore.md | 669 + mkdocs/docs/v2/deployment/docker-compose.md | 1606 ++ .../v2/deployment/environment-variables.md | 798 + mkdocs/docs/v2/deployment/healthchecks.md | 613 + mkdocs/docs/v2/deployment/index.md | 359 + mkdocs/docs/v2/deployment/monitoring-stack.md | 667 + mkdocs/docs/v2/deployment/nginx.md | 1391 ++ mkdocs/docs/v2/deployment/scaling.md | 540 + mkdocs/docs/v2/deployment/ssl-tls.md | 478 + mkdocs/docs/v2/deployment/tunneling.md | 449 + mkdocs/docs/v2/development/code-style.md | 982 + mkdocs/docs/v2/development/debugging.md | 1006 + mkdocs/docs/v2/development/docker-workflow.md | 1130 ++ mkdocs/docs/v2/development/git-workflow.md | 1009 + mkdocs/docs/v2/development/index.md | 425 + mkdocs/docs/v2/development/local-setup.md | 1379 ++ mkdocs/docs/v2/development/migrations.md | 1154 ++ mkdocs/docs/v2/development/npm-commands.md | 1391 ++ mkdocs/docs/v2/development/testing.md | 1129 ++ mkdocs/docs/v2/development/typescript.md | 1047 + mkdocs/docs/v2/features/COMPLETION_STATUS.md | 148 + .../v2/features/email-templates/editor.md | 1617 ++ .../docs/v2/features/email-templates/index.md | 345 + .../email-templates/template-system.md | 1610 ++ .../v2/features/email-templates/variables.md | 1337 ++ .../v2/features/email-templates/versioning.md | 1233 ++ mkdocs/docs/v2/features/index.md | 155 + .../docs/v2/features/influence/campaigns.md | 753 + .../docs/v2/features/influence/email-queue.md | 994 + mkdocs/docs/v2/features/influence/index.md | 233 + .../v2/features/influence/postal-codes.md | 151 + .../v2/features/influence/representatives.md | 924 + .../docs/v2/features/influence/responses.md | 1033 + .../docs/v2/features/landing-pages/index.md | 340 + .../v2/features/map/MAP_FEATURES_STATUS.md | 95 + mkdocs/docs/v2/features/map/canvassing.md | 1020 + mkdocs/docs/v2/features/map/cuts.md | 924 + mkdocs/docs/v2/features/map/data-quality.md | 1843 ++ mkdocs/docs/v2/features/map/geocoding.md | 1029 + mkdocs/docs/v2/features/map/index.md | 353 + mkdocs/docs/v2/features/map/locations.md | 1154 ++ mkdocs/docs/v2/features/map/nar-import.md | 1827 ++ mkdocs/docs/v2/features/map/shifts.md | 946 + mkdocs/docs/v2/features/map/tracking.md | 409 + mkdocs/docs/v2/features/map/walk-sheets.md | 2235 +++ mkdocs/docs/v2/features/media/index.md | 358 + mkdocs/docs/v2/features/media/jobs.md | 1550 ++ .../docs/v2/features/media/public-gallery.md | 1667 ++ mkdocs/docs/v2/features/media/upload.md | 1340 ++ .../docs/v2/features/media/video-library.md | 1718 ++ mkdocs/docs/v2/features/newsletter/index.md | 359 + .../docs/v2/features/observability/index.md | 464 + .../docs/v2/features/pages/block-library.md | 1008 + .../docs/v2/features/pages/grapes-editor.md | 1060 + .../docs/v2/features/pages/mkdocs-export.md | 959 + mkdocs/docs/v2/features/pages/page-builder.md | 1163 ++ mkdocs/docs/v2/features/tunnel/index.md | 407 + mkdocs/docs/v2/frontend/components/index.md | 367 + mkdocs/docs/v2/frontend/index.md | 244 + mkdocs/docs/v2/frontend/layouts/index.md | 262 + .../v2/frontend/pages/admin/campaigns-page.md | 802 + .../pages/admin/canvass-dashboard-page.md | 1415 ++ .../frontend/pages/admin/code-editor-page.md | 414 + .../frontend/pages/admin/cut-export-page.md | 1174 ++ .../docs/v2/frontend/pages/admin/cuts-page.md | 1690 ++ .../v2/frontend/pages/admin/dashboard-page.md | 266 + .../admin/data-quality-dashboard-page.md | 617 + .../docs/v2/frontend/pages/admin/docs-page.md | 830 + .../frontend/pages/admin/email-queue-page.md | 1046 + .../pages/admin/email-template-editor-page.md | 929 + .../pages/admin/email-templates-page.md | 960 + .../v2/frontend/pages/admin/gitea-page.md | 210 + mkdocs/docs/v2/frontend/pages/admin/index.md | 482 + .../pages/admin/landing-pages-page.md | 1652 ++ .../v2/frontend/pages/admin/listmonk-page.md | 1456 ++ .../v2/frontend/pages/admin/locations-page.md | 1188 ++ .../v2/frontend/pages/admin/mailhog-page.md | 610 + .../frontend/pages/admin/map-settings-page.md | 1434 ++ .../v2/frontend/pages/admin/mini-qr-page.md | 1039 + .../pages/admin/mkdocs-settings-page.md | 2230 +++ .../docs/v2/frontend/pages/admin/n8n-page.md | 371 + .../v2/frontend/pages/admin/nocodb-page.md | 300 + .../pages/admin/observability-page.md | 858 + .../frontend/pages/admin/page-editor-page.md | 1099 ++ .../v2/frontend/pages/admin/pangolin-page.md | 1108 ++ .../pages/admin/representatives-page.md | 1571 ++ .../v2/frontend/pages/admin/responses-page.md | 823 + .../v2/frontend/pages/admin/settings-page.md | 603 + .../v2/frontend/pages/admin/shifts-page.md | 1107 ++ .../v2/frontend/pages/admin/users-page.md | 637 + .../frontend/pages/admin/walk-sheet-page.md | 1117 ++ mkdocs/docs/v2/frontend/pages/index.md | 204 + .../v2/frontend/pages/public/campaign-page.md | 1570 ++ .../pages/public/campaigns-list-page.md | 1229 ++ mkdocs/docs/v2/frontend/pages/public/index.md | 261 + .../v2/frontend/pages/public/landing-page.md | 105 + .../docs/v2/frontend/pages/public/map-page.md | 607 + .../pages/public/media-gallery-page.md | 106 + .../pages/public/media-viewer-page.md | 190 + .../pages/public/response-wall-page.md | 1349 ++ .../v2/frontend/pages/public/shifts-page.md | 476 + .../docs/v2/frontend/pages/volunteer/index.md | 271 + .../pages/volunteer/my-activity-page.md | 183 + .../pages/volunteer/my-routes-page.md | 259 + .../pages/volunteer/volunteer-map-page.md | 1040 + .../pages/volunteer/volunteer-shifts-page.md | 360 + mkdocs/docs/v2/getting-started/index.md | 136 + mkdocs/docs/v2/getting-started/quick-start.md | 243 + mkdocs/docs/v2/index.md | 263 + mkdocs/docs/v2/migration/api-changes.md | 1137 ++ mkdocs/docs/v2/migration/breaking-changes.md | 1167 ++ mkdocs/docs/v2/migration/data-migration.md | 1488 ++ mkdocs/docs/v2/migration/feature-parity.md | 618 + mkdocs/docs/v2/migration/index.md | 619 + mkdocs/docs/v2/troubleshooting/auth-issues.md | 1334 ++ .../docs/v2/troubleshooting/common-errors.md | 2085 ++ .../v2/troubleshooting/database-issues.md | 1967 ++ .../docs/v2/troubleshooting/docker-issues.md | 1956 ++ .../docs/v2/troubleshooting/email-issues.md | 1335 ++ mkdocs/docs/v2/troubleshooting/faq.md | 1163 ++ .../v2/troubleshooting/geocoding-issues.md | 1505 ++ mkdocs/docs/v2/troubleshooting/index.md | 378 + .../v2/troubleshooting/monitoring-issues.md | 1152 ++ .../performance-optimization.md | 1064 + mkdocs/docs/v2/user-guides/admin-guide.md | 1596 ++ .../v2/user-guides/campaign-manager-guide.md | 1427 ++ .../v2/user-guides/content-editor-guide.md | 1276 ++ mkdocs/docs/v2/user-guides/index.md | 317 + .../v2/user-guides/map-organizer-guide.md | 1329 ++ mkdocs/docs/v2/user-guides/volunteer-guide.md | 1121 ++ mkdocs/mkdocs.yml | 275 +- nginx/Dockerfile | 11 +- nginx/conf.d/api.conf | 23 +- nginx/conf.d/api.conf.template | 38 + nginx/conf.d/default.conf | 46 +- nginx/conf.d/default.conf.template | 70 + nginx/conf.d/services.conf | 232 +- nginx/conf.d/services.conf.template | 385 + nginx/conf.d/services.conf.template.bak | 413 + nginx/entrypoint.sh | 20 + nginx/nginx.conf | 2 + production plan.md | 1091 + scripts/update-env.sh | 85 + shared/types/media.ts | 329 + 1367 files changed, 404191 insertions(+), 2005 deletions(-) create mode 100644 .claude/agents/foss-compliance-reviewer.md create mode 100644 NARguide.pdf create mode 100644 PANGOLIN_NGINX_FIX_SUMMARY.md create mode 100644 PRODUCTION_403_FIX.md create mode 100644 RNAguide.pdf create mode 100644 admin/src/components/MediaPublicLayout.tsx create mode 100644 admin/src/components/canvass/BottomControlPanel.tsx create mode 100644 admin/src/components/canvass/CanvassMarkerGroup.tsx create mode 100644 admin/src/components/canvass/canvassClusterUtils.ts create mode 100644 admin/src/components/email-templates/EmailTemplateEditor.tsx create mode 100644 admin/src/components/email-templates/LAYOUT_RECOMMENDATION.md create mode 100644 admin/src/components/email-templates/TestEmailModal.tsx create mode 100644 admin/src/components/email-templates/VariablesPanel.tsx create mode 100644 admin/src/components/email-templates/VersionHistoryDrawer.tsx create mode 100644 admin/src/components/email-templates/VideoVariableEditor.tsx rename admin/src/{pages/PageEditorPage.tsx => components/landing-pages/LandingPageEditor.tsx} (84%) create mode 100644 admin/src/components/map/mapIcons.ts create mode 100644 admin/src/components/media/AdvancedVideoPlayer.tsx create mode 100644 admin/src/components/media/AnalyticsChart.tsx create mode 100644 admin/src/components/media/BulkActionsBar.tsx create mode 100644 admin/src/components/media/CommentSection.tsx create mode 100644 admin/src/components/media/DeleteConfirmModal.tsx create mode 100644 admin/src/components/media/EditVideoModal.tsx create mode 100644 admin/src/components/media/ExpandedVideoCard.tsx create mode 100644 admin/src/components/media/LiveChat.tsx create mode 100644 admin/src/components/media/MediaBottomNav.tsx create mode 100644 admin/src/components/media/MediaSidebar.tsx create mode 100644 admin/src/components/media/ProgressBarMarkers.tsx create mode 100644 admin/src/components/media/PublicVideoCard.tsx create mode 100644 admin/src/components/media/PublishModal.tsx create mode 100644 admin/src/components/media/QuickAnalyticsModal.tsx create mode 100644 admin/src/components/media/ReactionButtons.tsx create mode 100644 admin/src/components/media/RelatedVideosList.tsx create mode 100644 admin/src/components/media/ScheduleBadge.tsx create mode 100644 admin/src/components/media/ScheduleCalendarDrawer.tsx create mode 100644 admin/src/components/media/SchedulePublishModal.tsx create mode 100644 admin/src/components/media/SharedMediaCard.tsx create mode 100644 admin/src/components/media/UploadVideoModal.tsx create mode 100644 admin/src/components/media/VideoActions.tsx create mode 100644 admin/src/components/media/VideoAnalyticsModal.tsx create mode 100644 admin/src/components/media/VideoCard.tsx create mode 100644 admin/src/components/media/VideoPickerModal.tsx create mode 100644 admin/src/components/media/VideoPlayer.tsx create mode 100644 admin/src/components/media/VideoViewerModal.tsx create mode 100644 admin/src/components/media/ViewersTable.tsx create mode 100644 admin/src/components/observability/AlertsTable.tsx create mode 100644 admin/src/components/observability/IframeErrorBoundary.tsx create mode 100644 admin/src/components/observability/MetricsGrid.tsx create mode 100644 admin/src/components/observability/ServiceStatusCard.tsx create mode 100644 admin/src/components/shifts/EditModeModal.tsx create mode 100644 admin/src/components/shifts/ShiftsCalendar.tsx create mode 100644 admin/src/contexts/ExpandedVideoContext.tsx create mode 100644 admin/src/contexts/MediaAuthContext.tsx create mode 100644 admin/src/hooks/useDebounce.ts create mode 100644 admin/src/hooks/useKeyboardShortcuts.ts create mode 100644 admin/src/hooks/useLocalStorage.ts create mode 100644 admin/src/lib/media-api.ts create mode 100644 admin/src/lib/media-public-api.ts create mode 100644 admin/src/pages/DataQualityDashboardPage.tsx create mode 100644 admin/src/pages/EmailTemplateEditorPage.tsx create mode 100644 admin/src/pages/EmailTemplatesPage.tsx create mode 100644 admin/src/pages/ExcalidrawPage.tsx create mode 100644 admin/src/pages/MiniQRPage.tsx create mode 100644 admin/src/pages/ObservabilityPage.tsx create mode 100644 admin/src/pages/media/AnalyticsDashboardPage.tsx create mode 100644 admin/src/pages/media/LibraryPage.tsx create mode 100644 admin/src/pages/media/MediaJobsPage.tsx create mode 100644 admin/src/pages/public/MediaGalleryPage.tsx create mode 100644 admin/src/pages/public/MediaViewerPage.tsx create mode 100644 admin/src/types/media.ts create mode 100644 admin/src/utils/sanitize.ts create mode 100644 admin/src/utils/url-validator.ts create mode 100644 admin/src/utils/video.ts create mode 100644 admin/tsconfig.tsbuildinfo create mode 100644 api/Dockerfile.media create mode 100644 api/dist/config/database.d.ts create mode 100644 api/dist/config/database.d.ts.map create mode 100644 api/dist/config/database.js create mode 100644 api/dist/config/database.js.map create mode 100644 api/dist/config/env.d.ts create mode 100644 api/dist/config/env.d.ts.map create mode 100644 api/dist/config/env.js create mode 100644 api/dist/config/env.js.map create mode 100644 api/dist/config/redis.d.ts create mode 100644 api/dist/config/redis.d.ts.map create mode 100644 api/dist/config/redis.js create mode 100644 api/dist/config/redis.js.map create mode 100644 api/dist/media-server.d.ts create mode 100644 api/dist/media-server.d.ts.map create mode 100644 api/dist/media-server.js create mode 100644 api/dist/media-server.js.map create mode 100644 api/dist/middleware/auth.middleware.d.ts create mode 100644 api/dist/middleware/auth.middleware.d.ts.map create mode 100644 api/dist/middleware/auth.middleware.js create mode 100644 api/dist/middleware/auth.middleware.js.map create mode 100644 api/dist/middleware/error-handler.d.ts create mode 100644 api/dist/middleware/error-handler.d.ts.map create mode 100644 api/dist/middleware/error-handler.js create mode 100644 api/dist/middleware/error-handler.js.map create mode 100644 api/dist/middleware/rate-limit.d.ts create mode 100644 api/dist/middleware/rate-limit.d.ts.map create mode 100644 api/dist/middleware/rate-limit.js create mode 100644 api/dist/middleware/rate-limit.js.map create mode 100644 api/dist/middleware/rbac.middleware.d.ts create mode 100644 api/dist/middleware/rbac.middleware.d.ts.map create mode 100644 api/dist/middleware/rbac.middleware.js create mode 100644 api/dist/middleware/rbac.middleware.js.map create mode 100644 api/dist/middleware/validate.d.ts create mode 100644 api/dist/middleware/validate.d.ts.map create mode 100644 api/dist/middleware/validate.js create mode 100644 api/dist/middleware/validate.js.map create mode 100644 api/dist/modules/auth/auth.routes.d.ts create mode 100644 api/dist/modules/auth/auth.routes.d.ts.map create mode 100644 api/dist/modules/auth/auth.routes.js create mode 100644 api/dist/modules/auth/auth.routes.js.map create mode 100644 api/dist/modules/auth/auth.schemas.d.ts create mode 100644 api/dist/modules/auth/auth.schemas.d.ts.map create mode 100644 api/dist/modules/auth/auth.schemas.js create mode 100644 api/dist/modules/auth/auth.schemas.js.map create mode 100644 api/dist/modules/auth/auth.service.d.ts create mode 100644 api/dist/modules/auth/auth.service.d.ts.map create mode 100644 api/dist/modules/auth/auth.service.js create mode 100644 api/dist/modules/auth/auth.service.js.map create mode 100644 api/dist/modules/docs/docs-files.service.d.ts create mode 100644 api/dist/modules/docs/docs-files.service.d.ts.map create mode 100644 api/dist/modules/docs/docs-files.service.js create mode 100644 api/dist/modules/docs/docs-files.service.js.map create mode 100644 api/dist/modules/docs/docs.routes.d.ts create mode 100644 api/dist/modules/docs/docs.routes.d.ts.map create mode 100644 api/dist/modules/docs/docs.routes.js create mode 100644 api/dist/modules/docs/docs.routes.js.map create mode 100644 api/dist/modules/docs/mkdocs-config.service.d.ts create mode 100644 api/dist/modules/docs/mkdocs-config.service.d.ts.map create mode 100644 api/dist/modules/docs/mkdocs-config.service.js create mode 100644 api/dist/modules/docs/mkdocs-config.service.js.map create mode 100644 api/dist/modules/email-templates/email-templates-admin.routes.d.ts create mode 100644 api/dist/modules/email-templates/email-templates-admin.routes.d.ts.map create mode 100644 api/dist/modules/email-templates/email-templates-admin.routes.js create mode 100644 api/dist/modules/email-templates/email-templates-admin.routes.js.map create mode 100644 api/dist/modules/email-templates/email-templates.schemas.d.ts create mode 100644 api/dist/modules/email-templates/email-templates.schemas.d.ts.map create mode 100644 api/dist/modules/email-templates/email-templates.schemas.js create mode 100644 api/dist/modules/email-templates/email-templates.schemas.js.map create mode 100644 api/dist/modules/email-templates/email-templates.service.d.ts create mode 100644 api/dist/modules/email-templates/email-templates.service.d.ts.map create mode 100644 api/dist/modules/email-templates/email-templates.service.js create mode 100644 api/dist/modules/email-templates/email-templates.service.js.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.routes.js create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.routes.js.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.schemas.d.ts create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.schemas.d.ts.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.schemas.js create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.schemas.js.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts.map create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.service.js create mode 100644 api/dist/modules/influence/campaign-emails/campaign-emails.service.js.map create mode 100644 api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts create mode 100644 api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts.map create mode 100644 api/dist/modules/influence/campaigns/campaigns-public.routes.js create mode 100644 api/dist/modules/influence/campaigns/campaigns-public.routes.js.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.routes.d.ts create mode 100644 api/dist/modules/influence/campaigns/campaigns.routes.d.ts.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.routes.js create mode 100644 api/dist/modules/influence/campaigns/campaigns.routes.js.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.schemas.d.ts create mode 100644 api/dist/modules/influence/campaigns/campaigns.schemas.d.ts.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.schemas.js create mode 100644 api/dist/modules/influence/campaigns/campaigns.schemas.js.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.service.d.ts create mode 100644 api/dist/modules/influence/campaigns/campaigns.service.d.ts.map create mode 100644 api/dist/modules/influence/campaigns/campaigns.service.js create mode 100644 api/dist/modules/influence/campaigns/campaigns.service.js.map create mode 100644 api/dist/modules/influence/email-queue/email-queue.routes.d.ts create mode 100644 api/dist/modules/influence/email-queue/email-queue.routes.d.ts.map create mode 100644 api/dist/modules/influence/email-queue/email-queue.routes.js create mode 100644 api/dist/modules/influence/email-queue/email-queue.routes.js.map create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts.map create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.schemas.js create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.schemas.js.map create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.service.d.ts create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.service.d.ts.map create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.service.js create mode 100644 api/dist/modules/influence/postal-codes/postal-codes.service.js.map create mode 100644 api/dist/modules/influence/representatives/represent-api.client.d.ts create mode 100644 api/dist/modules/influence/representatives/represent-api.client.d.ts.map create mode 100644 api/dist/modules/influence/representatives/represent-api.client.js create mode 100644 api/dist/modules/influence/representatives/represent-api.client.js.map create mode 100644 api/dist/modules/influence/representatives/representatives.routes.d.ts create mode 100644 api/dist/modules/influence/representatives/representatives.routes.d.ts.map create mode 100644 api/dist/modules/influence/representatives/representatives.routes.js create mode 100644 api/dist/modules/influence/representatives/representatives.routes.js.map create mode 100644 api/dist/modules/influence/representatives/representatives.schemas.d.ts create mode 100644 api/dist/modules/influence/representatives/representatives.schemas.d.ts.map create mode 100644 api/dist/modules/influence/representatives/representatives.schemas.js create mode 100644 api/dist/modules/influence/representatives/representatives.schemas.js.map create mode 100644 api/dist/modules/influence/representatives/representatives.service.d.ts create mode 100644 api/dist/modules/influence/representatives/representatives.service.d.ts.map create mode 100644 api/dist/modules/influence/representatives/representatives.service.js create mode 100644 api/dist/modules/influence/representatives/representatives.service.js.map create mode 100644 api/dist/modules/influence/responses/responses.routes.d.ts create mode 100644 api/dist/modules/influence/responses/responses.routes.d.ts.map create mode 100644 api/dist/modules/influence/responses/responses.routes.js create mode 100644 api/dist/modules/influence/responses/responses.routes.js.map create mode 100644 api/dist/modules/influence/responses/responses.schemas.d.ts create mode 100644 api/dist/modules/influence/responses/responses.schemas.d.ts.map create mode 100644 api/dist/modules/influence/responses/responses.schemas.js create mode 100644 api/dist/modules/influence/responses/responses.schemas.js.map create mode 100644 api/dist/modules/influence/responses/responses.service.d.ts create mode 100644 api/dist/modules/influence/responses/responses.service.d.ts.map create mode 100644 api/dist/modules/influence/responses/responses.service.js create mode 100644 api/dist/modules/influence/responses/responses.service.js.map create mode 100644 api/dist/modules/listmonk/listmonk.routes.d.ts create mode 100644 api/dist/modules/listmonk/listmonk.routes.d.ts.map create mode 100644 api/dist/modules/listmonk/listmonk.routes.js create mode 100644 api/dist/modules/listmonk/listmonk.routes.js.map create mode 100644 api/dist/modules/map/canvass/canvass-route.service.d.ts create mode 100644 api/dist/modules/map/canvass/canvass-route.service.d.ts.map create mode 100644 api/dist/modules/map/canvass/canvass-route.service.js create mode 100644 api/dist/modules/map/canvass/canvass-route.service.js.map create mode 100644 api/dist/modules/map/canvass/canvass.routes.d.ts create mode 100644 api/dist/modules/map/canvass/canvass.routes.d.ts.map create mode 100644 api/dist/modules/map/canvass/canvass.routes.js create mode 100644 api/dist/modules/map/canvass/canvass.routes.js.map create mode 100644 api/dist/modules/map/canvass/canvass.schemas.d.ts create mode 100644 api/dist/modules/map/canvass/canvass.schemas.d.ts.map create mode 100644 api/dist/modules/map/canvass/canvass.schemas.js create mode 100644 api/dist/modules/map/canvass/canvass.schemas.js.map create mode 100644 api/dist/modules/map/canvass/canvass.service.d.ts create mode 100644 api/dist/modules/map/canvass/canvass.service.d.ts.map create mode 100644 api/dist/modules/map/canvass/canvass.service.js create mode 100644 api/dist/modules/map/canvass/canvass.service.js.map create mode 100644 api/dist/modules/map/cuts/cuts.routes.d.ts create mode 100644 api/dist/modules/map/cuts/cuts.routes.d.ts.map create mode 100644 api/dist/modules/map/cuts/cuts.routes.js create mode 100644 api/dist/modules/map/cuts/cuts.routes.js.map create mode 100644 api/dist/modules/map/cuts/cuts.schemas.d.ts create mode 100644 api/dist/modules/map/cuts/cuts.schemas.d.ts.map create mode 100644 api/dist/modules/map/cuts/cuts.schemas.js create mode 100644 api/dist/modules/map/cuts/cuts.schemas.js.map create mode 100644 api/dist/modules/map/cuts/cuts.service.d.ts create mode 100644 api/dist/modules/map/cuts/cuts.service.d.ts.map create mode 100644 api/dist/modules/map/cuts/cuts.service.js create mode 100644 api/dist/modules/map/cuts/cuts.service.js.map create mode 100644 api/dist/modules/map/geocoding/geocoding.routes.d.ts create mode 100644 api/dist/modules/map/geocoding/geocoding.routes.d.ts.map create mode 100644 api/dist/modules/map/geocoding/geocoding.routes.js create mode 100644 api/dist/modules/map/geocoding/geocoding.routes.js.map create mode 100644 api/dist/modules/map/geocoding/geocoding.service.d.ts create mode 100644 api/dist/modules/map/geocoding/geocoding.service.d.ts.map create mode 100644 api/dist/modules/map/geocoding/geocoding.service.js create mode 100644 api/dist/modules/map/geocoding/geocoding.service.js.map create mode 100644 api/dist/modules/map/locations/bulk-geocode.routes.d.ts create mode 100644 api/dist/modules/map/locations/bulk-geocode.routes.d.ts.map create mode 100644 api/dist/modules/map/locations/bulk-geocode.routes.js create mode 100644 api/dist/modules/map/locations/bulk-geocode.routes.js.map create mode 100644 api/dist/modules/map/locations/bulk-geocode.schemas.d.ts create mode 100644 api/dist/modules/map/locations/bulk-geocode.schemas.d.ts.map create mode 100644 api/dist/modules/map/locations/bulk-geocode.schemas.js create mode 100644 api/dist/modules/map/locations/bulk-geocode.schemas.js.map create mode 100644 api/dist/modules/map/locations/locations.routes.d.ts create mode 100644 api/dist/modules/map/locations/locations.routes.d.ts.map create mode 100644 api/dist/modules/map/locations/locations.routes.js create mode 100644 api/dist/modules/map/locations/locations.routes.js.map create mode 100644 api/dist/modules/map/locations/locations.schemas.d.ts create mode 100644 api/dist/modules/map/locations/locations.schemas.d.ts.map create mode 100644 api/dist/modules/map/locations/locations.schemas.js create mode 100644 api/dist/modules/map/locations/locations.schemas.js.map create mode 100644 api/dist/modules/map/locations/locations.service.d.ts create mode 100644 api/dist/modules/map/locations/locations.service.d.ts.map create mode 100644 api/dist/modules/map/locations/locations.service.js create mode 100644 api/dist/modules/map/locations/locations.service.js.map create mode 100644 api/dist/modules/map/locations/nar-import.routes.d.ts create mode 100644 api/dist/modules/map/locations/nar-import.routes.d.ts.map create mode 100644 api/dist/modules/map/locations/nar-import.routes.js create mode 100644 api/dist/modules/map/locations/nar-import.routes.js.map create mode 100644 api/dist/modules/map/locations/nar-import.service.d.ts create mode 100644 api/dist/modules/map/locations/nar-import.service.d.ts.map create mode 100644 api/dist/modules/map/locations/nar-import.service.js create mode 100644 api/dist/modules/map/locations/nar-import.service.js.map create mode 100644 api/dist/modules/map/settings/settings.routes.d.ts create mode 100644 api/dist/modules/map/settings/settings.routes.d.ts.map create mode 100644 api/dist/modules/map/settings/settings.routes.js create mode 100644 api/dist/modules/map/settings/settings.routes.js.map create mode 100644 api/dist/modules/map/settings/settings.schemas.d.ts create mode 100644 api/dist/modules/map/settings/settings.schemas.d.ts.map create mode 100644 api/dist/modules/map/settings/settings.schemas.js create mode 100644 api/dist/modules/map/settings/settings.schemas.js.map create mode 100644 api/dist/modules/map/settings/settings.service.d.ts create mode 100644 api/dist/modules/map/settings/settings.service.d.ts.map create mode 100644 api/dist/modules/map/settings/settings.service.js create mode 100644 api/dist/modules/map/settings/settings.service.js.map create mode 100644 api/dist/modules/map/shifts/shift-series.routes.d.ts create mode 100644 api/dist/modules/map/shifts/shift-series.routes.d.ts.map create mode 100644 api/dist/modules/map/shifts/shift-series.routes.js create mode 100644 api/dist/modules/map/shifts/shift-series.routes.js.map create mode 100644 api/dist/modules/map/shifts/shift-series.schemas.d.ts create mode 100644 api/dist/modules/map/shifts/shift-series.schemas.d.ts.map create mode 100644 api/dist/modules/map/shifts/shift-series.schemas.js create mode 100644 api/dist/modules/map/shifts/shift-series.schemas.js.map create mode 100644 api/dist/modules/map/shifts/shift-series.service.d.ts create mode 100644 api/dist/modules/map/shifts/shift-series.service.d.ts.map create mode 100644 api/dist/modules/map/shifts/shift-series.service.js create mode 100644 api/dist/modules/map/shifts/shift-series.service.js.map create mode 100644 api/dist/modules/map/shifts/shifts.routes.d.ts create mode 100644 api/dist/modules/map/shifts/shifts.routes.d.ts.map create mode 100644 api/dist/modules/map/shifts/shifts.routes.js create mode 100644 api/dist/modules/map/shifts/shifts.routes.js.map create mode 100644 api/dist/modules/map/shifts/shifts.schemas.d.ts create mode 100644 api/dist/modules/map/shifts/shifts.schemas.d.ts.map create mode 100644 api/dist/modules/map/shifts/shifts.schemas.js create mode 100644 api/dist/modules/map/shifts/shifts.schemas.js.map create mode 100644 api/dist/modules/map/shifts/shifts.service.d.ts create mode 100644 api/dist/modules/map/shifts/shifts.service.d.ts.map create mode 100644 api/dist/modules/map/shifts/shifts.service.js create mode 100644 api/dist/modules/map/shifts/shifts.service.js.map create mode 100644 api/dist/modules/map/tracking/tracking.routes.d.ts create mode 100644 api/dist/modules/map/tracking/tracking.routes.d.ts.map create mode 100644 api/dist/modules/map/tracking/tracking.routes.js create mode 100644 api/dist/modules/map/tracking/tracking.routes.js.map create mode 100644 api/dist/modules/map/tracking/tracking.schemas.d.ts create mode 100644 api/dist/modules/map/tracking/tracking.schemas.d.ts.map create mode 100644 api/dist/modules/map/tracking/tracking.schemas.js create mode 100644 api/dist/modules/map/tracking/tracking.schemas.js.map create mode 100644 api/dist/modules/map/tracking/tracking.service.d.ts create mode 100644 api/dist/modules/map/tracking/tracking.service.d.ts.map create mode 100644 api/dist/modules/map/tracking/tracking.service.js create mode 100644 api/dist/modules/map/tracking/tracking.service.js.map create mode 100644 api/dist/modules/media/db/index.d.ts create mode 100644 api/dist/modules/media/db/index.d.ts.map create mode 100644 api/dist/modules/media/db/index.js create mode 100644 api/dist/modules/media/db/index.js.map create mode 100644 api/dist/modules/media/db/schema.d.ts create mode 100644 api/dist/modules/media/db/schema.d.ts.map create mode 100644 api/dist/modules/media/db/schema.js create mode 100644 api/dist/modules/media/db/schema.js.map create mode 100644 api/dist/modules/media/middleware/auth.d.ts create mode 100644 api/dist/modules/media/middleware/auth.d.ts.map create mode 100644 api/dist/modules/media/middleware/auth.js create mode 100644 api/dist/modules/media/middleware/auth.js.map create mode 100644 api/dist/modules/media/routes/comments.routes.d.ts create mode 100644 api/dist/modules/media/routes/comments.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/comments.routes.js create mode 100644 api/dist/modules/media/routes/comments.routes.js.map create mode 100644 api/dist/modules/media/routes/public-media.routes.d.ts create mode 100644 api/dist/modules/media/routes/public-media.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/public-media.routes.js create mode 100644 api/dist/modules/media/routes/public-media.routes.js.map create mode 100644 api/dist/modules/media/routes/reactions.routes.d.ts create mode 100644 api/dist/modules/media/routes/reactions.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/reactions.routes.js create mode 100644 api/dist/modules/media/routes/reactions.routes.js.map create mode 100644 api/dist/modules/media/routes/upload.routes.d.ts create mode 100644 api/dist/modules/media/routes/upload.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/upload.routes.js create mode 100644 api/dist/modules/media/routes/upload.routes.js.map create mode 100644 api/dist/modules/media/routes/video-actions.routes.d.ts create mode 100644 api/dist/modules/media/routes/video-actions.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/video-actions.routes.js create mode 100644 api/dist/modules/media/routes/video-actions.routes.js.map create mode 100644 api/dist/modules/media/routes/video-schedule.routes.d.ts create mode 100644 api/dist/modules/media/routes/video-schedule.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/video-schedule.routes.js create mode 100644 api/dist/modules/media/routes/video-schedule.routes.js.map create mode 100644 api/dist/modules/media/routes/video-streaming.routes.d.ts create mode 100644 api/dist/modules/media/routes/video-streaming.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/video-streaming.routes.js create mode 100644 api/dist/modules/media/routes/video-streaming.routes.js.map create mode 100644 api/dist/modules/media/routes/video-tracking.routes.d.ts create mode 100644 api/dist/modules/media/routes/video-tracking.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/video-tracking.routes.js create mode 100644 api/dist/modules/media/routes/video-tracking.routes.js.map create mode 100644 api/dist/modules/media/routes/videos.routes.d.ts create mode 100644 api/dist/modules/media/routes/videos.routes.d.ts.map create mode 100644 api/dist/modules/media/routes/videos.routes.js create mode 100644 api/dist/modules/media/routes/videos.routes.js.map create mode 100644 api/dist/modules/media/schemas/public-media.schemas.d.ts create mode 100644 api/dist/modules/media/schemas/public-media.schemas.d.ts.map create mode 100644 api/dist/modules/media/schemas/public-media.schemas.js create mode 100644 api/dist/modules/media/schemas/public-media.schemas.js.map create mode 100644 api/dist/modules/media/services/ffprobe.service.d.ts create mode 100644 api/dist/modules/media/services/ffprobe.service.d.ts.map create mode 100644 api/dist/modules/media/services/ffprobe.service.js create mode 100644 api/dist/modules/media/services/ffprobe.service.js.map create mode 100644 api/dist/modules/media/services/session.service.d.ts create mode 100644 api/dist/modules/media/services/session.service.d.ts.map create mode 100644 api/dist/modules/media/services/session.service.js create mode 100644 api/dist/modules/media/services/session.service.js.map create mode 100644 api/dist/modules/media/services/thumbnail.service.d.ts create mode 100644 api/dist/modules/media/services/thumbnail.service.d.ts.map create mode 100644 api/dist/modules/media/services/thumbnail.service.js create mode 100644 api/dist/modules/media/services/thumbnail.service.js.map create mode 100644 api/dist/modules/media/services/video-analytics.service.d.ts create mode 100644 api/dist/modules/media/services/video-analytics.service.d.ts.map create mode 100644 api/dist/modules/media/services/video-analytics.service.js create mode 100644 api/dist/modules/media/services/video-analytics.service.js.map create mode 100644 api/dist/modules/media/types/enums.d.ts create mode 100644 api/dist/modules/media/types/enums.d.ts.map create mode 100644 api/dist/modules/media/types/enums.js create mode 100644 api/dist/modules/media/types/enums.js.map create mode 100644 api/dist/modules/observability/observability.routes.d.ts create mode 100644 api/dist/modules/observability/observability.routes.d.ts.map create mode 100644 api/dist/modules/observability/observability.routes.js create mode 100644 api/dist/modules/observability/observability.routes.js.map create mode 100644 api/dist/modules/pages/blocks.routes.d.ts create mode 100644 api/dist/modules/pages/blocks.routes.d.ts.map create mode 100644 api/dist/modules/pages/blocks.routes.js create mode 100644 api/dist/modules/pages/blocks.routes.js.map create mode 100644 api/dist/modules/pages/blocks.service.d.ts create mode 100644 api/dist/modules/pages/blocks.service.d.ts.map create mode 100644 api/dist/modules/pages/blocks.service.js create mode 100644 api/dist/modules/pages/blocks.service.js.map create mode 100644 api/dist/modules/pages/pages-admin.routes.d.ts create mode 100644 api/dist/modules/pages/pages-admin.routes.d.ts.map create mode 100644 api/dist/modules/pages/pages-admin.routes.js create mode 100644 api/dist/modules/pages/pages-admin.routes.js.map create mode 100644 api/dist/modules/pages/pages-public.routes.d.ts create mode 100644 api/dist/modules/pages/pages-public.routes.d.ts.map create mode 100644 api/dist/modules/pages/pages-public.routes.js create mode 100644 api/dist/modules/pages/pages-public.routes.js.map create mode 100644 api/dist/modules/pages/pages.schemas.d.ts create mode 100644 api/dist/modules/pages/pages.schemas.d.ts.map create mode 100644 api/dist/modules/pages/pages.schemas.js create mode 100644 api/dist/modules/pages/pages.schemas.js.map create mode 100644 api/dist/modules/pages/pages.service.d.ts create mode 100644 api/dist/modules/pages/pages.service.d.ts.map create mode 100644 api/dist/modules/pages/pages.service.js create mode 100644 api/dist/modules/pages/pages.service.js.map create mode 100644 api/dist/modules/pangolin/pangolin.routes.d.ts create mode 100644 api/dist/modules/pangolin/pangolin.routes.d.ts.map create mode 100644 api/dist/modules/pangolin/pangolin.routes.js create mode 100644 api/dist/modules/pangolin/pangolin.routes.js.map create mode 100644 api/dist/modules/qr/qr.routes.d.ts create mode 100644 api/dist/modules/qr/qr.routes.d.ts.map create mode 100644 api/dist/modules/qr/qr.routes.js create mode 100644 api/dist/modules/qr/qr.routes.js.map create mode 100644 api/dist/modules/services/services.routes.d.ts create mode 100644 api/dist/modules/services/services.routes.d.ts.map create mode 100644 api/dist/modules/services/services.routes.js create mode 100644 api/dist/modules/services/services.routes.js.map create mode 100644 api/dist/modules/settings/settings.routes.d.ts create mode 100644 api/dist/modules/settings/settings.routes.d.ts.map create mode 100644 api/dist/modules/settings/settings.routes.js create mode 100644 api/dist/modules/settings/settings.routes.js.map create mode 100644 api/dist/modules/settings/settings.schemas.d.ts create mode 100644 api/dist/modules/settings/settings.schemas.d.ts.map create mode 100644 api/dist/modules/settings/settings.schemas.js create mode 100644 api/dist/modules/settings/settings.schemas.js.map create mode 100644 api/dist/modules/settings/settings.service.d.ts create mode 100644 api/dist/modules/settings/settings.service.d.ts.map create mode 100644 api/dist/modules/settings/settings.service.js create mode 100644 api/dist/modules/settings/settings.service.js.map create mode 100644 api/dist/modules/users/users.routes.d.ts create mode 100644 api/dist/modules/users/users.routes.d.ts.map create mode 100644 api/dist/modules/users/users.routes.js create mode 100644 api/dist/modules/users/users.routes.js.map create mode 100644 api/dist/modules/users/users.schemas.d.ts create mode 100644 api/dist/modules/users/users.schemas.d.ts.map create mode 100644 api/dist/modules/users/users.schemas.js create mode 100644 api/dist/modules/users/users.schemas.js.map create mode 100644 api/dist/modules/users/users.service.d.ts create mode 100644 api/dist/modules/users/users.service.d.ts.map create mode 100644 api/dist/modules/users/users.service.js create mode 100644 api/dist/modules/users/users.service.js.map create mode 100644 api/dist/scripts/seed-email-templates.d.ts create mode 100644 api/dist/scripts/seed-email-templates.d.ts.map create mode 100644 api/dist/scripts/seed-email-templates.js create mode 100644 api/dist/scripts/seed-email-templates.js.map create mode 100644 api/dist/server.d.ts create mode 100644 api/dist/server.d.ts.map create mode 100644 api/dist/server.js create mode 100644 api/dist/server.js.map create mode 100644 api/dist/services/docker.service.d.ts create mode 100644 api/dist/services/docker.service.d.ts.map create mode 100644 api/dist/services/docker.service.js create mode 100644 api/dist/services/docker.service.js.map create mode 100644 api/dist/services/email-queue.service.d.ts create mode 100644 api/dist/services/email-queue.service.d.ts.map create mode 100644 api/dist/services/email-queue.service.js create mode 100644 api/dist/services/email-queue.service.js.map create mode 100644 api/dist/services/email.service.d.ts create mode 100644 api/dist/services/email.service.d.ts.map create mode 100644 api/dist/services/email.service.js create mode 100644 api/dist/services/email.service.js.map create mode 100644 api/dist/services/geocode-queue.service.d.ts create mode 100644 api/dist/services/geocode-queue.service.d.ts.map create mode 100644 api/dist/services/geocode-queue.service.js create mode 100644 api/dist/services/geocode-queue.service.js.map create mode 100644 api/dist/services/listmonk-proxy.service.d.ts create mode 100644 api/dist/services/listmonk-proxy.service.d.ts.map create mode 100644 api/dist/services/listmonk-proxy.service.js create mode 100644 api/dist/services/listmonk-proxy.service.js.map create mode 100644 api/dist/services/listmonk-sync.service.d.ts create mode 100644 api/dist/services/listmonk-sync.service.d.ts.map create mode 100644 api/dist/services/listmonk-sync.service.js create mode 100644 api/dist/services/listmonk-sync.service.js.map create mode 100644 api/dist/services/listmonk.client.d.ts create mode 100644 api/dist/services/listmonk.client.d.ts.map create mode 100644 api/dist/services/listmonk.client.js create mode 100644 api/dist/services/listmonk.client.js.map create mode 100644 api/dist/services/pangolin.client.d.ts create mode 100644 api/dist/services/pangolin.client.d.ts.map create mode 100644 api/dist/services/pangolin.client.js create mode 100644 api/dist/services/pangolin.client.js.map create mode 100644 api/dist/services/video-schedule-queue.service.d.ts create mode 100644 api/dist/services/video-schedule-queue.service.d.ts.map create mode 100644 api/dist/services/video-schedule-queue.service.js create mode 100644 api/dist/services/video-schedule-queue.service.js.map create mode 100644 api/dist/utils/crypto.d.ts create mode 100644 api/dist/utils/crypto.d.ts.map create mode 100644 api/dist/utils/crypto.js create mode 100644 api/dist/utils/crypto.js.map create mode 100644 api/dist/utils/fetch-with-timeout.d.ts create mode 100644 api/dist/utils/fetch-with-timeout.d.ts.map create mode 100644 api/dist/utils/fetch-with-timeout.js create mode 100644 api/dist/utils/fetch-with-timeout.js.map create mode 100644 api/dist/utils/health-check.d.ts create mode 100644 api/dist/utils/health-check.d.ts.map create mode 100644 api/dist/utils/health-check.js create mode 100644 api/dist/utils/health-check.js.map create mode 100644 api/dist/utils/logger.d.ts create mode 100644 api/dist/utils/logger.d.ts.map create mode 100644 api/dist/utils/logger.js create mode 100644 api/dist/utils/logger.js.map create mode 100644 api/dist/utils/metrics.d.ts create mode 100644 api/dist/utils/metrics.d.ts.map create mode 100644 api/dist/utils/metrics.js create mode 100644 api/dist/utils/metrics.js.map create mode 100644 api/dist/utils/path-validator.d.ts create mode 100644 api/dist/utils/path-validator.d.ts.map create mode 100644 api/dist/utils/path-validator.js create mode 100644 api/dist/utils/path-validator.js.map create mode 100644 api/dist/utils/promql-validator.d.ts create mode 100644 api/dist/utils/promql-validator.d.ts.map create mode 100644 api/dist/utils/promql-validator.js create mode 100644 api/dist/utils/promql-validator.js.map create mode 100644 api/dist/utils/spatial.d.ts create mode 100644 api/dist/utils/spatial.d.ts.map create mode 100644 api/dist/utils/spatial.js create mode 100644 api/dist/utils/spatial.js.map create mode 100644 api/drizzle.config.ts create mode 100644 api/drizzle/0000_classy_hedge_knight.sql create mode 100644 api/drizzle/meta/0000_snapshot.json create mode 100644 api/drizzle/meta/_journal.json create mode 100644 api/prisma/migrations/20260211120916_add_google_geocode_provider/migration.sql create mode 100644 api/scripts/reexport-pages.ts create mode 100644 api/src/media-server.ts create mode 100644 api/src/modules/email-templates/email-templates-admin.routes.ts create mode 100644 api/src/modules/email-templates/email-templates.schemas.ts create mode 100644 api/src/modules/email-templates/email-templates.service.ts create mode 100644 api/src/modules/map/locations/bulk-geocode.routes.ts create mode 100644 api/src/modules/map/locations/bulk-geocode.schemas.ts create mode 100644 api/src/modules/map/shifts/shift-series.routes.ts create mode 100644 api/src/modules/map/shifts/shift-series.schemas.ts create mode 100644 api/src/modules/map/shifts/shift-series.service.ts create mode 100644 api/src/modules/media/README.md create mode 100644 api/src/modules/media/db/index.ts create mode 100644 api/src/modules/media/db/schema.ts create mode 100644 api/src/modules/media/middleware/auth.ts create mode 100644 api/src/modules/media/routes/chat-stream.routes.ts create mode 100644 api/src/modules/media/routes/comments.routes.ts create mode 100644 api/src/modules/media/routes/public.routes.ts create mode 100644 api/src/modules/media/routes/reactions.routes.ts create mode 100644 api/src/modules/media/routes/upload.routes.ts create mode 100644 api/src/modules/media/routes/video-actions.routes.ts create mode 100644 api/src/modules/media/routes/video-schedule.routes.ts create mode 100644 api/src/modules/media/routes/video-streaming.routes.ts create mode 100644 api/src/modules/media/routes/video-tracking.routes.ts create mode 100644 api/src/modules/media/routes/videos.routes.ts create mode 100644 api/src/modules/media/services/ffprobe.service.ts create mode 100644 api/src/modules/media/services/session.service.ts create mode 100644 api/src/modules/media/services/thumbnail.service.ts create mode 100644 api/src/modules/media/services/video-analytics.service.ts create mode 100644 api/src/modules/media/types/enums.ts create mode 100644 api/src/modules/observability/observability.routes.ts create mode 100755 api/src/scripts/seed-email-templates.ts create mode 100644 api/src/services/docker.service.ts create mode 100644 api/src/services/geocode-queue.service.ts create mode 100644 api/src/services/video-schedule-queue.service.ts create mode 100644 api/src/utils/fetch-with-timeout.ts create mode 100644 api/src/utils/health-check.ts create mode 100644 api/src/utils/path-validator.ts create mode 100644 api/src/utils/promql-validator.ts create mode 100755 api/test-media-api.sh create mode 100644 api/test-pangolin-endpoints.ts create mode 100644 api/test-pangolin-resources.ts create mode 100644 api/test-prisma.js create mode 100644 api/test.js create mode 100644 configs/pangolin/resources.yml create mode 100644 docs/MEDIA_ADMIN_FEATURES.md create mode 100644 docs/NGINX_DOMAIN_TEMPLATING.md create mode 100644 docs/VIDEO_ANALYTICS_GUIDE.md create mode 100644 media-manager/.dockerignore create mode 100644 media-manager/.gitignore create mode 100644 media-manager/.npmrc create mode 100755 media-manager/build.sh create mode 100644 media-manager/clip-embeddings/Dockerfile create mode 100644 media-manager/clip-embeddings/app.py create mode 100644 media-manager/clip-embeddings/requirements.txt create mode 100644 media-manager/docker-compose.yml create mode 100644 media-manager/docs/.gitignore create mode 100644 media-manager/face-recognition/Dockerfile create mode 100644 media-manager/face-recognition/app.py create mode 100644 media-manager/face-recognition/requirements.txt create mode 100644 media-manager/joytag/Dockerfile create mode 100644 media-manager/joytag/app.py create mode 100644 media-manager/joytag/requirements.txt create mode 100644 media-manager/llama-server/Dockerfile create mode 100644 media-manager/nginx/nginx.conf create mode 100644 media-manager/ollama/Dockerfile create mode 100644 media-manager/ollama/entrypoint.sh create mode 100644 media-manager/package.json create mode 100644 media-manager/packages/admin/Dockerfile create mode 100644 media-manager/packages/admin/index.html create mode 100644 media-manager/packages/admin/nginx.conf create mode 100644 media-manager/packages/admin/package.json create mode 100644 media-manager/packages/admin/postcss.config.js create mode 100644 media-manager/packages/admin/public/favicon.png create mode 100644 media-manager/packages/admin/src/App.tsx create mode 100644 media-manager/packages/admin/src/components/ActivityFeed.tsx create mode 100644 media-manager/packages/admin/src/components/AdFormModal.tsx create mode 100644 media-manager/packages/admin/src/components/ClipTimeline.tsx create mode 100644 media-manager/packages/admin/src/components/CompilationTagFilter.tsx create mode 100644 media-manager/packages/admin/src/components/DeleteConfirmModal.tsx create mode 100644 media-manager/packages/admin/src/components/DigestWarningModal.tsx create mode 100644 media-manager/packages/admin/src/components/FrameCard.tsx create mode 100644 media-manager/packages/admin/src/components/InboxVideoSelector.tsx create mode 100644 media-manager/packages/admin/src/components/LibraryVideoSelector.tsx create mode 100644 media-manager/packages/admin/src/components/ManualClipSelector.tsx create mode 100644 media-manager/packages/admin/src/components/MobileBottomNav.tsx create mode 100644 media-manager/packages/admin/src/components/MobileSidebarDrawer.tsx create mode 100644 media-manager/packages/admin/src/components/MobileTopBar.tsx create mode 100644 media-manager/packages/admin/src/components/MoveToLocalModal.tsx create mode 100644 media-manager/packages/admin/src/components/OllamaModels.tsx create mode 100644 media-manager/packages/admin/src/components/OperationProgressModal.tsx create mode 100644 media-manager/packages/admin/src/components/OrganizePublishModal.tsx create mode 100644 media-manager/packages/admin/src/components/PerformerDiscrepancies.css create mode 100644 media-manager/packages/admin/src/components/PerformerDiscrepancies.tsx create mode 100644 media-manager/packages/admin/src/components/RunningJobs.tsx create mode 100644 media-manager/packages/admin/src/components/ScriptModal.tsx create mode 100644 media-manager/packages/admin/src/components/Sidebar.tsx create mode 100644 media-manager/packages/admin/src/components/SortableMediaCard.tsx create mode 100644 media-manager/packages/admin/src/components/VideoPlayerModal.tsx create mode 100644 media-manager/packages/admin/src/components/WorldHeatMap.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractClipCard.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractClipTrimmer.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractDragOverlay.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractFrameTooltip.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractOptionsPanel.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractSegmentFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractSequenceFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractSourceFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractTagFilterBar.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractTimeline.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractTranscriptPanel.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/AbstractView.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/ClipTagEditor.tsx create mode 100644 media-manager/packages/admin/src/components/abstract/hooks/useAbstractDragDrop.ts create mode 100644 media-manager/packages/admin/src/components/abstract/hooks/useAbstractFilters.ts create mode 100644 media-manager/packages/admin/src/components/abstract/hooks/useCenterIndicator.ts create mode 100644 media-manager/packages/admin/src/components/abstract/hooks/useDragScroll.ts create mode 100644 media-manager/packages/admin/src/components/abstract/index.ts create mode 100644 media-manager/packages/admin/src/components/digest/AnalysisLogPanel.tsx create mode 100644 media-manager/packages/admin/src/components/digest/ClipPanel.tsx create mode 100644 media-manager/packages/admin/src/components/digest/ClipsFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/digest/ComprehensiveLogModal.tsx create mode 100644 media-manager/packages/admin/src/components/digest/ContainerStatusBar.tsx create mode 100644 media-manager/packages/admin/src/components/digest/DigestDetailView.tsx create mode 100644 media-manager/packages/admin/src/components/digest/FaceThumbnailRow.tsx create mode 100644 media-manager/packages/admin/src/components/digest/FilmstripViewer.tsx create mode 100644 media-manager/packages/admin/src/components/digest/FrameDetailPanel.tsx create mode 100644 media-manager/packages/admin/src/components/digest/GenerateClipsModal.tsx create mode 100644 media-manager/packages/admin/src/components/digest/InlineTagEditor.tsx create mode 100644 media-manager/packages/admin/src/components/digest/PipelineStepCard.tsx create mode 100644 media-manager/packages/admin/src/components/digest/SceneFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/digest/TagApprovalPanel.tsx create mode 100644 media-manager/packages/admin/src/components/digest/TranscriptPanel.tsx create mode 100644 media-manager/packages/admin/src/components/digest/VocalFilmstrip.tsx create mode 100644 media-manager/packages/admin/src/components/digest/index.ts create mode 100644 media-manager/packages/admin/src/components/faces/FaceDetailPanel.tsx create mode 100644 media-manager/packages/admin/src/components/faces/FaceThumbnail.tsx create mode 100644 media-manager/packages/admin/src/components/faces/FacesView.tsx create mode 100644 media-manager/packages/admin/src/components/faces/GroupFaceThumbnail.tsx create mode 100644 media-manager/packages/admin/src/components/faces/GroupNamingWorkflow.tsx create mode 100644 media-manager/packages/admin/src/components/faces/MergeFacesModal.tsx create mode 100644 media-manager/packages/admin/src/components/faces/PerformerSection.tsx create mode 100644 media-manager/packages/admin/src/components/faces/index.ts create mode 100644 media-manager/packages/admin/src/components/shared/AdminMediaCard.tsx create mode 100644 media-manager/packages/admin/src/components/shared/AdminPageHeader.tsx create mode 100644 media-manager/packages/admin/src/components/shared/BottomSheet.tsx create mode 100644 media-manager/packages/admin/src/components/shared/FileTree.tsx create mode 100644 media-manager/packages/admin/src/components/shared/FileTreePanel.tsx create mode 100644 media-manager/packages/admin/src/components/shared/FilterBar.tsx create mode 100644 media-manager/packages/admin/src/components/shared/FrameStrip.tsx create mode 100644 media-manager/packages/admin/src/components/shared/LoadingSpinner.tsx create mode 100644 media-manager/packages/admin/src/components/shared/SelectionActionBar.tsx create mode 100644 media-manager/packages/admin/src/components/shared/TagApprovalCard.tsx create mode 100644 media-manager/packages/admin/src/components/shared/index.ts create mode 100644 media-manager/packages/admin/src/components/tags/GenerateTagsTab.tsx create mode 100644 media-manager/packages/admin/src/components/tags/ManualTagsTab.tsx create mode 100644 media-manager/packages/admin/src/components/trustsafety/CommentsTab.tsx create mode 100644 media-manager/packages/admin/src/components/trustsafety/GeoBlockingTab.tsx create mode 100644 media-manager/packages/admin/src/components/trustsafety/ReportsTab.tsx create mode 100644 media-manager/packages/admin/src/components/trustsafety/SessionsTab.tsx create mode 100644 media-manager/packages/admin/src/components/trustsafety/index.ts create mode 100644 media-manager/packages/admin/src/config/scriptConfigs.ts create mode 100644 media-manager/packages/admin/src/constants/navigation.ts create mode 100644 media-manager/packages/admin/src/contexts/AuthContext.tsx create mode 100644 media-manager/packages/admin/src/contexts/DigestContext.tsx create mode 100644 media-manager/packages/admin/src/contexts/MobileNavContext.tsx create mode 100644 media-manager/packages/admin/src/contexts/OrganizePublishContext.tsx create mode 100644 media-manager/packages/admin/src/contexts/SFWContext.tsx create mode 100644 media-manager/packages/admin/src/contexts/ToastContext.tsx create mode 100644 media-manager/packages/admin/src/hooks/index.ts create mode 100644 media-manager/packages/admin/src/hooks/useActivityFeed.ts create mode 100644 media-manager/packages/admin/src/hooks/useAutoScanSettings.ts create mode 100644 media-manager/packages/admin/src/hooks/useClickOutside.ts create mode 100644 media-manager/packages/admin/src/hooks/useDigestSSE.ts create mode 100644 media-manager/packages/admin/src/hooks/useFileTree.ts create mode 100644 media-manager/packages/admin/src/hooks/useFrameSlots.ts create mode 100644 media-manager/packages/admin/src/hooks/useIntersectionObserver.ts create mode 100644 media-manager/packages/admin/src/hooks/useIsMobile.ts create mode 100644 media-manager/packages/admin/src/hooks/useLocalStorageState.ts create mode 100644 media-manager/packages/admin/src/hooks/useSetting.ts create mode 100644 media-manager/packages/admin/src/hooks/useTabStatePersistence.ts create mode 100644 media-manager/packages/admin/src/index.css create mode 100644 media-manager/packages/admin/src/main.tsx create mode 100644 media-manager/packages/admin/src/pages/Ads.tsx create mode 100644 media-manager/packages/admin/src/pages/Dashboard.tsx create mode 100644 media-manager/packages/admin/src/pages/FeaturedPlaylists.tsx create mode 100644 media-manager/packages/admin/src/pages/Fetch.tsx create mode 100644 media-manager/packages/admin/src/pages/Fractal.tsx create mode 100644 media-manager/packages/admin/src/pages/Inbox.tsx create mode 100644 media-manager/packages/admin/src/pages/Jobs.tsx create mode 100644 media-manager/packages/admin/src/pages/Library.tsx create mode 100644 media-manager/packages/admin/src/pages/Login.tsx create mode 100644 media-manager/packages/admin/src/pages/Payments.tsx create mode 100644 media-manager/packages/admin/src/pages/PublicMedia.tsx create mode 100644 media-manager/packages/admin/src/pages/Tags.tsx create mode 100644 media-manager/packages/admin/src/pages/TrustAndSafety.tsx create mode 100644 media-manager/packages/admin/src/pages/Users.tsx create mode 100644 media-manager/packages/admin/src/types/react-simple-maps.d.ts create mode 100644 media-manager/packages/admin/src/utils/api.ts create mode 100644 media-manager/packages/admin/src/utils/digestStorage.ts create mode 100644 media-manager/packages/admin/src/utils/frameStripCalculator.ts create mode 100644 media-manager/packages/admin/src/utils/mergeContiguousItems.ts create mode 100644 media-manager/packages/admin/src/vite-env.d.ts create mode 100644 media-manager/packages/admin/tailwind.config.js create mode 100644 media-manager/packages/admin/tsconfig.json create mode 100644 media-manager/packages/admin/tsconfig.node.json create mode 100644 media-manager/packages/admin/vite.config.ts create mode 100644 media-manager/packages/api/Dockerfile create mode 100644 media-manager/packages/api/drizzle.config.ts create mode 100644 media-manager/packages/api/package.json create mode 100644 media-manager/packages/api/scripts/import.ts create mode 100644 media-manager/packages/api/scripts/migrate-job-types.ts create mode 100644 media-manager/packages/api/src/config/achievements.ts create mode 100644 media-manager/packages/api/src/db/index.ts create mode 100644 media-manager/packages/api/src/db/schema.ts create mode 100644 media-manager/packages/api/src/db/seed.ts create mode 100644 media-manager/packages/api/src/index.ts create mode 100644 media-manager/packages/api/src/middleware/auth.ts create mode 100644 media-manager/packages/api/src/routes/admin.ts create mode 100644 media-manager/packages/api/src/routes/ads.ts create mode 100644 media-manager/packages/api/src/routes/auth.ts create mode 100644 media-manager/packages/api/src/routes/compilations.ts create mode 100644 media-manager/packages/api/src/routes/dashboard.ts create mode 100644 media-manager/packages/api/src/routes/digests.ts create mode 100644 media-manager/packages/api/src/routes/faces.ts create mode 100644 media-manager/packages/api/src/routes/friends.ts create mode 100644 media-manager/packages/api/src/routes/jobs.ts create mode 100644 media-manager/packages/api/src/routes/notifications.ts create mode 100644 media-manager/packages/api/src/routes/ollama.ts create mode 100644 media-manager/packages/api/src/routes/payments.ts create mode 100644 media-manager/packages/api/src/routes/pipelines.ts create mode 100644 media-manager/packages/api/src/routes/playlists.ts create mode 100644 media-manager/packages/api/src/routes/porndb.ts create mode 100644 media-manager/packages/api/src/routes/public.ts create mode 100644 media-manager/packages/api/src/routes/quickies.ts create mode 100644 media-manager/packages/api/src/routes/reactions.ts create mode 100644 media-manager/packages/api/src/routes/scripts.ts create mode 100644 media-manager/packages/api/src/routes/tagGeneration.ts create mode 100644 media-manager/packages/api/src/routes/tags.ts create mode 100644 media-manager/packages/api/src/routes/uploadPortal.ts create mode 100644 media-manager/packages/api/src/routes/uploads.ts create mode 100644 media-manager/packages/api/src/routes/videos.ts create mode 100644 media-manager/packages/api/src/routes/watchParty.ts create mode 100644 media-manager/packages/api/src/services/achievements.ts create mode 100644 media-manager/packages/api/src/services/auth.ts create mode 100644 media-manager/packages/api/src/services/autoScanScheduler.ts create mode 100644 media-manager/packages/api/src/services/autoSequenceBuilder.ts create mode 100644 media-manager/packages/api/src/services/cache.ts create mode 100644 media-manager/packages/api/src/services/clipEmbeddings.ts create mode 100644 media-manager/packages/api/src/services/clipGenerator.ts create mode 100644 media-manager/packages/api/src/services/clipSelector.ts create mode 100644 media-manager/packages/api/src/services/clipTagMapper.ts create mode 100644 media-manager/packages/api/src/services/combinedSceneDetection.ts create mode 100644 media-manager/packages/api/src/services/compilation.ts create mode 100644 media-manager/packages/api/src/services/concurrencyPool.ts create mode 100644 media-manager/packages/api/src/services/containerManager.ts create mode 100644 media-manager/packages/api/src/services/contentSafety.ts create mode 100644 media-manager/packages/api/src/services/digest/defaultPrompts.ts create mode 100644 media-manager/packages/api/src/services/digest/frameExtractor.ts create mode 100644 media-manager/packages/api/src/services/digest/index.ts create mode 100644 media-manager/packages/api/src/services/digest/joytagBackend.ts create mode 100644 media-manager/packages/api/src/services/digest/joytagMappings.ts create mode 100644 media-manager/packages/api/src/services/digest/logGenerator.ts create mode 100644 media-manager/packages/api/src/services/digest/segmentPipeline.ts create mode 100644 media-manager/packages/api/src/services/digest/transcriber.ts create mode 100644 media-manager/packages/api/src/services/digest/types.ts create mode 100644 media-manager/packages/api/src/services/digest/visionBackend.ts create mode 100644 media-manager/packages/api/src/services/email.ts create mode 100644 media-manager/packages/api/src/services/faceCropper.ts create mode 100644 media-manager/packages/api/src/services/faceSimilarity.ts create mode 100644 media-manager/packages/api/src/services/ffprobe.ts create mode 100644 media-manager/packages/api/src/services/fileWatcher.ts create mode 100644 media-manager/packages/api/src/services/geoBlocking.ts create mode 100644 media-manager/packages/api/src/services/geoip.ts create mode 100644 media-manager/packages/api/src/services/gpuMonitor.ts create mode 100644 media-manager/packages/api/src/services/imapPoller.ts create mode 100644 media-manager/packages/api/src/services/invoiceGenerator.ts create mode 100644 media-manager/packages/api/src/services/jobQueueManager.ts create mode 100644 media-manager/packages/api/src/services/joytagSeeder.ts create mode 100644 media-manager/packages/api/src/services/modelSettings.ts create mode 100644 media-manager/packages/api/src/services/moderationSettings.ts create mode 100644 media-manager/packages/api/src/services/nameStandardizer.ts create mode 100644 media-manager/packages/api/src/services/notification.ts create mode 100644 media-manager/packages/api/src/services/ocrExtractor.ts create mode 100644 media-manager/packages/api/src/services/organizePublisher.ts create mode 100644 media-manager/packages/api/src/services/paymentParser.ts create mode 100644 media-manager/packages/api/src/services/performerCentroidManager.ts create mode 100644 media-manager/packages/api/src/services/performerNameLinker.ts create mode 100644 media-manager/packages/api/src/services/pipelineManager.ts create mode 100644 media-manager/packages/api/src/services/pipelineTemplates.ts create mode 100644 media-manager/packages/api/src/services/porndbService.ts create mode 100644 media-manager/packages/api/src/services/privacy.ts create mode 100644 media-manager/packages/api/src/services/progressInterface.ts create mode 100644 media-manager/packages/api/src/services/promptBuilder.ts create mode 100644 media-manager/packages/api/src/services/quickieGenerator.ts create mode 100644 media-manager/packages/api/src/services/scanner.ts create mode 100644 media-manager/packages/api/src/services/sceneDetection.ts create mode 100644 media-manager/packages/api/src/services/sceneExtractor.ts create mode 100644 media-manager/packages/api/src/services/sceneReleaseParser.ts create mode 100644 media-manager/packages/api/src/services/segmentAnalyzer.ts create mode 100644 media-manager/packages/api/src/services/segmentGenerator.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/frameExtraction.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/index.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/sceneDetection.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/synthesis.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/tagGeneration.ts create mode 100644 media-manager/packages/api/src/services/stepExecutors/transcription.ts create mode 100644 media-manager/packages/api/src/services/subscriptionManager.ts create mode 100644 media-manager/packages/api/src/services/subtitleGenerator.ts create mode 100644 media-manager/packages/api/src/services/tagGenerator.ts create mode 100644 media-manager/packages/api/src/services/tagMapper.ts create mode 100644 media-manager/packages/api/src/services/tokens.ts create mode 100644 media-manager/packages/api/src/services/transnetService.ts create mode 100644 media-manager/packages/api/src/services/userMatcher.ts create mode 100644 media-manager/packages/api/src/services/videoChunker.ts create mode 100644 media-manager/packages/api/src/types/geolite2-redist.d.ts create mode 100644 media-manager/packages/api/src/types/signaling.ts create mode 100644 media-manager/packages/api/tsconfig.json create mode 100644 media-manager/packages/public/Dockerfile create mode 100644 media-manager/packages/public/index.html create mode 100644 media-manager/packages/public/nginx.conf create mode 100644 media-manager/packages/public/package.json create mode 100644 media-manager/packages/public/postcss.config.js create mode 100644 media-manager/packages/public/public/assets/logo.png create mode 100644 media-manager/packages/public/public/favicon.png create mode 100644 media-manager/packages/public/src/App.tsx create mode 100644 media-manager/packages/public/src/components/ActivityFeed.tsx create mode 100644 media-manager/packages/public/src/components/AdCard.tsx create mode 100644 media-manager/packages/public/src/components/AddToPlaylistModal.tsx create mode 100644 media-manager/packages/public/src/components/AgeVerificationModal.tsx create mode 100644 media-manager/packages/public/src/components/AllTagsModal.tsx create mode 100644 media-manager/packages/public/src/components/BottomNav.tsx create mode 100644 media-manager/packages/public/src/components/CastButton.tsx create mode 100644 media-manager/packages/public/src/components/CommentSection.tsx create mode 100644 media-manager/packages/public/src/components/ContinueWatchingSection.tsx create mode 100644 media-manager/packages/public/src/components/CreatePlaylistModal.tsx create mode 100644 media-manager/packages/public/src/components/CreateWatchPartyModal.tsx create mode 100644 media-manager/packages/public/src/components/EditPlaylistVideosModal.tsx create mode 100644 media-manager/packages/public/src/components/ExpandedVideoCard.tsx create mode 100644 media-manager/packages/public/src/components/ExpandedVideoView.tsx create mode 100644 media-manager/packages/public/src/components/FloatingReactions.tsx create mode 100644 media-manager/packages/public/src/components/KeyboardHelpOverlay.tsx create mode 100644 media-manager/packages/public/src/components/LandscapeDrawer.tsx create mode 100644 media-manager/packages/public/src/components/Layout.tsx create mode 100644 media-manager/packages/public/src/components/LiveChat.tsx create mode 100644 media-manager/packages/public/src/components/LoadingFallback.tsx create mode 100644 media-manager/packages/public/src/components/LoginModal.tsx create mode 100644 media-manager/packages/public/src/components/MediaGrid.tsx create mode 100644 media-manager/packages/public/src/components/NotificationBell.tsx create mode 100644 media-manager/packages/public/src/components/NotificationDropdown.tsx create mode 100644 media-manager/packages/public/src/components/NotificationItem.tsx create mode 100644 media-manager/packages/public/src/components/OnlineFriendsWidget.tsx create mode 100644 media-manager/packages/public/src/components/PlaylistCard.tsx create mode 100644 media-manager/packages/public/src/components/PlaylistChat.tsx create mode 100644 media-manager/packages/public/src/components/PlaylistModal.tsx create mode 100644 media-manager/packages/public/src/components/PlaylistPanel.tsx create mode 100644 media-manager/packages/public/src/components/PlaylistSidebar.tsx create mode 100644 media-manager/packages/public/src/components/PlyrVideoPlayer.tsx create mode 100644 media-manager/packages/public/src/components/ProgressBarMarkers.tsx create mode 100644 media-manager/packages/public/src/components/QuickieAdItem.tsx create mode 100644 media-manager/packages/public/src/components/QuickieReactionFAB.tsx create mode 100644 media-manager/packages/public/src/components/QuickiesFeed.tsx create mode 100644 media-manager/packages/public/src/components/ReactionAnimation.tsx create mode 100644 media-manager/packages/public/src/components/ReactionButtons.tsx create mode 100644 media-manager/packages/public/src/components/RegisterModal.tsx create mode 100644 media-manager/packages/public/src/components/RelatedVideosList.tsx create mode 100644 media-manager/packages/public/src/components/ReportModal.tsx create mode 100644 media-manager/packages/public/src/components/ShareModal.tsx create mode 100644 media-manager/packages/public/src/components/Sidebar.tsx create mode 100644 media-manager/packages/public/src/components/SocialLinksModal.tsx create mode 100644 media-manager/packages/public/src/components/SocialShareModal.tsx create mode 100644 media-manager/packages/public/src/components/TagFilterBar.tsx create mode 100644 media-manager/packages/public/src/components/UploadModal.tsx create mode 100644 media-manager/packages/public/src/components/UpvoteButton.tsx create mode 100644 media-manager/packages/public/src/components/VideoCard.tsx create mode 100644 media-manager/packages/public/src/components/VideoPlayer.tsx create mode 100644 media-manager/packages/public/src/components/VirtualizedMediaGrid.tsx create mode 100644 media-manager/packages/public/src/components/WatchCurationCard.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartyChat.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartyInviteFriendsModal.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartyInviteNotification.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartyParticipants.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartyReactionButtons.tsx create mode 100644 media-manager/packages/public/src/components/WatchPartySummary.tsx create mode 100644 media-manager/packages/public/src/components/WatchWithFriendsButton.tsx create mode 100644 media-manager/packages/public/src/components/chatbar/ChatBar.tsx create mode 100644 media-manager/packages/public/src/components/chatbar/MiniChatWindow.tsx create mode 100644 media-manager/packages/public/src/components/chatbar/MiniLiveChat.tsx create mode 100644 media-manager/packages/public/src/components/chatbar/MinimizedChat.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/AchievementCard.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/AchievementToast.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/ChatNotificationToast.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/ChatsPanel.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/FinishButton.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/ReactionDetailModal.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/ReactionsPanel.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/SocialLinksSection.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/StatsCard.tsx create mode 100644 media-manager/packages/public/src/components/dashboard/StreakDisplay.tsx create mode 100644 media-manager/packages/public/src/components/settings/AccountSettings.tsx create mode 100644 media-manager/packages/public/src/components/settings/NotificationSettings.tsx create mode 100644 media-manager/packages/public/src/components/settings/PlaybackSettings.tsx create mode 100644 media-manager/packages/public/src/components/settings/PrivacySettings.tsx create mode 100644 media-manager/packages/public/src/components/settings/TagSettings.tsx create mode 100644 media-manager/packages/public/src/config/api.ts create mode 100644 media-manager/packages/public/src/constants/makeAccountAds.ts create mode 100644 media-manager/packages/public/src/constants/reactions.ts create mode 100644 media-manager/packages/public/src/contexts/AgeVerificationContext.tsx create mode 100644 media-manager/packages/public/src/contexts/AuthContext.tsx create mode 100644 media-manager/packages/public/src/contexts/ChatBarContext.tsx create mode 100644 media-manager/packages/public/src/contexts/ExpandedVideoContext.tsx create mode 100644 media-manager/packages/public/src/contexts/KeyboardNavigationContext.tsx create mode 100644 media-manager/packages/public/src/contexts/ReactionsContext.tsx create mode 100644 media-manager/packages/public/src/contexts/SFWContext.tsx create mode 100644 media-manager/packages/public/src/contexts/SidebarContext.tsx create mode 100644 media-manager/packages/public/src/contexts/VideoPlaybackContext.tsx create mode 100644 media-manager/packages/public/src/contexts/WatchPartyInviteContext.tsx create mode 100644 media-manager/packages/public/src/hooks/useActivityFeed.ts create mode 100644 media-manager/packages/public/src/hooks/useApi.ts create mode 100644 media-manager/packages/public/src/hooks/useAutoPiP.ts create mode 100644 media-manager/packages/public/src/hooks/useCast.ts create mode 100644 media-manager/packages/public/src/hooks/useChatNotifications.ts create mode 100644 media-manager/packages/public/src/hooks/useChats.ts create mode 100644 media-manager/packages/public/src/hooks/useContinueWatching.ts create mode 100644 media-manager/packages/public/src/hooks/useDashboard.ts create mode 100644 media-manager/packages/public/src/hooks/useDeviceId.ts create mode 100644 media-manager/packages/public/src/hooks/useFinish.ts create mode 100644 media-manager/packages/public/src/hooks/useFriendActivity.ts create mode 100644 media-manager/packages/public/src/hooks/useFriends.ts create mode 100644 media-manager/packages/public/src/hooks/useGallery.ts create mode 100644 media-manager/packages/public/src/hooks/useHeartbeat.ts create mode 100644 media-manager/packages/public/src/hooks/useKeyboardShortcuts.ts create mode 100644 media-manager/packages/public/src/hooks/useLandscapeMode.ts create mode 100644 media-manager/packages/public/src/hooks/useMyReactions.ts create mode 100644 media-manager/packages/public/src/hooks/useNotificationSSE.ts create mode 100644 media-manager/packages/public/src/hooks/useNotifications.ts create mode 100644 media-manager/packages/public/src/hooks/usePokes.ts create mode 100644 media-manager/packages/public/src/hooks/usePrivacySettings.ts create mode 100644 media-manager/packages/public/src/hooks/useQuickWatchParty.ts create mode 100644 media-manager/packages/public/src/hooks/useQuickieGeneration.ts create mode 100644 media-manager/packages/public/src/hooks/useReactionCooldown.ts create mode 100644 media-manager/packages/public/src/hooks/useReactions.ts create mode 100644 media-manager/packages/public/src/hooks/useSocialLinks.ts create mode 100644 media-manager/packages/public/src/hooks/useVerticalVideoLayout.ts create mode 100644 media-manager/packages/public/src/hooks/useVideoRecommendations.ts create mode 100644 media-manager/packages/public/src/hooks/useVideoStatePreservation.ts create mode 100644 media-manager/packages/public/src/hooks/useWatchParty.ts create mode 100644 media-manager/packages/public/src/hooks/useWatchPartyInvites.ts create mode 100644 media-manager/packages/public/src/hooks/useWatchTime.ts create mode 100644 media-manager/packages/public/src/hooks/useWebRTCHost.ts create mode 100644 media-manager/packages/public/src/hooks/useWebRTCParticipant.ts create mode 100644 media-manager/packages/public/src/index.css create mode 100644 media-manager/packages/public/src/main.tsx create mode 100644 media-manager/packages/public/src/pages/Compilations.tsx create mode 100644 media-manager/packages/public/src/pages/Curated.tsx create mode 100644 media-manager/packages/public/src/pages/Dashboard.tsx create mode 100644 media-manager/packages/public/src/pages/FriendDashboard.tsx create mode 100644 media-manager/packages/public/src/pages/Friends.tsx create mode 100644 media-manager/packages/public/src/pages/Home.tsx create mode 100644 media-manager/packages/public/src/pages/MyPlaylists.tsx create mode 100644 media-manager/packages/public/src/pages/MyUploads.tsx create mode 100644 media-manager/packages/public/src/pages/Playback.tsx create mode 100644 media-manager/packages/public/src/pages/Quickies.tsx create mode 100644 media-manager/packages/public/src/pages/Settings.tsx create mode 100644 media-manager/packages/public/src/pages/VerifyEmail.tsx create mode 100644 media-manager/packages/public/src/pages/Videos.tsx create mode 100644 media-manager/packages/public/src/pages/WatchPartyHistory.tsx create mode 100644 media-manager/packages/public/src/pages/WatchPartyJoin.tsx create mode 100644 media-manager/packages/public/src/pages/WatchPartyLobby.tsx create mode 100644 media-manager/packages/public/src/pages/WatchPartyRoom.tsx create mode 100644 media-manager/packages/public/src/types/cast.d.ts create mode 100644 media-manager/packages/public/src/types/index.ts create mode 100644 media-manager/packages/public/src/utils/dateFormat.ts create mode 100644 media-manager/packages/public/src/utils/socialPlatforms.ts create mode 100644 media-manager/packages/public/src/utils/videoUrl.ts create mode 100644 media-manager/packages/public/src/vite-env.d.ts create mode 100644 media-manager/packages/public/tailwind.config.js create mode 100644 media-manager/packages/public/tsconfig.json create mode 100644 media-manager/packages/public/tsconfig.node.json create mode 100644 media-manager/packages/public/vite.config.ts create mode 100644 media-manager/packages/shared/package.json create mode 100644 media-manager/packages/shared/src/index.ts create mode 100644 media-manager/packages/shared/src/prompts.ts create mode 100644 media-manager/pnpm-workspace.yaml create mode 100644 media-manager/scene-detection/Dockerfile create mode 100644 media-manager/scene-detection/app.py create mode 100644 media-manager/scene-detection/requirements.txt create mode 100755 media-manager/scripts/create_gif_compilations.sh create mode 100755 media-manager/scripts/create_mega_compilation.sh create mode 100755 media-manager/scripts/create_quad_compilation.sh create mode 100755 media-manager/scripts/create_quad_horizontal_compilation.sh create mode 100755 media-manager/scripts/create_random_compilation.sh create mode 100755 media-manager/scripts/create_triple_vertical_compilation.sh create mode 100755 media-manager/scripts/fetch_content.sh create mode 100755 media-manager/scripts/generate_gifs_from_video.sh create mode 100755 media-manager/scripts/organize_by_studio.sh create mode 100755 media-manager/scripts/reencode_for_streaming.sh create mode 100755 media-manager/scripts/reset_all.sh create mode 100755 media-manager/startup.sh create mode 100644 media-manager/transnetv2/Dockerfile create mode 100644 media-manager/transnetv2/app.py create mode 100644 media-manager/transnetv2/requirements.txt create mode 100644 media-manager/whisper/Dockerfile create mode 100644 media-manager/whisper/entrypoint.sh create mode 100644 media-manager/whisper/transcribe.py create mode 100644 media-manager/yolo-detection/Dockerfile create mode 100644 media-manager/yolo-detection/main.py create mode 100644 media-manager/yolo-detection/requirements.txt create mode 100644 mkdocs/ADMIN_DOCS_VALIDATION_REPORT.md delete mode 100644 mkdocs/docs/another-test-page.md create mode 100644 mkdocs/docs/assets/css/video-player.css create mode 100644 mkdocs/docs/assets/js/env-config.js create mode 100644 mkdocs/docs/assets/js/video-config.js create mode 100644 mkdocs/docs/assets/js/video-player.js create mode 100644 mkdocs/docs/hooks/__pycache__/env_config_hook.cpython-311.pyc create mode 100644 mkdocs/docs/hooks/env_config_hook.py delete mode 100644 mkdocs/docs/main.md delete mode 100644 mkdocs/docs/overrides/main.html delete mode 100644 mkdocs/docs/test-2.md rename mkdocs/docs/{ => v1}/adv/ansible.md (100%) rename mkdocs/docs/{ => v1}/adv/index.md (100%) rename mkdocs/docs/{ => v1}/adv/vscode-ssh.md (100%) rename mkdocs/docs/{ => v1}/build/index.md (100%) rename mkdocs/docs/{ => v1}/build/influence.md (100%) rename mkdocs/docs/{ => v1}/build/map.md (100%) rename mkdocs/docs/{ => v1}/build/server.md (100%) rename mkdocs/docs/{ => v1}/build/site.md (100%) rename mkdocs/docs/{ => v1}/config/cloudflare-config.md (100%) rename mkdocs/docs/{ => v1}/config/coder.md (100%) rename mkdocs/docs/{ => v1}/config/index.md (100%) rename mkdocs/docs/{ => v1}/config/map.md (100%) rename mkdocs/docs/{ => v1}/config/mkdocs.md (100%) create mode 100644 mkdocs/docs/v1/index.md rename mkdocs/docs/{ => v1}/manual/index.md (100%) rename mkdocs/docs/{ => v1}/manual/map.md (100%) rename mkdocs/docs/{ => v1}/services/code-server.md (100%) rename mkdocs/docs/{ => v1}/services/code.png (100%) rename mkdocs/docs/{ => v1}/services/dashboard.png (100%) rename mkdocs/docs/{ => v1}/services/git.png (100%) rename mkdocs/docs/{ => v1}/services/gitea.md (100%) rename mkdocs/docs/{ => v1}/services/homepage.md (100%) rename mkdocs/docs/{ => v1}/services/index.md (100%) rename mkdocs/docs/{ => v1}/services/listmonk.md (100%) rename mkdocs/docs/{ => v1}/services/map.md (100%) rename mkdocs/docs/{ => v1}/services/map.png (100%) rename mkdocs/docs/{ => v1}/services/mini-qr.md (100%) rename mkdocs/docs/{ => v1}/services/mkdocs.md (100%) rename mkdocs/docs/{ => v1}/services/n8n.md (100%) rename mkdocs/docs/{ => v1}/services/nocodb.md (100%) rename mkdocs/docs/{ => v1}/services/postgresql.md (100%) rename mkdocs/docs/{ => v1}/services/static-server.md (100%) create mode 100644 mkdocs/docs/v2/api-reference/index.md create mode 100644 mkdocs/docs/v2/architecture/authentication.md create mode 100644 mkdocs/docs/v2/architecture/dual-api.md create mode 100644 mkdocs/docs/v2/architecture/index.md create mode 100644 mkdocs/docs/v2/backend/index.md create mode 100644 mkdocs/docs/v2/backend/middleware/index.md create mode 100644 mkdocs/docs/v2/backend/modules/auth.md create mode 100644 mkdocs/docs/v2/backend/modules/campaigns.md create mode 100644 mkdocs/docs/v2/backend/modules/canvass.md create mode 100644 mkdocs/docs/v2/backend/modules/index.md create mode 100644 mkdocs/docs/v2/backend/modules/locations.md create mode 100644 mkdocs/docs/v2/backend/modules/media.md create mode 100644 mkdocs/docs/v2/backend/modules/pages.md create mode 100644 mkdocs/docs/v2/backend/modules/representatives.md create mode 100644 mkdocs/docs/v2/backend/modules/responses.md create mode 100644 mkdocs/docs/v2/backend/modules/settings.md create mode 100644 mkdocs/docs/v2/backend/modules/shifts.md create mode 100644 mkdocs/docs/v2/backend/modules/users.md create mode 100644 mkdocs/docs/v2/backend/services/index.md create mode 100644 mkdocs/docs/v2/backend/utilities/index.md create mode 100644 mkdocs/docs/v2/contributing/code-of-conduct.md create mode 100644 mkdocs/docs/v2/contributing/development-setup.md create mode 100644 mkdocs/docs/v2/contributing/index.md create mode 100644 mkdocs/docs/v2/contributing/pull-requests.md create mode 100644 mkdocs/docs/v2/contributing/roadmap.md create mode 100644 mkdocs/docs/v2/database/index.md create mode 100644 mkdocs/docs/v2/database/indexes.md create mode 100644 mkdocs/docs/v2/database/migrations.md create mode 100644 mkdocs/docs/v2/database/models/auth.md create mode 100644 mkdocs/docs/v2/database/models/canvass.md create mode 100644 mkdocs/docs/v2/database/models/email-templates.md create mode 100644 mkdocs/docs/v2/database/models/index.md create mode 100644 mkdocs/docs/v2/database/models/influence.md create mode 100644 mkdocs/docs/v2/database/models/map.md create mode 100644 mkdocs/docs/v2/database/models/media.md create mode 100644 mkdocs/docs/v2/database/models/pages.md create mode 100644 mkdocs/docs/v2/database/models/settings.md create mode 100644 mkdocs/docs/v2/database/schema.md create mode 100644 mkdocs/docs/v2/database/seeding.md create mode 100644 mkdocs/docs/v2/deployment/backup-restore.md create mode 100644 mkdocs/docs/v2/deployment/docker-compose.md create mode 100644 mkdocs/docs/v2/deployment/environment-variables.md create mode 100644 mkdocs/docs/v2/deployment/healthchecks.md create mode 100644 mkdocs/docs/v2/deployment/index.md create mode 100644 mkdocs/docs/v2/deployment/monitoring-stack.md create mode 100644 mkdocs/docs/v2/deployment/nginx.md create mode 100644 mkdocs/docs/v2/deployment/scaling.md create mode 100644 mkdocs/docs/v2/deployment/ssl-tls.md create mode 100644 mkdocs/docs/v2/deployment/tunneling.md create mode 100644 mkdocs/docs/v2/development/code-style.md create mode 100644 mkdocs/docs/v2/development/debugging.md create mode 100644 mkdocs/docs/v2/development/docker-workflow.md create mode 100644 mkdocs/docs/v2/development/git-workflow.md create mode 100644 mkdocs/docs/v2/development/index.md create mode 100644 mkdocs/docs/v2/development/local-setup.md create mode 100644 mkdocs/docs/v2/development/migrations.md create mode 100644 mkdocs/docs/v2/development/npm-commands.md create mode 100644 mkdocs/docs/v2/development/testing.md create mode 100644 mkdocs/docs/v2/development/typescript.md create mode 100644 mkdocs/docs/v2/features/COMPLETION_STATUS.md create mode 100644 mkdocs/docs/v2/features/email-templates/editor.md create mode 100644 mkdocs/docs/v2/features/email-templates/index.md create mode 100644 mkdocs/docs/v2/features/email-templates/template-system.md create mode 100644 mkdocs/docs/v2/features/email-templates/variables.md create mode 100644 mkdocs/docs/v2/features/email-templates/versioning.md create mode 100644 mkdocs/docs/v2/features/index.md create mode 100644 mkdocs/docs/v2/features/influence/campaigns.md create mode 100644 mkdocs/docs/v2/features/influence/email-queue.md create mode 100644 mkdocs/docs/v2/features/influence/index.md create mode 100644 mkdocs/docs/v2/features/influence/postal-codes.md create mode 100644 mkdocs/docs/v2/features/influence/representatives.md create mode 100644 mkdocs/docs/v2/features/influence/responses.md create mode 100644 mkdocs/docs/v2/features/landing-pages/index.md create mode 100644 mkdocs/docs/v2/features/map/MAP_FEATURES_STATUS.md create mode 100644 mkdocs/docs/v2/features/map/canvassing.md create mode 100644 mkdocs/docs/v2/features/map/cuts.md create mode 100644 mkdocs/docs/v2/features/map/data-quality.md create mode 100644 mkdocs/docs/v2/features/map/geocoding.md create mode 100644 mkdocs/docs/v2/features/map/index.md create mode 100644 mkdocs/docs/v2/features/map/locations.md create mode 100644 mkdocs/docs/v2/features/map/nar-import.md create mode 100644 mkdocs/docs/v2/features/map/shifts.md create mode 100644 mkdocs/docs/v2/features/map/tracking.md create mode 100644 mkdocs/docs/v2/features/map/walk-sheets.md create mode 100644 mkdocs/docs/v2/features/media/index.md create mode 100644 mkdocs/docs/v2/features/media/jobs.md create mode 100644 mkdocs/docs/v2/features/media/public-gallery.md create mode 100644 mkdocs/docs/v2/features/media/upload.md create mode 100644 mkdocs/docs/v2/features/media/video-library.md create mode 100644 mkdocs/docs/v2/features/newsletter/index.md create mode 100644 mkdocs/docs/v2/features/observability/index.md create mode 100644 mkdocs/docs/v2/features/pages/block-library.md create mode 100644 mkdocs/docs/v2/features/pages/grapes-editor.md create mode 100644 mkdocs/docs/v2/features/pages/mkdocs-export.md create mode 100644 mkdocs/docs/v2/features/pages/page-builder.md create mode 100644 mkdocs/docs/v2/features/tunnel/index.md create mode 100644 mkdocs/docs/v2/frontend/components/index.md create mode 100644 mkdocs/docs/v2/frontend/index.md create mode 100644 mkdocs/docs/v2/frontend/layouts/index.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/campaigns-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/canvass-dashboard-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/code-editor-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/cut-export-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/cuts-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/dashboard-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/data-quality-dashboard-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/docs-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/email-queue-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/email-template-editor-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/email-templates-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/gitea-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/index.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/landing-pages-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/listmonk-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/locations-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/mailhog-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/map-settings-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/mini-qr-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/mkdocs-settings-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/n8n-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/nocodb-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/observability-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/page-editor-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/pangolin-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/representatives-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/responses-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/settings-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/shifts-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/users-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/admin/walk-sheet-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/index.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/campaign-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/campaigns-list-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/index.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/landing-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/map-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/media-gallery-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/media-viewer-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/response-wall-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/public/shifts-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/volunteer/index.md create mode 100644 mkdocs/docs/v2/frontend/pages/volunteer/my-activity-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/volunteer/my-routes-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/volunteer/volunteer-map-page.md create mode 100644 mkdocs/docs/v2/frontend/pages/volunteer/volunteer-shifts-page.md create mode 100644 mkdocs/docs/v2/getting-started/index.md create mode 100644 mkdocs/docs/v2/getting-started/quick-start.md create mode 100644 mkdocs/docs/v2/index.md create mode 100644 mkdocs/docs/v2/migration/api-changes.md create mode 100644 mkdocs/docs/v2/migration/breaking-changes.md create mode 100644 mkdocs/docs/v2/migration/data-migration.md create mode 100644 mkdocs/docs/v2/migration/feature-parity.md create mode 100644 mkdocs/docs/v2/migration/index.md create mode 100644 mkdocs/docs/v2/troubleshooting/auth-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/common-errors.md create mode 100644 mkdocs/docs/v2/troubleshooting/database-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/docker-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/email-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/faq.md create mode 100644 mkdocs/docs/v2/troubleshooting/geocoding-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/index.md create mode 100644 mkdocs/docs/v2/troubleshooting/monitoring-issues.md create mode 100644 mkdocs/docs/v2/troubleshooting/performance-optimization.md create mode 100644 mkdocs/docs/v2/user-guides/admin-guide.md create mode 100644 mkdocs/docs/v2/user-guides/campaign-manager-guide.md create mode 100644 mkdocs/docs/v2/user-guides/content-editor-guide.md create mode 100644 mkdocs/docs/v2/user-guides/index.md create mode 100644 mkdocs/docs/v2/user-guides/map-organizer-guide.md create mode 100644 mkdocs/docs/v2/user-guides/volunteer-guide.md create mode 100644 nginx/conf.d/api.conf.template create mode 100644 nginx/conf.d/default.conf.template create mode 100644 nginx/conf.d/services.conf.template create mode 100644 nginx/conf.d/services.conf.template.bak create mode 100755 nginx/entrypoint.sh create mode 100644 production plan.md create mode 100755 scripts/update-env.sh create mode 100644 shared/types/media.ts diff --git a/.claude/agents/foss-compliance-reviewer.md b/.claude/agents/foss-compliance-reviewer.md new file mode 100644 index 00000000..f3affc68 --- /dev/null +++ b/.claude/agents/foss-compliance-reviewer.md @@ -0,0 +1,180 @@ +--- +name: foss-compliance-reviewer +description: "Use this agent when new dependencies, services, or tools are being added to the project, or when reviewing code changes that introduce third-party libraries, external services, or infrastructure components. It should verify that the project maintains its commitment to Free and Open Source Software (FOSS) principles.\\n\\nExamples:\\n\\n- Example 1:\\n user: \"Let's add Stripe for payment processing and Auth0 for authentication\"\\n assistant: \"Let me check these choices against our FOSS principles before proceeding.\"\\n \\n assistant: \"The FOSS compliance reviewer has flagged both Stripe and Auth0 as proprietary services. Here are the findings and suggested alternatives...\"\\n\\n- Example 2:\\n user: \"I just added chart.js and @sentry/node to the project\"\\n assistant: \"Let me verify these new dependencies align with our FOSS standards.\"\\n \\n assistant: \"The reviewer found that chart.js is MIT-licensed (approved), but @sentry/node connects to a proprietary SaaS by default. Here are the details...\"\\n\\n- Example 3:\\n user: \"Can you set up monitoring with Datadog?\"\\n assistant: \"Before implementing this, let me check if Datadog aligns with our FOSS principles.\"\\n \\n assistant: \"The FOSS compliance reviewer notes that we already have a Prometheus + Grafana monitoring stack which is fully open source. Datadog is proprietary SaaS. Recommendation is to continue using our existing FOSS stack.\"\\n\\n- Example 4:\\n user: \"Please install these packages: prisma, bullmq, axios, and algolia\"\\n assistant: \"Let me review these packages for FOSS compliance before installing.\"\\n \\n assistant: \"The reviewer approved prisma (Apache-2.0), bullmq (MIT), and axios (MIT). However, Algolia's search client connects to proprietary SaaS. Suggested alternatives include Meilisearch or Typesense.\"" +model: sonnet +color: purple +memory: project +--- + +You are an expert Free and Open Source Software (FOSS) compliance reviewer with deep knowledge of open source licensing, the FOSS ecosystem, and self-hosted infrastructure. You have extensive experience evaluating software dependencies, services, and tools against FOSS principles. You understand the nuances between truly open source software, source-available software, open-core models, and proprietary systems. + +## Your Mission + +You review technology choices in the Changemaker Lite project to ensure the stack remains predominantly Free and Open Source. This is a self-hosted political campaign platform that values digital sovereignty, transparency, and community-driven software. The project already demonstrates strong FOSS alignment with its stack (PostgreSQL, Redis, Nginx, Prometheus, Grafana, Listmonk, Gitea, n8n, NocoDB, MkDocs, etc.). + +## Review Process + +When evaluating technology choices, follow this systematic approach: + +### 1. Identify What's Being Evaluated +- New npm/Node.js dependencies +- Docker services or containers +- External APIs or SaaS platforms +- Development tools +- Infrastructure components +- Frontend libraries or frameworks + +### 2. Check License Classification +For each item, determine its license and classify it: + +**Approved FOSS Licenses (Green):** +- MIT, ISC, BSD-2-Clause, BSD-3-Clause +- Apache-2.0 +- GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0 +- MPL-2.0 +- Unlicense, CC0-1.0 +- PostgreSQL License +- Artistic-2.0 + +**Caution - Review Needed (Yellow):** +- AGPL-3.0 (fine for self-hosted, but review implications) +- SSPL (Server Side Public License - used by MongoDB, not OSI-approved) +- BSL (Business Source License - used by some HashiCorp tools, MariaDB) +- Elastic License 2.0 +- Commons Clause additions +- Any "source-available" but not OSI-approved license + +**Not FOSS (Red):** +- Proprietary/commercial licenses +- SaaS-only services with no self-hosted option +- Closed-source binaries +- Services requiring proprietary API keys with no open alternative + +### 3. Evaluate the Full Picture +Beyond just the license, consider: +- **Governance**: Is the project community-governed or single-company controlled? +- **Self-hostability**: Can it be fully self-hosted without phoning home? +- **Data sovereignty**: Does data stay on your infrastructure? +- **Vendor lock-in risk**: How hard is it to migrate away? +- **Open-core concerns**: Is the open source version meaningfully usable, or is it crippled to upsell? +- **Transitive dependencies**: Do key dependencies have problematic licenses? + +### 4. Provide Clear Recommendations + +For each item reviewed, provide: +- **Status**: ✅ Approved, ⚠️ Caution, ❌ Not Recommended +- **License**: The specific license +- **Reasoning**: Why it passes or fails +- **Alternative** (if not recommended): A FOSS alternative that achieves the same goal + +## Project Context + +The Changemaker Lite project already uses these FOSS-aligned technologies (use as reference for what's acceptable): + +| Component | License | Category | +|-----------|---------|----------| +| PostgreSQL | PostgreSQL License | Database | +| Redis | BSD-3-Clause (pre-7.4) / RSALv2+SSPLv1 (7.4+) | Cache/Queue | +| Nginx | BSD-2-Clause | Reverse Proxy | +| Node.js/Express | MIT | API Framework | +| Fastify | MIT | API Framework | +| React | MIT | Frontend | +| Vite | MIT | Build Tool | +| Ant Design | MIT | UI Library | +| Prisma | Apache-2.0 | ORM | +| BullMQ | MIT | Job Queue | +| Prometheus | Apache-2.0 | Monitoring | +| Grafana | AGPL-3.0 | Dashboards | +| Listmonk | AGPL-3.0 | Newsletter | +| NocoDB | AGPL-3.0 | Data Browser | +| Gitea | MIT | Git Hosting | +| n8n | Sustainable Use License (⚠️) | Workflow | +| MkDocs | BSD-2-Clause | Documentation | +| GrapesJS | BSD-3-Clause | Page Builder | +| Leaflet | BSD-2-Clause | Maps | +| Docker | Apache-2.0 | Containers | + +**Note on Redis**: Redis changed to dual RSALv2+SSPLv1 in v7.4. The project may be using an older BSD-licensed version or a fork like Valkey (BSD-3-Clause). Flag this if relevant. + +**Note on n8n**: n8n uses the Sustainable Use License which is NOT OSI-approved. It's already in the project but should be noted as an exception. + +## Output Format + +Structure your review as follows: + +``` +## FOSS Compliance Review + +### Items Reviewed +| Item | License | Status | Notes | +|------|---------|--------|-------| +| ... | ... | ✅/⚠️/❌ | ... | + +### Detailed Findings +[For each item that is ⚠️ or ❌, provide detailed analysis] + +### FOSS Alternatives +[For each ❌ item, suggest FOSS replacements] + +### Overall Assessment +[Summary: Is the project maintaining its FOSS commitment?] +``` + +## Important Guidelines + +1. **Be pragmatic, not dogmatic.** A project that is 95% FOSS with a few pragmatic exceptions (like n8n) is still a strong FOSS project. Note exceptions but don't treat them as failures. + +2. **Distinguish between dependencies and services.** An MIT-licensed npm package that only works with a proprietary API is effectively proprietary. Evaluate the full dependency chain. + +3. **Consider the ecosystem.** Some packages are so standard (e.g., Express, React) that their FOSS status is well-established. Focus your detailed analysis on less common or newer additions. + +4. **Check actual files when possible.** Use tools to read `package.json` files, `docker-compose.yml`, and other configuration to identify what's actually in use. Don't rely solely on what the user tells you. + +5. **Flag copyleft implications.** If a GPL/AGPL dependency is being used, note any distribution or linking implications, especially for the API server. + +6. **Acknowledge trade-offs.** Sometimes there's no good FOSS alternative for a specific need. In those cases, be honest about the trade-off rather than recommending an inferior FOSS option. + +7. **When reviewing recently added code**, focus on new `import` statements, new entries in `package.json`, new services in `docker-compose.yml`, and any new external API integrations. + +**Update your agent memory** as you discover licensing information about dependencies, services with licensing changes (like Redis's license change), FOSS alternatives that work well for specific use cases, and any exceptions or trade-offs the project has accepted. This builds institutional knowledge across conversations. Write concise notes about what you found. + +Examples of what to record: +- License classifications for commonly used packages +- Known licensing changes in popular projects (e.g., Redis, Elasticsearch, Terraform) +- Verified FOSS alternatives that have been evaluated +- Project-specific exceptions and the reasoning behind them +- Transitive dependency issues discovered during reviews + +# Persistent Agent Memory + +You have a persistent Persistent Agent Memory directory at `/home/bunker-admin/changemaker.lite/.claude/agent-memory/foss-compliance-reviewer/`. Its contents persist across conversations. + +As you work, consult your memory files to build on previous experience. When you encounter a mistake that seems like it could be common, check your Persistent Agent Memory for relevant notes — and if nothing is written yet, record what you learned. + +Guidelines: +- `MEMORY.md` is always loaded into your system prompt — lines after 200 will be truncated, so keep it concise +- Create separate topic files (e.g., `debugging.md`, `patterns.md`) for detailed notes and link to them from MEMORY.md +- Update or remove memories that turn out to be wrong or outdated +- Organize memory semantically by topic, not chronologically +- Use the Write and Edit tools to update your memory files + +What to save: +- Stable patterns and conventions confirmed across multiple interactions +- Key architectural decisions, important file paths, and project structure +- User preferences for workflow, tools, and communication style +- Solutions to recurring problems and debugging insights + +What NOT to save: +- Session-specific context (current task details, in-progress work, temporary state) +- Information that might be incomplete — verify against project docs before writing +- Anything that duplicates or contradicts existing CLAUDE.md instructions +- Speculative or unverified conclusions from reading a single file + +Explicit user requests: +- When the user asks you to remember something across sessions (e.g., "always use bun", "never auto-commit"), save it — no need to wait for multiple interactions +- When the user asks to forget or stop remembering something, find and remove the relevant entries from your memory files +- Since this memory is project-scope and shared with your team via version control, tailor your memories to this project + +## MEMORY.md + +Your MEMORY.md is currently empty. When you notice a pattern worth preserving across sessions, save it here. Anything in MEMORY.md will be included in your system prompt next time. diff --git a/CLAUDE.md b/CLAUDE.md index 32254cee..c43d3219 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,212 +6,734 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Changemaker Lite is a self-hosted political campaign platform built with Docker Compose. It consolidates advocacy email campaigns, geographic mapping, volunteer management, and administration into a single TypeScript stack. The primary domain is `cmlite.org`. -**Current state:** V2 rebuild in progress on the `v2` branch. See `V2_PLAN.md` for the full roadmap. +**Current state:** V2 rebuild substantially complete on the `v2` branch. Core platform operational with Phases 1-14 complete. See `V2_PLAN.md` for the full roadmap. + +**Status Summary:** +- ✅ Phases 1-14 Complete (Foundation through Monitoring + DevOps) +- ✅ Security Audit Complete (13 findings addressed, Feb 2026) +- ✅ NAR 2025 Server Import (Canadian electoral data) +- ✅ Media Manager Integration (dual API architecture) +- ✅ Email Templates System +- ✅ Data Quality Dashboard +- ✅ Observability Dashboard +- ✅ **Drizzle to Prisma Migration Complete** (Media API consolidated to single-ORM, Feb 2026) +- ✅ **Automated Pangolin Setup** (One-command tunnel deployment, Feb 2026) +- 🚧 Phase 15 (Testing + Polish) - Next --- -## V2 Architecture (Active Development) +## V2 Architecture ### Stack -- **Single unified Express.js API** — TypeScript, port 4000, Prisma ORM + PostgreSQL 16 +- **Dual API Architecture** + - **Express.js API** (TypeScript, port 4000) — Main V2 features with Prisma ORM + PostgreSQL 16 + - **Fastify Media API** (TypeScript, port 4100) — Video library with Prisma ORM (shared DB) ✅ **Migrated from Drizzle (Feb 2026)** - **React Admin GUI** — Vite + Ant Design + Zustand, port 3000 - **Nginx reverse proxy** — subdomain routing (`*.cmlite.org`) - **NocoDB v2** — read-only data browser on port 8091 -- **JWT auth** — access tokens (15min) + refresh tokens (7 days, stored in DB) -- **BullMQ** — async email job queue, **Listmonk** for newsletters -- **Redis** — caching, rate limiting, BullMQ backend +- **Redis** — caching, rate limiting, BullMQ backend, geocoding queue (authenticated) +- **Monitoring Stack** (Docker profile: `monitoring`) — Prometheus, Grafana, Alertmanager, cAdvisor, exporters -### Directory Structure +### Authentication & Security + +- **JWT-based auth:** access tokens (15min) + refresh tokens (7 days, stored in DB) +- **Password policy:** 12+ characters, uppercase, lowercase, digit (enforced at schema level) +- **Initial admin:** Configured via `INITIAL_ADMIN_EMAIL` and `INITIAL_ADMIN_PASSWORD` env vars (auto-created during database seeding) +- **Roles:** `SUPER_ADMIN`, `INFLUENCE_ADMIN`, `MAP_ADMIN`, `USER`, `TEMP` +- **RBAC:** `requireRole(...roles)`, `requireNonTemp`, `authenticate` middleware +- **Security features:** + - Refresh token rotation (atomic transaction) + - User enumeration prevention (401 not 404) + - Rate limiting on auth endpoints (10/min) + - Redis authentication required + - XSS/injection prevention (HTML escaping) + - Path traversal protection + - Encryption key for DB secrets (ENCRYPTION_KEY env var) + - Security audit complete (13 findings addressed, see `SECURITY_AUDIT_2025-02-11.md`) + +### Email Systems + +- **BullMQ** — async advocacy email job queue with SMTP +- **Listmonk** — newsletter/marketing campaigns (opt-in sync via `LISTMONK_SYNC_ENABLED`) +- **MailHog** — dev email capture (`EMAIL_TEST_MODE=true`) + +### Directory Structure (Annotated) ``` changemaker.lite/ -├── api/ # Unified Express.js API (TypeScript) -│ ├── prisma/ # Schema, migrations, seed +├── api/ # Dual API servers (Express + Fastify) +│ ├── prisma/ +│ │ ├── schema.prisma # 30+ models: User, Campaign, Location, Shift, etc. +│ │ ├── migrations/ # Prisma migration history +│ │ └── seed.ts # Admin user, settings, page blocks +│ ├── drizzle/ # Media tables (Drizzle ORM) +│ ├── Dockerfile.media # Fastify media server container │ └── src/ -│ ├── config/ # env.ts, database.ts, redis.ts -│ ├── middleware/ # error-handler, validate, rate-limit, auth, rbac +│ ├── server.ts # Express API entry point (port 4000) +│ ├── media-server.ts # Fastify media API entry point (port 4100) +│ ├── config/ +│ │ └── env.ts # Zod-validated environment config (100+ vars) +│ ├── middleware/ # auth, rbac, rate-limit, validate, error-handler │ ├── modules/ -│ │ ├── auth/ # auth.service, auth.routes, auth.schemas -│ │ ├── users/ # users.service, users.routes, users.schemas -│ │ ├── influence/ # campaigns, representatives, responses, postal-codes -│ │ └── map/ # locations, shifts, cuts -│ ├── types/ # express.d.ts (Request augmentation) -│ └── utils/ # logger.ts (Winston), metrics.ts (prom-client) -├── admin/ # React Admin (Vite + Ant Design + Zustand) +│ │ ├── auth/ # JWT login, register, refresh, logout +│ │ ├── users/ # User CRUD + pagination + search +│ │ ├── settings/ # Site settings singleton +│ │ ├── services/ # Service health checks +│ │ ├── influence/ +│ │ │ ├── campaigns/ # Campaign CRUD + public routes +│ │ │ ├── representatives/ # Represent API integration + cache +│ │ │ ├── responses/ # Response wall + moderation + upvoting +│ │ │ ├── postal-codes/ # Postal code cache service +│ │ │ ├── campaign-emails/ # Email tracking + stats +│ │ │ └── email-queue/ # BullMQ queue admin +│ │ ├── map/ +│ │ │ ├── locations/ # Location CRUD + geocoding + NAR import +│ │ │ ├── geocoding/ # Multi-provider geocoding (6 providers) +│ │ │ ├── cuts/ # Polygon CRUD + spatial queries +│ │ │ ├── shifts/ # Shift CRUD + signups +│ │ │ ├── canvass/ # Canvassing sessions + visits + routes +│ │ │ ├── tracking/ # GPS tracking sessions (volunteer + admin routes) +│ │ │ └── settings/ # Map settings singleton +│ │ ├── pages/ +│ │ │ ├── pages-admin.routes.ts # Landing page CRUD +│ │ │ ├── pages-public.routes.ts # Public page renderer +│ │ │ └── blocks.routes.ts # Block library API +│ │ ├── email-templates/ # Email template CRUD + rendering +│ │ ├── media/ # Fastify media API (videos, reactions, jobs) +│ │ ├── listmonk/ # Newsletter sync admin routes +│ │ ├── pangolin/ # Tunnel management (Newt integration) +│ │ ├── docs/ # MkDocs + Code Server health checks +│ │ ├── qr/ # QR code PNG generation (public) +│ │ └── observability/ # Prometheus/Grafana/Alertmanager integration +│ ├── services/ # email, email-queue, geocode-queue, listmonk, pangolin, docker +│ ├── types/ # express.d.ts (Request augmentation) +│ └── utils/ # logger (Winston), metrics (prom-client), spatial +│ +├── admin/ # React Admin (Vite + Ant Design + Zustand) │ └── src/ -│ ├── components/ # ProtectedRoute, AppLayout -│ ├── pages/ # LoginPage, DashboardPage, UsersPage -│ ├── stores/ # auth.store.ts (Zustand) -│ ├── lib/ # api.ts (axios instance + interceptors) -│ └── types/ # api.ts (TypeScript interfaces) -├── nginx/ # Reverse proxy config -├── public-web/ # Public landing pages -├── docker-compose.yml # V2 orchestration -├── docker-compose.v1.yml # V1 backup for reference -└── V2_PLAN.md # Full 14-phase roadmap +│ ├── App.tsx # Main router + route definitions +│ ├── components/ +│ │ ├── AppLayout.tsx # Admin sidebar layout +│ │ ├── PublicLayout.tsx # Public dark theme layout +│ │ ├── VolunteerLayout.tsx # Volunteer portal layout +│ │ ├── MediaPublicLayout.tsx # Public media gallery layout +│ │ ├── GrapesJSEditor.tsx # Landing page editor wrapper (forwardRef, Ctrl+S) +│ │ ├── map/ # Leaflet map components + controls + drawing modes +│ │ ├── canvass/ # GPS tracking, markers, route, visit recording +│ │ ├── media/ # VideoCard, BulkActions, gallery components +│ │ ├── email-templates/ # Email template components +│ │ └── observability/ # Monitoring components +│ ├── pages/ +│ │ ├── auth/ # LoginPage +│ │ ├── DashboardPage.tsx # Admin dashboard +│ │ ├── UsersPage.tsx # User CRUD +│ │ ├── SettingsPage.tsx # Global site settings +│ │ ├── influence/ +│ │ │ ├── CampaignsPage.tsx # Campaign management +│ │ │ ├── ResponsesPage.tsx # Response moderation +│ │ │ ├── RepresentativesPage.tsx # Rep cache admin +│ │ │ └── EmailQueuePage.tsx # Queue monitoring +│ │ ├── map/ +│ │ │ ├── LocationsPage.tsx # Location CRUD + CSV + geocoding +│ │ │ ├── CutsPage.tsx # Cut table + map drawing editor +│ │ │ ├── ShiftsPage.tsx # Shift CRUD + signups drawer +│ │ │ ├── MapSettingsPage.tsx # Map settings +│ │ │ └── DataQualityDashboardPage.tsx # Geocoding quality metrics +│ │ ├── CanvassDashboardPage.tsx # Admin canvass overview +│ │ ├── WalkSheetPage.tsx # Printable walk sheet +│ │ ├── CutExportPage.tsx # Printable location report +│ │ ├── volunteer/ +│ │ │ ├── VolunteerMapPage.tsx # Full-screen GPS canvass map +│ │ │ ├── VolunteerShiftsPage.tsx # Assigned shifts +│ │ │ ├── MyActivityPage.tsx # Visit history + outcomes +│ │ │ └── MyRoutesPage.tsx # Route history +│ │ ├── public/ +│ │ │ ├── CampaignsListPage.tsx # Public campaign listing +│ │ │ ├── CampaignPage.tsx # Campaign detail + email form +│ │ │ ├── ResponseWallPage.tsx # Public response wall +│ │ │ ├── MapPage.tsx # Public Leaflet map +│ │ │ ├── ShiftsPage.tsx # Public shift signup +│ │ │ ├── LandingPage.tsx # Rendered landing page (/p/:slug) +│ │ │ ├── MediaGalleryPage.tsx # Public video gallery +│ │ │ └── MediaViewerPage.tsx # Video detail page +│ │ ├── media/ +│ │ │ ├── LibraryPage.tsx # Video library management +│ │ │ ├── SharedMediaPage.tsx # Public gallery admin +│ │ │ └── MediaJobsPage.tsx # Job queue monitoring +│ │ ├── LandingPagesPage.tsx # Landing page manager +│ │ ├── PageEditorPage.tsx # Full-screen GrapesJS editor +│ │ ├── EmailTemplatesPage.tsx # Email template CRUD +│ │ ├── EmailTemplateEditorPage.tsx # Email template editor +│ │ ├── ListmonkPage.tsx # Newsletter sync management +│ │ ├── PangolinPage.tsx # Tunnel setup wizard +│ │ ├── DocsPage.tsx # MkDocs export management +│ │ ├── MkDocsSettingsPage.tsx # Documentation config +│ │ ├── ObservabilityPage.tsx # Monitoring dashboard +│ │ └── services/ +│ │ ├── MiniQRPage.tsx # Mini QR iframe +│ │ ├── MailHogPage.tsx # Email capture UI +│ │ ├── CodeEditorPage.tsx # Code Server management +│ │ ├── N8nPage.tsx # Workflow automation +│ │ ├── GiteaPage.tsx # Git repository hosting +│ │ └── NocoDBPage.tsx # Data browser management +│ ├── stores/ # auth.store.ts, canvass.store.ts (Zustand) +│ ├── lib/ # api.ts, media-api.ts, media-public-api.ts (axios) +│ ├── hooks/ # useDebounce, useLocalStorage +│ └── types/ # api.ts, canvass.ts, media.ts (TypeScript interfaces) +│ +├── media-manager/ # Legacy media manager (reference) +├── nginx/ # Reverse proxy config (subdomain routing + CSP) +├── configs/ # Prometheus, Grafana, Alertmanager configs +├── scripts/ # backup.sh, legacy Cloudflare scripts +├── docker-compose.yml # V2 orchestration (20+ services) +├── docker-compose.v1.yml # V1 backup (reference) +├── .env.example # All required environment variables +└── V2_PLAN.md # Full 14-phase roadmap ``` -### Key Files - -| File | Purpose | -|------|---------| -| `api/prisma/schema.prisma` | Full database schema (20+ models) | -| `api/src/server.ts` | API entry point, middleware stack, route wiring | -| `api/src/config/env.ts` | Zod-validated environment config | -| `api/src/modules/auth/` | JWT auth (login, register, refresh, logout) | -| `api/src/modules/users/` | User CRUD with pagination + search | -| `admin/src/App.tsx` | React admin shell with routing | -| `admin/src/stores/auth.store.ts` | Zustand auth state with token persistence | -| `admin/src/lib/api.ts` | Axios instance with 401 refresh interceptor | -| `docker-compose.yml` | V2 service orchestration | -| `.env.example` | All required environment variables | - -### Auth Flow - -- JWT-based: access tokens (15min) + refresh tokens (7 days, stored in DB) -- Login → verify bcrypt hash → generate token pair → return tokens + user -- Refresh → validate refresh token → rotate (invalidate old, issue new) → return new pair -- Roles: `SUPER_ADMIN`, `INFLUENCE_ADMIN`, `MAP_ADMIN`, `USER`, `TEMP` -- RBAC middleware: `requireRole(...roles)`, `requireNonTemp` - -### Nginx Routing - -| Subdomain | Target | -|-----------|--------| -| `app.cmlite.org` | Admin React app (port 3000) | -| `api.cmlite.org` | Express API (port 4000) | -| `data.cmlite.org` | NocoDB read-only (port 8091) | -| `docs.cmlite.org` | MkDocs (port 4001) | -| `cmlite.org` | Public landing pages | - --- -## V2 Development Commands +## Quick Start Guide + +### Initial Setup (First Time) + +1. **Clone repository and checkout v2 branch:** + ```bash + git clone changemaker.lite + cd changemaker.lite + git checkout v2 + ``` + +2. **Create environment file:** + ```bash + cp .env.example .env + # Edit .env and set: + # - V2_POSTGRES_PASSWORD (strong password) + # - REDIS_PASSWORD (strong password) + # - JWT_ACCESS_SECRET (openssl rand -hex 32) + # - JWT_REFRESH_SECRET (openssl rand -hex 32) + # - ENCRYPTION_KEY (openssl rand -hex 32, must differ from JWT secrets) + ``` + +3. **Start core services:** + ```bash + docker compose up -d v2-postgres redis api admin + ``` + +4. **Run database migrations:** + ```bash + docker compose exec api npx prisma migrate deploy + docker compose exec api npx prisma db seed + ``` + +5. **Access the application:** + - Admin GUI: http://localhost:3000 (see INITIAL_ADMIN_EMAIL/INITIAL_ADMIN_PASSWORD in .env) + - API: http://localhost:4000 + - **Change default password immediately** + +### Development Workflow + +**Starting services:** +```bash +# Core services +docker compose up -d v2-postgres redis api admin + +# Include monitoring stack +docker compose --profile monitoring up -d + +# Include media API +docker compose up -d media-api +``` + +**Local development (without Docker):** +```bash +# Terminal 1: API +cd api && npm install && npm run dev + +# Terminal 2: Admin +cd admin && npm install && npm run dev + +# Terminal 3 (optional): Media API +cd api && npm run dev:media +``` + +### Accessing Services + +| Service | URL | Default Credentials | +|---------|-----|---------------------| +| Admin GUI | http://localhost:3000 | See INITIAL_ADMIN_EMAIL/INITIAL_ADMIN_PASSWORD in .env | +| API | http://localhost:4000 | - | +| NocoDB | http://localhost:8091 | See `NC_ADMIN_EMAIL`/`NC_ADMIN_PASSWORD` in .env | +| MailHog | http://localhost:8025 | - | +| Grafana | http://localhost:3001 | admin / admin | +| Prometheus | http://localhost:9090 | - | +| Listmonk | http://localhost:9001 | See `LISTMONK_WEB_ADMIN_USER`/`PASSWORD` in .env | + +### Feature Flags + +Enable optional features in `.env`: + +```bash +# Media Manager +ENABLE_MEDIA_FEATURES=true + +# Listmonk Newsletter Sync +LISTMONK_SYNC_ENABLED=true + +# Email Test Mode (sends to MailHog instead of SMTP) +EMAIL_TEST_MODE=true +``` + +--- + +## Development Commands + +The user likes to use Docker - recereating services as if in production. ### API Development ```bash -cd api && npm run dev # Dev server with tsx watch (auto-reload) -cd api && npx tsc --noEmit # Type-check without emitting -cd api && npx prisma migrate dev # Run/create migrations -cd api && npx prisma studio # Browse database in browser -cd api && npx prisma generate # Regenerate Prisma client +cd api && npm run dev # Express dev server (port 4000) +cd api && npm run dev:media # Fastify media dev server (port 4100) +cd api && npx tsc --noEmit # Type-check +cd api && npx prisma migrate dev # Run/create Prisma migrations +cd api && npx prisma studio # Browse database +cd api && npx drizzle-kit push # Push Drizzle schema changes (media) ``` -### Admin GUI Development +### Admin Development ```bash cd admin && npm run dev # Vite dev server (port 3000) -cd admin && npx tsc --noEmit # Type-check without emitting -cd admin && npm run build # Production build (tsc + vite) +cd admin && npx tsc --noEmit # Type-check +cd admin && npm run build # Production build ``` -### Docker (V2 Services) +### Docker Operations ```bash -docker compose up -d v2-postgres redis api # Start API + dependencies -docker compose up -d admin # Start admin GUI -docker compose up -d # Start all v2 services -docker compose logs -f api # Tail API logs -docker compose exec api npx prisma migrate dev # Run migrations in container -docker compose down # Stop all services +# Start services +docker compose up -d v2-postgres redis api admin +docker compose up -d media-api +docker compose --profile monitoring up -d + +# View logs +docker compose logs -f api +docker compose logs -f media-api + +# Database operations +docker compose exec api npx prisma migrate dev +docker compose exec api npx drizzle-kit push + +# Stop services +docker compose down ``` -### Type Checking (Both Projects) +### Testing & Backup ```bash +# Media API tests +cd api && ./test-media-api.sh + +# Backup (PostgreSQL + Listmonk + uploads) +./scripts/backup.sh + +# Type-check all projects cd api && npx tsc --noEmit && cd ../admin && npx tsc --noEmit ``` --- -## Port Reference (V2) +## Core Modules Reference -| Port | Service | -|------|---------| -| 3000 | Admin GUI (Vite dev / React) | -| 3001 | Grafana | -| 3010 | Homepage | -| 3030 | Gitea | -| 4000 | V2 API (Express.js) | -| 4001 | MkDocs (built static) | -| 5432 | Listmonk PostgreSQL | -| 5433 | V2 PostgreSQL (localhost) | -| 5678 | n8n | -| 6379 | Redis | -| 8025 | MailHog Web UI | -| 8080 | cAdvisor | -| 8089 | Mini QR | -| 8091 | NocoDB v2 (read-only) | -| 8888 | Code Server | -| 9001 | Listmonk | -| 9090 | Prometheus | -| 9093 | Alertmanager | +### Auth & Users + +**Files:** +- `api/src/modules/auth/` — JWT login, register, refresh, logout +- `api/src/modules/users/` — User CRUD + pagination + search +- `api/src/middleware/auth.ts` — JWT verification + RBAC +- `admin/src/stores/auth.store.ts` — Zustand auth state + token persistence +- `admin/src/lib/api.ts` — Axios with 401 refresh interceptor + +**Features:** JWT access/refresh tokens, bcrypt passwords (12+ chars), role-based access control, user enumeration prevention, rate limiting + +### Influence Module (Advocacy Campaigns) + +**Files:** +- `api/src/modules/influence/campaigns/` — Campaign CRUD + public routes +- `api/src/modules/influence/representatives/` — Represent API client + cache +- `api/src/modules/influence/responses/` — Response wall + moderation + upvoting +- `api/src/services/email-queue.service.ts` — BullMQ queue + worker +- `admin/src/pages/CampaignsPage.tsx` — Campaign management +- `admin/src/pages/public/CampaignPage.tsx` — Public campaign page + +**Features:** Postal code → representative lookup, email campaigns, response wall with moderation, BullMQ async email queue + +**Routes:** +- Admin: `/app/influence/campaigns`, `/app/influence/responses`, `/app/influence/email-queue` +- Public: `/campaigns`, `/campaigns/:id`, `/responses/:campaignId` + +### Map Module (Locations & Canvassing) + +**Files:** +- `api/src/modules/map/locations/` — Location CRUD + geocoding + NAR import +- `api/src/modules/map/geocoding/geocoding.service.ts` — Multi-provider geocoding (6 providers) +- `api/src/modules/map/cuts/` — Polygon CRUD + spatial queries +- `api/src/modules/map/shifts/` — Shift CRUD + signups +- `api/src/modules/map/canvass/` — Canvassing sessions + visits + routes +- `api/src/modules/map/tracking/` — GPS tracking sessions (volunteer + admin routes) +- `api/src/utils/spatial.ts` — Point-in-polygon, haversine, bounds, centroids +- `admin/src/pages/LocationsPage.tsx` — Location CRUD + CSV + geocoding +- `admin/src/pages/CutsPage.tsx` — Cut table + map drawing editor +- `admin/src/pages/CanvassDashboardPage.tsx` — Admin canvass overview +- `admin/src/pages/volunteer/VolunteerMapPage.tsx` — Full-screen GPS canvass map + +**Features:** Multi-provider geocoding, NAR 2025 import (Canadian electoral data), polygon cuts, volunteer shifts, canvassing system with GPS tracking, walking route algorithm, printable walk sheets + +**Routes:** +- Admin: `/app/map/locations`, `/app/map/cuts`, `/app/map/shifts`, `/app/canvass/dashboard` +- Public: `/map`, `/shifts` +- Volunteer: `/volunteer/canvass/:cutId`, `/volunteer/assignments`, `/volunteer/activity` + +### Landing Pages & Email Templates + +**Files:** +- `api/src/modules/pages/` — Landing page CRUD + block library (3 route files) +- `api/src/modules/email-templates/` — Email template CRUD + rendering +- `admin/src/components/GrapesJSEditor.tsx` — GrapesJS wrapper (forwardRef, Ctrl+S) +- `admin/src/pages/PageEditorPage.tsx` — Full-screen page editor +- `admin/src/pages/EmailTemplateEditorPage.tsx` — Email template editor + +**Features:** GrapesJS WYSIWYG editor, page/template CRUD, MkDocs export (Jinja2 Material overrides), public renderer, desktop-only editor warning + +**Routes:** +- Admin: `/app/pages`, `/app/pages/:id/edit`, `/app/email-templates` +- Public: `/p/:slug` + +### Media Manager (Dual API) + +**Files:** +- `api/src/modules/media/` — Fastify media API (videos, reactions, jobs, analytics) +- `api/src/modules/media/services/` — FFprobe, video analytics service +- `api/src/modules/media/routes/` — Video CRUD, actions, schedule, analytics, tracking, upload +- `api/src/services/video-schedule-queue.service.ts` — BullMQ queue for scheduled publishing +- `admin/src/lib/media-api.ts` — Dedicated axios instance for Media API +- `admin/src/pages/media/LibraryPage.tsx` — Video library with quick actions + calendar +- `admin/src/pages/media/AnalyticsDashboardPage.tsx` — Global analytics dashboard +- `admin/src/pages/media/SharedMediaPage.tsx` — Public gallery admin +- `admin/src/pages/public/MediaGalleryPage.tsx` — Public video gallery +- `admin/src/components/media/` — VideoCard, VideoActions, modals, charts + +**Features:** +- **Video CRUD:** Upload with FFprobe metadata extraction (duration, dimensions, orientation, quality), bulk operations +- **Quick Actions** (Feb 2026): Edit, preview, analytics, schedule, duplicate, preview links (24h JWT), reset analytics +- **Scheduled Publishing** (Feb 2026): BullMQ job queue, timezone support (11 zones), calendar view, publish/unpublish automation +- **Analytics** (Feb 2026): Views, watch time, completion rate, traffic sources, registered viewers, GDPR-compliant (IP hashing, 90-day retention) +- **Tracking:** Public endpoints for view/event recording, 10s heartbeat, navigator.sendBeacon for reliability +- **UI Features:** Keyboard shortcuts (E/P/A/S), hover overlays, skeleton loading, error handling, mobile responsive + +**Routes:** +- Admin: `/app/media/library`, `/app/media/analytics`, `/app/media/shared`, `/app/media/jobs` +- Public: `/gallery` (public video gallery), `/gallery/watch/:id` (video viewer), `/media/:id` (backwards compatible viewer route) +- Tracking (public): `/track/view`, `/track/event`, `/track/heartbeat` + +**Note:** The public gallery is served at `/gallery` via the admin app using `MediaPublicLayout`. This provides a unified purple interface for both authenticated and unauthenticated users. The gallery supports optional authentication (session-based upvoting/commenting for anonymous users). + +**Documentation:** +- [Media Admin Features Guide](./docs/MEDIA_ADMIN_FEATURES.md) — Complete feature documentation +- [Video Analytics Guide](./docs/VIDEO_ANALYTICS_GUIDE.md) — Analytics setup and interpretation +- [Media API README](./api/src/modules/media/README.md) — Architecture overview + +### Services & Integrations + +**Listmonk Newsletter Sync:** +- `api/src/services/listmonk.client.ts` — Listmonk REST API client (native fetch) +- `api/src/services/listmonk-sync.service.ts` — Sync participants/locations → lists +- `admin/src/pages/ListmonkPage.tsx` — Newsletter sync management +- Opt-in sync: `LISTMONK_SYNC_ENABLED=true` + +**Pangolin Tunnel Management:** +- `api/src/services/pangolin.client.ts` — Pangolin Integration API client +- `api/src/modules/pangolin/pangolin.routes.ts` — Tunnel management routes (includes `/setup-automated`) +- `admin/src/pages/PangolinPage.tsx` — Setup wizard + status dashboard + automated setup button +- `scripts/pangolin-setup.sh` — CLI wrapper for automated setup +- `configs/pangolin/resources.yml` — Central resource definitions (12 services) +- Newt container integration (Cloudflare alternative) +- **Automated setup:** One-command deployment (creates site, updates .env, restarts Newt) +- **Continuous sync:** Hourly resource sync via nginx cron job + +**MkDocs + Code Server:** +- `api/src/modules/docs/docs.routes.ts` — Health checks + export routes +- `admin/src/pages/DocsPage.tsx` — MkDocs export management +- `admin/src/pages/CodeEditorPage.tsx` — Code Server management +- Embedded iframes in admin (CSP `frame-ancestors` for embedding) + +**Mini QR Service:** +- `api/src/modules/qr/qr.routes.ts` — QR code PNG generation (public, no auth) +- `admin/src/pages/MiniQRPage.tsx` — Mini QR iframe +- Used by walk sheets + cut exports + +### Observability & Monitoring + +**Files:** +- `api/src/modules/observability/observability.routes.ts` — Prometheus/Grafana/Alertmanager integration +- `api/src/utils/metrics.ts` — 12 custom `cm_*` Prometheus metrics +- `admin/src/pages/ObservabilityPage.tsx` — Monitoring dashboard (3 tabs) +- `admin/src/pages/DataQualityDashboardPage.tsx` — Geocoding quality metrics +- `configs/prometheus/` — Scrape targets, alert rules +- `configs/grafana/` — 3 pre-configured dashboards + +**Features:** 12 custom `cm_*` metrics (API uptime, queue size, sessions, etc.), HTTP request metrics, external service health gauges, 3 Grafana dashboards, alert rules, auto-start banner + +**Routes:** +- Admin: `/app/observability`, `/app/map/data-quality` +- Direct: `localhost:9090` (Prometheus), `localhost:3001` (Grafana) + +--- + +## Port Reference + +| Port | Service | Notes | +|------|---------|-------| +| **Core Services** | | | +| 3000 | Admin GUI | Vite dev / React production | +| 4000 | Express API | Main V2 API (Prisma) | +| 4100 | Fastify Media API | Video library (Drizzle) | +| 5433 | V2 PostgreSQL | Localhost (container: 5432) | +| 6379 | Redis | Cache, rate limit, BullMQ | +| **Supporting Services** | | | +| 3001 | Grafana | Metrics visualization | +| 3010 | Homepage | Service dashboard | +| 3030 | Gitea | Git hosting | +| 4001 | MkDocs Site | Served docs | +| 4003 | MkDocs Dev | Live preview | +| 5432 | Listmonk PostgreSQL | Listmonk DB | +| 5678 | n8n | Workflow automation | +| 8025 | MailHog | Email capture (dev) | +| 8089 | Mini QR | QR generator | +| 8091 | NocoDB | Data browser | +| 8885 | Mini QR Proxy | Iframe-friendly | +| 8888 | Code Server | Web IDE | +| 9001 | Listmonk | Newsletter platform | +| **Monitoring** (profile: `monitoring`) | | | +| 8080 | cAdvisor | Container metrics | +| 8889 | Gotify | Notifications | +| 9090 | Prometheus | Metrics collection | +| 9093 | Alertmanager | Alert routing | +| 9100 | Node Exporter | Host metrics | +| 9121 | Redis Exporter | Redis metrics | + +--- + +## Nginx Routing + +| Subdomain | Target | Purpose | +|-----------|--------|---------| +| `app.cmlite.org` | Admin (3000) | **All application routes** (admin + public pages, campaigns, map, shifts, media) | +| `api.cmlite.org` | Express (4000) | Main API | +| `media.cmlite.org` | Fastify (4100) | Media API | +| `db.cmlite.org` | NocoDB (8091) | Data browser | +| `docs.cmlite.org` | MkDocs (4003) | Docs site | +| `code.cmlite.org` | Code Server (8888) | Web IDE | +| `n8n.cmlite.org` | n8n (5678) | Workflow automation | +| `git.cmlite.org` | Gitea (3030) | Git hosting | +| `home.cmlite.org` | Homepage (3010) | Dashboard | +| `grafana.cmlite.org` | Grafana (3001) | Metrics viz | +| `listmonk.cmlite.org` | Listmonk (9001) | Newsletters | +| `qr.cmlite.org` | Mini QR (8089) | QR generator | +| `cmlite.org` | MkDocs Static (4004) | **Documentation/marketing site only** | + +**Clean separation:** Root domain (`${DOMAIN}`) serves MkDocs documentation site. All application functionality (admin GUI, public campaigns, map, shifts, media gallery) is accessible via `app.${DOMAIN}` subdomain. This provides clear separation between public documentation and the application. + +--- + +## Common Patterns + +**Note:** See `MEMORY.md` for comprehensive development patterns, gotchas, and lessons learned. Below are V2-specific patterns only. + +### API Router Structure +- Service layer (`*.service.ts`) — business logic, database queries +- Routes (`*.routes.ts`) — Express router, middleware, validation +- Schemas (`*.schemas.ts`) — Zod validation schemas +- Split admin/public routes when needed (e.g., `campaigns.routes.ts` + `campaigns-public.routes.ts`) + +### Authentication Middleware +- `authenticate` — requires any logged-in user +- `requireRole(...roles)` — requires specific role(s) +- `requireNonTemp` — blocks TEMP users +- Login redirects: ADMIN_ROLES → `/app`, USER/TEMP → `/volunteer` + +### Frontend Architecture +- Admin pages: `admin/src/pages/` (AppLayout) +- Public pages: `admin/src/pages/public/` (PublicLayout, dark theme) +- Volunteer pages: `admin/src/pages/volunteer/` (VolunteerLayout) +- Zustand stores: `auth.store.ts`, `canvass.store.ts` +- API clients: `{ api }` from `lib/api.ts`, `mediaApi` from `lib/media-api.ts` + +### Database ORMs +- **Prisma** (main API): Use `UncheckedCreateInput`/`UncheckedUpdateInput` for foreign keys, `Prisma.InputJsonValue` for JSON arrays +- **Drizzle** (media API): Separate schema file, push with `npx drizzle-kit push`, no migrations generated + +### V2-Specific Gotchas +- Fastify media API on port 4100, separate from Express on 4000 (same DB, different ORM) +- Volunteer page naming: `VolunteerShiftsPage.tsx` (not "MyAssignmentsPage") +- Tracking module: `api/src/modules/map/tracking/` (volunteer + admin routes) +- Pages module: 3 route files (pages-admin, pages-public, blocks) +- Vite proxy: `VITE_API_URL`, `VITE_MKDOCS_URL` env vars (Docker sets to container hostnames) +- Nginx media API block must come BEFORE general API block +- MkDocs port 4003 (was 4000, conflicted with API) +- Media upload: requires separate RW volume mount for inbox directory (`:rw` on `/media/local/inbox`), library remains read-only +- FFmpeg/FFprobe: installed in media-api container (Alpine `apk add --no-cache ffmpeg`), used for metadata extraction + +--- + +## Security & Configuration + +### Security Audit +Comprehensive security audit completed 2025-02-11, addressing 13 findings. See `SECURITY_AUDIT_2025-02-11.md` for full report. + +**Key improvements:** +- Password policy: 12+ chars, uppercase, lowercase, digit (schema-enforced) +- Rate limits on auth endpoints (10/min per IP) +- Refresh token rotation (atomic transaction) +- User enumeration prevention (401 not 404) +- Redis authentication required +- XSS/injection prevention (HTML escaping) +- Path traversal protection +- Encryption key for DB secrets (`ENCRYPTION_KEY` required in production) +- Nginx security headers (HSTS, Permissions-Policy, CSP) + +### Required Environment Variables +See `.env.example` for all 100+ variables. Critical ones: +- `V2_POSTGRES_PASSWORD`, `REDIS_PASSWORD` +- `JWT_ACCESS_SECRET`, `JWT_REFRESH_SECRET` +- `ENCRYPTION_KEY` (must differ from JWT secrets) +- `LISTMONK_SYNC_ENABLED` (opt-in newsletter sync) +- `EMAIL_TEST_MODE` (MailHog vs SMTP) +- `ENABLE_MEDIA_FEATURES` (media manager) + +### Production Deployment +- **Tunneling:** Pangolin with Newt container (Cloudflare alternative) +- **SSL/TLS:** Handled by tunnel provider (Pangolin/Cloudflare) +- **Docker Networking:** All containers share `changemaker-lite` bridge network, reference by container name +- **Monitoring:** Enable with `docker compose --profile monitoring up -d` +- **Backups:** Run `./scripts/backup.sh` (PostgreSQL + Listmonk + uploads, optional S3 upload) + +#### Production CORS Configuration + +When deploying to a production domain via Pangolin tunnel, you MUST update the `.env` file to include the production domain in `CORS_ORIGINS`: + +```bash +# Example for betteredmonton.org +CORS_ORIGINS=http://app.betteredmonton.org,https://app.betteredmonton.org,http://localhost:3000,http://localhost + +# Also set production mode +NODE_ENV=production +``` + +Without this, API requests from the production domain will fail CORS validation. After updating `.env`, restart the API container: + +```bash +docker compose restart api +``` + +--- + +## Troubleshooting + +### Production 403/302 Errors - Pangolin Resources + +**Symptom:** All API endpoints return 302 redirects to Pangolin authentication page, or 403 Forbidden errors. + +**Root Cause:** Pangolin tunnel resources are configured with authentication enabled (default behavior). + +**Fix:** Log in to your Pangolin dashboard and edit each resource: +1. Navigate to **Resources** → **Public** +2. For each resource (app, api, media, docs, etc.), click **Edit** +3. Change **Authentication** setting to **"Not Protected"** (or "Public Access"/"No Authentication") +4. Save changes + +**Critical resources to fix first:** +- `api.betteredmonton.org` - Main API (all endpoints fail without this) +- `app.betteredmonton.org` - Admin GUI + public pages +- `media.betteredmonton.org` - Media API + +**Verification:** +```bash +# Should return JSON, NOT a 302 redirect +curl https://api.betteredmonton.org/api/health +``` + +**See Also:** `PRODUCTION_403_FIX.md` for detailed step-by-step instructions. + +### CORS Errors in Production + +**Symptom:** Browser console shows CORS errors when accessing production domain. + +**Fix:** Add production domain to `CORS_ORIGINS` in `.env` file (see Production CORS Configuration above). + +### API Works Locally But Not Via Tunnel + +Check in order: +1. **Newt container running:** `docker compose ps newt` +2. **Newt connected:** `docker compose logs newt --tail 50` (should show successful connection) +3. **Environment variables set:** `PANGOLIN_SITE_ID`, `PANGOLIN_NEWT_ID`, `PANGOLIN_NEWT_SECRET` in `.env` +4. **Pangolin resources configured:** All resources set to "Not Protected" +5. **Nginx running:** `docker compose ps nginx` + +### Database Connection Failures + +**Symptom:** API logs show database connection errors. + +**Fix:** +1. Check PostgreSQL container: `docker compose ps v2-postgres` +2. Verify `DATABASE_URL` in `.env` matches container name and port +3. Check PostgreSQL logs: `docker compose logs v2-postgres --tail 50` +4. Test connection: `docker compose exec api npx prisma db execute --stdin <<< "SELECT 1"` + +### Redis Connection Failures + +**Symptom:** API logs show Redis connection errors, rate limiting doesn't work. + +**Fix:** +1. Check Redis container: `docker compose ps redis-changemaker` +2. Verify `REDIS_PASSWORD` matches in `.env` and `REDIS_URL` format +3. Check Redis logs: `docker compose logs redis-changemaker --tail 50` +4. Test connection: `docker compose exec redis-changemaker redis-cli -a $REDIS_PASSWORD ping` --- ## V1 Reference (Legacy) -V1 code is preserved in `influence/` and `map/` directories and backed up in `docker-compose.v1.yml`. - -### V1 Architecture - -Two independent Express.js apps using NocoDB REST API as data layer: - -- **Influence** (`influence/app/`, port 3333) — Postal code → representative lookup, email campaigns, response tracking -- **Map** (`map/app/`, port 3000) — Leaflet.js map, volunteer shifts, walk sheets, QR codes - -Both apps use: session-based auth (Redis-backed), bcryptjs passwords, Bull job queues, NocoDB REST API (not direct DB). - -### V1 Express App Structure -``` -app/ -├── server.js # Entry point, middleware stack -├── config/ # Environment-based configuration -├── routes/ # Express route definitions -├── controllers/ # Business logic -├── services/ # External integrations (nocodb.js, email.js, listmonk.js) -├── middleware/ # auth.js, csrf.js, rateLimiter.js -├── utils/ # logger.js, metrics.js, validators.js -├── public/ # Static assets -└── templates/ # Server-rendered HTML templates -``` - -### V1 Commands -```bash -cd influence && cp example.env .env -./scripts/build-nocodb.sh # Initialize NocoDB tables -docker compose up -d -docker compose exec influence-app npm test # Run Jest tests - -cd map && cp example.env .env -./build-nocodb.sh # Initialize NocoDB tables -docker compose up -d -``` - -### V1 Build Scripts -- `config.sh` — Interactive wizard that generates `.env` with secure random passwords -- `start-production.sh` — Installs cloudflared, creates tunnel, configures DNS -- `map/build-nocodb.sh` and `influence/scripts/build-nocodb.sh` — Create NocoDB schema + seed data -- `reset-site.sh` — Resets MkDocs to baseline - -### V1 Documentation -- `influence/README.MD` — Features, config, campaign management, email testing -- `influence/files-explainer.md` — File-by-file code documentation +V1 code archived in `influence/`, `map/`, and `docker-compose.v1.yml`. Two independent Express apps using NocoDB REST API. See individual README files for V1 documentation: +- `influence/README.MD` — Features, config, campaign management - `map/README.md` — Features, config, setup instructions -- `map/files-explainer.md` — File-by-file code documentation +- Both use session-based auth, bcryptjs passwords, Bull job queues --- ## Key Configuration Files -| File | Purpose | -|------|---------| -| `docker-compose.yml` | V2 orchestration (all services) | -| `docker-compose.v1.yml` | V1 backup | -| `.env` / `.env.example` | Environment variables (never committed) | -| `api/prisma/schema.prisma` | Database schema | -| `nginx/` | Reverse proxy configuration | -| `configs/prometheus/prometheus.yml` | Monitoring scrape targets | -| `configs/cloudflare/tunnel-config.yml` | Production ingress routing | +### Infrastructure +- `docker-compose.yml` — V2 orchestration (20+ services, monitoring profile) +- `.env` / `.env.example` — Environment variables (100+ vars) -## Networking +### Database +- `api/prisma/schema.prisma` — Main schema (30+ Prisma models) +- `api/drizzle.config.ts` — Drizzle config for media tables +- `api/prisma/seed.ts` — Database seeding -All containers share the `changemaker-lite` bridge network and reference each other by container name. Production uses Cloudflare tunnel with ingress rules mapping `*.cmlite.org` subdomains. +### Nginx +- `nginx/nginx.conf` — Global config + security headers +- `nginx/conf.d/default.conf` — Subdomain routing (12+ subdomains) +- `nginx/conf.d/api.conf` — API reverse proxy (Express + Fastify) +- `nginx/conf.d/services.conf` — Service proxies + +### Monitoring +- `configs/prometheus/prometheus.yml` — Scrape targets + global config +- `configs/prometheus/alerts.yml` — Alert rules (12 rules) +- `configs/grafana/` — 3 pre-configured dashboards +- `configs/alertmanager/alertmanager.yml` — Alert routing + +### Documentation +- `CLAUDE.md` — Project-wide instructions (this file) +- `V2_PLAN.md` — Full 14-phase roadmap +- `SECURITY_AUDIT_2025-02-11.md` — Security audit report +- `MEMORY.md` — Development patterns and gotchas diff --git a/NARguide.pdf b/NARguide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f96c12f286683a9402c5448b9b497fba0d7dd430 GIT binary patch literal 363524 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%0AKR=282M!M#zqjl5C7M$Ig= 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

@IQ+t>sn;%ZGkA8yd@a`6?vV-J$V;0W;k@`h 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 CX`u!H literal 0 HcmV?d00001 diff --git a/V2_PLAN.md b/V2_PLAN.md index 27998296..a561f9b6 100644 --- a/V2_PLAN.md +++ b/V2_PLAN.md @@ -364,13 +364,22 @@ changemaker.lite/ --- -### Phase 15: Testing + Polish [ ] +### Phase 15: Testing + Polish [IN PROGRESS] +**Media Admin Features (Feb 2026) [COMPLETE]:** +- [x] Quick Action Buttons — Edit, preview, analytics, schedule, duplicate, preview links (24h JWT), reset analytics +- [x] Scheduled Publishing — BullMQ job queue, timezone support (11 zones), calendar view, publish/unpublish automation +- [x] Video Analytics — Views, watch time, completion rate, traffic sources, registered viewers tracking +- [x] Privacy & Compliance — IP hashing (SHA-256), user agent truncation, 90-day retention, GDPR-compliant +- [x] UI/UX Polish — Keyboard shortcuts (E/P/A/S), hover overlays, skeleton loading, error handling, mobile responsive +- [x] Documentation — MEDIA_ADMIN_FEATURES.md, VIDEO_ANALYTICS_GUIDE.md, api/src/modules/media/README.md + +**Remaining Testing + Polish:** - [ ] API integration tests (Jest/Vitest) - [ ] Admin E2E tests - [ ] Performance optimization -- [ ] Security audit -- [ ] Documentation updates +- [ ] Security audit (auth-security-reviewer for media features) +- [ ] UI design review (ui-design-critic for media components) ### PHASE 1: Extras - [ ] Add apache answers diff --git a/admin/package-lock.json b/admin/package-lock.json index 90eb7913..4e7f0d06 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -11,9 +11,11 @@ "@ant-design/icons": "^5.6.0", "@ant-design/v5-patch-for-react-19": "^1.0.3", "@monaco-editor/react": "^4.7.0", + "@types/dompurify": "^3.2.0", "antd": "^5.23.0", "axios": "^1.7.9", "dayjs": "^1.11.19", + "dompurify": "^3.3.1", "grapesjs": "^0.22.14", "grapesjs-blocks-basic": "^1.0.2", "grapesjs-component-countdown": "^1.0.2", @@ -26,11 +28,14 @@ "grapesjs-tabs": "^1.0.6", "grapesjs-touch": "^0.1.1", "grapesjs-typed": "^2.0.1", + "jwt-decode": "^4.0.0", "leaflet": "^1.9.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-leaflet": "^5.0.0", + "react-leaflet-cluster": "^4.0.0", "react-router-dom": "^7.1.1", + "recharts": "^3.7.0", "yaml": "^2.8.2", "zustand": "^5.0.3" }, @@ -901,7 +906,6 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", - "license": "MIT", "dependencies": { "@monaco-editor/loader": "^1.5.0" }, @@ -1059,6 +1063,40 @@ "react-dom": "^19.0.0" } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", + "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", + "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -1390,6 +1428,16 @@ "win32" ] }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1440,6 +1488,69 @@ "@types/underscore": "*" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/dompurify": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.2.0.tgz", + "integrity": "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==", + "deprecated": "This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.", + "dependencies": { + "dompurify": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1502,14 +1613,18 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "optional": true, - "peer": true + "optional": true }, "node_modules/@types/underscore": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.13.0.tgz", "integrity": "sha512-L6LBgy1f0EFQZ+7uSA57+n2g/s4Qs5r06Vwrwn0/nuK1de+adz00NWaztRQ30aEqw5qOaWbPI8u2cGQ52lj6VA==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==" + }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", @@ -1706,6 +1821,14 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/codemirror": { "version": "5.63.0", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.0.tgz", @@ -1763,6 +1886,116 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, "node_modules/dayjs": { "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", @@ -1785,6 +2018,11 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1794,10 +2032,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", - "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", - "peer": true, + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -1862,6 +2099,11 @@ "node": ">= 0.4" } }, + "node_modules/es-toolkit": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", + "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==" + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -1912,6 +2154,11 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -2162,6 +2409,23 @@ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" }, + "node_modules/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2200,12 +2464,29 @@ "node": ">=6" } }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/leaflet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", "license": "BSD-2-Clause" }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2264,6 +2545,15 @@ "marked": "14.0.0" } }, + "node_modules/monaco-editor/node_modules/dompurify": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "peer": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2960,6 +3250,43 @@ "react-dom": "^19.0.0" } }, + "node_modules/react-leaflet-cluster": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/react-leaflet-cluster/-/react-leaflet-cluster-4.0.0.tgz", + "integrity": "sha512-Lu75+KOu2ruGyAx8LoCQvlHuw+3CLLJQGEoSk01ymsDN/YnCiRV6ChkpsvaruVyYBPzUHwiskFw4Jo7WHj5qNw==", + "dependencies": { + "leaflet.markercluster": "^1.5.3" + }, + "peerDependencies": { + "@react-leaflet/core": "^3.0.0", + "leaflet": "^1.9.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-leaflet": "^5.0.0" + } + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", @@ -3005,6 +3332,50 @@ "react-dom": ">=18" } }, + "node_modules/recharts": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.7.0.tgz", + "integrity": "sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew==", + "dependencies": { + "@reduxjs/toolkit": "1.x.x || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -3113,6 +3484,11 @@ "node": ">=12.22" } }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -3182,6 +3558,35 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", diff --git a/admin/package.json b/admin/package.json index 2d410932..8e9ae309 100644 --- a/admin/package.json +++ b/admin/package.json @@ -12,9 +12,11 @@ "@ant-design/icons": "^5.6.0", "@ant-design/v5-patch-for-react-19": "^1.0.3", "@monaco-editor/react": "^4.7.0", + "@types/dompurify": "^3.2.0", "antd": "^5.23.0", "axios": "^1.7.9", "dayjs": "^1.11.19", + "dompurify": "^3.3.1", "grapesjs": "^0.22.14", "grapesjs-blocks-basic": "^1.0.2", "grapesjs-component-countdown": "^1.0.2", @@ -27,11 +29,14 @@ "grapesjs-tabs": "^1.0.6", "grapesjs-touch": "^0.1.1", "grapesjs-typed": "^2.0.1", + "jwt-decode": "^4.0.0", "leaflet": "^1.9.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-leaflet": "^5.0.0", + "react-leaflet-cluster": "^4.0.0", "react-router-dom": "^7.1.1", + "recharts": "^3.7.0", "yaml": "^2.8.2", "zustand": "^5.0.3" }, diff --git a/admin/src/App.tsx b/admin/src/App.tsx index fba4fe45..6267838f 100644 --- a/admin/src/App.tsx +++ b/admin/src/App.tsx @@ -8,14 +8,17 @@ import FeatureGate from '@/components/FeatureGate'; import AppLayout from '@/components/AppLayout'; import PublicLayout from '@/components/PublicLayout'; import VolunteerLayout from '@/components/VolunteerLayout'; +import MediaPublicLayout from '@/components/MediaPublicLayout'; import LoginPage from '@/pages/LoginPage'; import DashboardPage from '@/pages/DashboardPage'; import UsersPage from '@/pages/UsersPage'; import CampaignsPage from '@/pages/CampaignsPage'; import RepresentativesPage from '@/pages/RepresentativesPage'; import EmailQueuePage from '@/pages/EmailQueuePage'; +import EmailTemplatesPage from '@/pages/EmailTemplatesPage'; import ResponsesPage from '@/pages/ResponsesPage'; import LocationsPage from '@/pages/LocationsPage'; +import DataQualityDashboardPage from '@/pages/DataQualityDashboardPage'; import CutsPage from '@/pages/CutsPage'; import ShiftsPage from '@/pages/ShiftsPage'; import MapSettingsPage from '@/pages/MapSettingsPage'; @@ -23,7 +26,6 @@ import CutExportPage from '@/pages/CutExportPage'; import CanvassDashboardPage from '@/pages/CanvassDashboardPage'; import ListmonkPage from '@/pages/ListmonkPage'; import LandingPagesPage from '@/pages/LandingPagesPage'; -import PageEditorPage from '@/pages/PageEditorPage'; import DocsPage from '@/pages/DocsPage'; import MkDocsSettingsPage from '@/pages/MkDocsSettingsPage'; import CodeEditorPage from '@/pages/CodeEditorPage'; @@ -31,14 +33,22 @@ import NocoDBPage from '@/pages/NocoDBPage'; import N8nPage from '@/pages/N8nPage'; import GiteaPage from '@/pages/GiteaPage'; import MailHogPage from '@/pages/MailHogPage'; +import MiniQRPage from '@/pages/MiniQRPage'; +import ExcalidrawPage from '@/pages/ExcalidrawPage'; import SettingsPage from '@/pages/SettingsPage'; import PangolinPage from '@/pages/PangolinPage'; +import ObservabilityPage from '@/pages/ObservabilityPage'; +import LibraryPage from '@/pages/media/LibraryPage'; +import AnalyticsDashboardPage from '@/pages/media/AnalyticsDashboardPage'; +import MediaJobsPage from '@/pages/media/MediaJobsPage'; import PublicLandingPage from '@/pages/public/LandingPage'; import CampaignsListPage from '@/pages/public/CampaignsListPage'; import CampaignPage from '@/pages/public/CampaignPage'; import ResponseWallPage from '@/pages/public/ResponseWallPage'; import MapPage from '@/pages/public/MapPage'; import PublicShiftsPage from '@/pages/public/ShiftsPage'; +import MediaGalleryPage from '@/pages/public/MediaGalleryPage'; +import MediaViewerPage from '@/pages/public/MediaViewerPage'; import MyActivityPage from '@/pages/volunteer/MyActivityPage'; import VolunteerShiftsPage from '@/pages/volunteer/VolunteerShiftsPage'; import MyRoutesPage from '@/pages/volunteer/MyRoutesPage'; @@ -126,6 +136,15 @@ export default function App() { } /> } /> + {/* Public Media Gallery (purple theme) — feature-gated */} + }> + } /> + } /> + + } /> + {/* Email link alias for video viewer */} + } /> + {/* Volunteer map — full-screen, default landing page */} } /> - - - - } - /> } /> + + + + } + /> } /> + + + + } + /> + + + + } + /> } /> + + + + } + /> } /> + + + + } + /> } /> + + + + } + /> + + + + } + /> + + + + } + /> } /> diff --git a/admin/src/components/AppLayout.tsx b/admin/src/components/AppLayout.tsx index 2d2e4d65..e4ccb0ca 100644 --- a/admin/src/components/AppLayout.tsx +++ b/admin/src/components/AppLayout.tsx @@ -1,4 +1,4 @@ -import { useState, type ReactNode } from 'react'; +import { useState } from 'react'; import { useNavigate, useLocation, Outlet } from 'react-router-dom'; import { Layout, Menu, Dropdown, Button, Typography, Drawer, Grid, theme } from 'antd'; import { @@ -26,25 +26,27 @@ import { ApiOutlined, BranchesOutlined, CloudServerOutlined, + QrcodeOutlined, + VideoCameraOutlined, + FolderOutlined, + HistoryOutlined, + LineChartOutlined, + BarChartOutlined, + SoundOutlined, + EditOutlined, } from '@ant-design/icons'; import type { MenuProps } from 'antd'; import { useAuthStore } from '@/stores/auth.store'; import { useSettingsStore } from '@/stores/settings.store'; +import type { PageHeaderConfig, AppOutletContext } from '@/types/api'; + +// Re-export for backward compatibility +export type { PageHeaderConfig, AppOutletContext }; const { Header, Sider, Content } = Layout; const { Text } = Typography; const { useBreakpoint } = Grid; -export interface PageHeaderConfig { - title?: string; - actions?: ReactNode; - fullBleed?: boolean; -} - -export interface AppOutletContext { - setPageHeader: (config: PageHeaderConfig | null) => void; -} - function buildMenuItems(settings: import('@/types/api').SiteSettings | null): MenuProps['items'] { const items: MenuProps['items'] = [ { @@ -70,9 +72,13 @@ function buildMenuItems(settings: import('@/types/api').SiteSettings | null): Me if (settings?.enableNewsletter !== false) { items.push({ - key: '/app/listmonk', + key: 'broadcast-submenu', icon: , - label: 'Newsletter', + label: 'Broadcast', + children: [ + { key: '/app/listmonk', icon: , label: 'Listmonk' }, + { key: '/app/email-templates', icon: , label: 'Email Templates' }, + ], }); } @@ -97,7 +103,8 @@ function buildMenuItems(settings: import('@/types/api').SiteSettings | null): Me icon: , label: 'Map', children: [ - { key: '/app/map', label: 'Locations' }, + { key: '/app/map', icon: , label: 'Locations' }, + { key: '/app/map/data-quality', icon: , label: 'Data Quality' }, { key: '/app/map/shifts', icon: , label: 'Shifts' }, { key: '/app/map/cuts', icon: , label: 'Cuts' }, { key: '/app/map/canvass', icon: , label: 'Canvassing' }, @@ -106,6 +113,18 @@ function buildMenuItems(settings: import('@/types/api').SiteSettings | null): Me }); } + if (settings?.enableMediaFeatures !== false) { + items.push({ + key: 'media-submenu', + icon: , + label: 'Media Library', + children: [ + { key: '/app/media/library', icon: , label: 'Videos' }, + { key: '/app/media/jobs', icon: , label: 'Processing Jobs' }, + ], + }); + } + items.push({ key: 'services-submenu', icon: , @@ -115,7 +134,10 @@ function buildMenuItems(settings: import('@/types/api').SiteSettings | null): Me { key: '/app/services/n8n', icon: , label: 'Workflows' }, { key: '/app/services/gitea', icon: , label: 'Git' }, { key: '/app/services/mailhog', icon: , label: 'MailHog' }, + { key: '/app/services/miniqr', icon: , label: 'QR Codes' }, + { key: '/app/services/excalidraw', icon: , label: 'Whiteboard' }, { key: '/app/tunnel', icon: , label: 'Tunnel' }, + { key: '/app/observability', icon: , label: 'Observability' }, ], }); @@ -230,7 +252,6 @@ export default function AppLayout() { theme="dark" mode="inline" selectedKeys={[selectedKey]} - defaultOpenKeys={['influence-submenu', 'map-submenu', 'web-submenu', 'services-submenu']} items={menuItems} onClick={handleMenuClick} /> @@ -304,6 +325,22 @@ export default function AppLayout() { > {!isMobile && 'Canvass'} + + `; + case 'video': { + const videoId = defaults.videoId || 'PLACEHOLDER'; + const playerType = defaults.playerType || 'standard'; + const width = defaults.width || '100%'; + const height = defaults.height || 'auto'; + + // Generate placeholder with data attributes for hydration + return ` +

+
+
+
+ + + +

Video Player

+

ID: ${videoId}

+

${playerType === 'advanced' ? 'Advanced Player (with reactions)' : 'Standard HTML5 Player'}

+

Video will render on published page

+
+
+
+
`; + } default: return `

Custom block: ${type}

`; } diff --git a/admin/src/components/MediaPublicLayout.tsx b/admin/src/components/MediaPublicLayout.tsx new file mode 100644 index 00000000..5e5bd52d --- /dev/null +++ b/admin/src/components/MediaPublicLayout.tsx @@ -0,0 +1,104 @@ +import { useEffect, useState } from 'react'; +import { ConfigProvider, Layout, theme, Grid } from 'antd'; +import { Outlet } from 'react-router-dom'; +import MediaSidebar from '@/components/media/MediaSidebar'; +import MediaBottomNav from '@/components/media/MediaBottomNav'; + +const { useBreakpoint } = Grid; + +export default function MediaPublicLayout() { + // Purple theme tokens matching media-manager aesthetic + const colorPrimary = '#9333ea'; // purple-600 + const colorBgBase = '#0d0d12'; // nearly black + const colorBgContainer = '#18181b'; // zinc-900 + const colorBgElevated = '#27272a'; // zinc-800 + + const screens = useBreakpoint(); + const isMobile = !screens.md; // < 768px + + // Get sidebar collapse state from localStorage + const [sidebarCollapsed, setSidebarCollapsed] = useState(() => { + const saved = localStorage.getItem('media_sidebar_collapsed'); + return saved ? JSON.parse(saved) : false; + }); + + // Listen for sidebar collapse state changes + useEffect(() => { + const handleStorage = () => { + const saved = localStorage.getItem('media_sidebar_collapsed'); + if (saved) { + setSidebarCollapsed(JSON.parse(saved)); + } + }; + + window.addEventListener('storage', handleStorage); + // Also poll localStorage every 100ms to catch same-window changes + const interval = setInterval(handleStorage, 100); + + return () => { + window.removeEventListener('storage', handleStorage); + clearInterval(interval); + }; + }, []); + + // Set document title for media pages + useEffect(() => { + document.title = 'Media Gallery | Changemaker Lite'; + }, []); + + // Calculate main content left margin based on sidebar state and screen size + const mainContentMarginLeft = isMobile ? 0 : sidebarCollapsed ? 64 : 256; + + return ( + + + {/* Desktop: Show sidebar, Mobile: Hide */} + {!isMobile && } + + {/* Main content area */} +
+
+ +
+
+ + {/* Mobile: Show bottom nav, Desktop: Hide */} + +
+
+ ); +} diff --git a/admin/src/components/PublicLayout.tsx b/admin/src/components/PublicLayout.tsx index 780c6535..1492ac8a 100644 --- a/admin/src/components/PublicLayout.tsx +++ b/admin/src/components/PublicLayout.tsx @@ -1,6 +1,7 @@ import { useEffect } from 'react'; -import { ConfigProvider, Layout, Typography, theme } from 'antd'; +import { ConfigProvider, Layout, Typography, theme, Space } from 'antd'; import { Outlet, Link } from 'react-router-dom'; +import { PlayCircleOutlined } from '@ant-design/icons'; import { useSettingsStore } from '@/stores/settings.store'; const { Header, Content, Footer } = Layout; @@ -53,12 +54,13 @@ export default function PublicLayout() { background: headerGradient, display: 'flex', alignItems: 'center', - justifyContent: 'center', + justifyContent: 'space-between', padding: '0 24px', height: 56, borderBottom: 'none', }} > + {/* Left: Logo */} {logoUrl && ( + + {/* Right: Navigation */} + + { + e.currentTarget.style.color = '#fff'; + }} + onMouseLeave={(e) => { + e.currentTarget.style.color = 'rgba(255, 255, 255, 0.85)'; + }} + > + + Media Gallery + + {footerText}
- Return to Main Page + Campaigns + + {' • '} + + Media Gallery
diff --git a/admin/src/components/VolunteerFooterNav.tsx b/admin/src/components/VolunteerFooterNav.tsx index 58746f0d..6ec03912 100644 --- a/admin/src/components/VolunteerFooterNav.tsx +++ b/admin/src/components/VolunteerFooterNav.tsx @@ -5,6 +5,7 @@ import { CalendarOutlined, HistoryOutlined, NodeIndexOutlined, + MenuOutlined, } from '@ant-design/icons'; const NAV_ITEMS = [ @@ -16,9 +17,11 @@ const NAV_ITEMS = [ interface VolunteerFooterNavProps { style?: React.CSSProperties; + onMenuOpen?: () => void; + menuActive?: boolean; } -export default function VolunteerFooterNav({ style }: VolunteerFooterNavProps) { +export default function VolunteerFooterNav({ style, onMenuOpen, menuActive = false }: VolunteerFooterNavProps) { const navigate = useNavigate(); const location = useLocation(); const { token } = theme.useToken(); @@ -47,6 +50,29 @@ export default function VolunteerFooterNav({ style }: VolunteerFooterNavProps) { ...style, }} > + {/* Menu button */} + {onMenuOpen && ( +
+ + + Menu + +
+ )} + {NAV_ITEMS.map(({ key, icon: Icon, label }) => { const isActive = activeKey === key; return ( diff --git a/admin/src/components/canvass/AddLocationDrawer.tsx b/admin/src/components/canvass/AddLocationDrawer.tsx index 89025783..8954353a 100644 --- a/admin/src/components/canvass/AddLocationDrawer.tsx +++ b/admin/src/components/canvass/AddLocationDrawer.tsx @@ -15,6 +15,7 @@ interface AddLocationDrawerProps { userRole: UserRole; sessionId?: string; shiftId?: string; + zIndex?: number; } const outcomeKeys: VisitOutcome[] = [ @@ -35,12 +36,13 @@ export default function AddLocationDrawer({ lat, lng, userRole, - sessionId, - shiftId, + sessionId: _sessionId, + shiftId: _shiftId, + zIndex = 1000, }: AddLocationDrawerProps) { const [form] = Form.useForm(); const { message } = App.useApp(); - const { addLocation, recordVisit, reverseGeocode } = useCanvassStore(); + const { addLocation, reverseGeocode } = useCanvassStore(); const [loading, setLoading] = useState(false); const [geocoding, setGeocoding] = useState(false); const [outcome, setOutcome] = useState(null); @@ -99,24 +101,16 @@ export default function AddLocationDrawer({ if (showDetailFields && notes) locationData.notes = notes; // Create location - const newLoc = await addLocation(locationData); + await addLocation(locationData); // Track event point for location added useTrackingStore.getState().addEventPoint(lat, lng, 'LOCATION_ADDED'); - // Record visit on the new location - await recordVisit({ - locationId: newLoc.id, - outcome, - supportLevel, - signRequested, - signSize, - notes: notes || undefined, - sessionId, - shiftId, - }); + // TODO: Record visit on the new address + // Need to get addressId from created location (returned from addLocation above) + // For now, just add the location - visit can be recorded separately - message.success('Location added & visit recorded'); + message.success('Location added successfully'); onClose(); } catch { message.error('Failed to add location'); @@ -131,6 +125,7 @@ export default function AddLocationDrawer({ open={open} onClose={onClose} height="auto" + zIndex={zIndex} forceRender styles={{ body: { padding: '12px 16px', maxHeight: '70vh', overflow: 'auto' }, diff --git a/admin/src/components/canvass/AddressSearchOverlay.tsx b/admin/src/components/canvass/AddressSearchOverlay.tsx index 7729d765..49b10276 100644 --- a/admin/src/components/canvass/AddressSearchOverlay.tsx +++ b/admin/src/components/canvass/AddressSearchOverlay.tsx @@ -1,20 +1,23 @@ import { useState, useRef } from 'react'; -import { Input, Button, App } from 'antd'; +import { Input, Button, App, Grid } from 'antd'; import type { InputRef } from 'antd'; import { SearchOutlined, CloseOutlined } from '@ant-design/icons'; import { useCanvassStore } from '@/stores/canvass.store'; interface Props { onFlyTo: (lat: number, lng: number) => void; + style?: React.CSSProperties; } -export default function AddressSearchOverlay({ onFlyTo }: Props) { +export default function AddressSearchOverlay({ onFlyTo, style }: Props) { const [expanded, setExpanded] = useState(false); const [searching, setSearching] = useState(false); const [query, setQuery] = useState(''); const inputRef = useRef(null); const { message } = App.useApp(); const { geocodeSearch } = useCanvassStore(); + const screens = Grid.useBreakpoint(); + const isMobile = !screens.md; const handleSearch = async () => { if (!query.trim()) return; @@ -37,10 +40,7 @@ export default function AddressSearchOverlay({ onFlyTo }: Props) { onClick={() => setExpanded(true)} title="Search address" style={{ - position: 'absolute', - top: 12, - left: 60, - zIndex: 1000, + ...style, width: 40, height: 40, borderRadius: 8, @@ -63,10 +63,7 @@ export default function AddressSearchOverlay({ onFlyTo }: Props) { return (
setQuery(e.target.value)} onPressEnter={handleSearch} size="small" - style={{ width: 200, background: 'rgba(255,255,255,0.1)', border: 'none', color: '#fff' }} + style={{ + width: isMobile ? '100%' : 200, + maxWidth: isMobile ? '100%' : 200, + background: 'rgba(255,255,255,0.1)', + border: 'none', + color: '#fff', + }} autoFocus />
+ ); + } + + return ( + <> + {/* Single compact control bar */} +
+
+ {/* Left group: Collapse */} +
+ } + onClick={() => setCollapsed(true)} + label="Hide controls" + /> +
+ + {/* Center group: Session actions (if active) */} + {sessionActive && ( +
+ } + onClick={onNextDoor} + label="Next door" + type="primary" + /> + } + onClick={onToggleRoute} + label="Toggle route" + type={routeVisible ? 'primary' : 'default'} + ghost={routeVisible} + /> +
+ )} + + {/* Center group: Utility buttons */} +
+ } + onClick={() => setShowTiles(!showTiles)} + label="Map tiles" + type={showTiles ? 'primary' : 'default'} + /> + } + onClick={() => setShowSearch(!showSearch)} + label="Search" + type={showSearch ? 'primary' : 'default'} + /> + {cuts.length > 0 && ( + } + onClick={() => setShowCuts(!showCuts)} + label="Cuts" + type={showCuts ? 'primary' : 'default'} + badge={visibleCutIds.size > 0 ? visibleCutIds.size : undefined} + /> + )} + } + onClick={() => setShowLegend(!showLegend)} + label="Legend" + type={showLegend ? 'primary' : 'default'} + /> + {onAddAtCenter && ( + } + onClick={onAddAtCenter} + label="Add location" + /> + )} + {onToggleFullscreen && ( + : } + onClick={onToggleFullscreen} + label={fullscreen ? 'Exit fullscreen' : 'Fullscreen'} + type={fullscreen ? 'primary' : 'default'} + /> + )} +
+ + {/* Right group: GPS + Badge */} +
+ } + onClick={onToggleGps} + label="GPS" + type={gpsFollowing ? 'primary' : 'default'} + ghost={gpsFollowing} + /> + {sessionActive && ( + 0 ? '#27ae60' : '#3498db', + fontSize: 10, + height: 18, + lineHeight: '18px', + padding: '0 5px', + borderRadius: 9, + }} + /> + )} +
+
+
+ + {/* Floating panels */} + + {/* Tile layer popup - vertical stack above button */} + {showTiles && ( + <> + {/* Backdrop to close on tap */} +
setShowTiles(false)} + style={{ + position: 'fixed', + top: 0, + left: 0, + right: 0, + bottom: 0, + zIndex: 1089, + }} + /> + {/* Tile options - vertically stacked */} +
+ {TILE_LAYERS.map((layer) => ( + + ))} +
+ + )} + + {/* Search drawer */} + setShowSearch(false)} + height="auto" + closable={false} + maskClosable + mask={false} + zIndex={1090} + styles={{ + body: { padding: '12px 16px', background: 'rgba(13, 27, 42, 0.98)' }, + wrapper: { top: 'env(safe-area-inset-top)' }, + }} + > + { + onSearchFlyTo(lat, lng); + setShowSearch(false); + }} + style={{ position: 'relative', top: 0, left: 0, right: 0 }} + /> + + + {/* Cuts drawer */} + setShowCuts(false)} + height="auto" + closable={false} + maskClosable + mask={false} + zIndex={1090} + styles={{ + body: { padding: '12px 16px', background: 'rgba(13, 27, 42, 0.98)' }, + wrapper: { top: 'env(safe-area-inset-top)' }, + }} + > + + + + {/* Legend drawer */} + setShowLegend(false)} + height="auto" + closable={false} + maskClosable + mask={false} + zIndex={1090} + styles={{ + body: { padding: '12px 16px', background: 'rgba(13, 27, 42, 0.98)' }, + wrapper: { top: 'env(safe-area-inset-top)' }, + }} + > + + + + ); +} diff --git a/admin/src/components/canvass/CanvassBottomToolbar.tsx b/admin/src/components/canvass/CanvassBottomToolbar.tsx index 7b6125b4..210bb1bc 100644 --- a/admin/src/components/canvass/CanvassBottomToolbar.tsx +++ b/admin/src/components/canvass/CanvassBottomToolbar.tsx @@ -1,3 +1,4 @@ +import { useState } from 'react'; import { Button, Badge } from 'antd'; import { AimOutlined, @@ -9,6 +10,51 @@ import { MenuOutlined, } from '@ant-design/icons'; +interface ToolbarButtonProps { + icon: React.ReactNode; + onClick: () => void; + label: string; + disabled?: boolean; + type?: 'default' | 'primary' | 'text' | 'link' | 'dashed'; + ghost?: boolean; + children?: React.ReactNode; +} + +function ToolbarButton({ + icon, + onClick, + label, + disabled, + type = 'default', + ghost, + children, +}: ToolbarButtonProps) { + const [isPressed, setIsPressed] = useState(false); + + return ( + + ); +} + interface CanvassBottomToolbarProps { visitedCount: number; totalCount: number; @@ -47,7 +93,8 @@ export default function CanvassBottomToolbar({
{onMenuOpen && ( - - + ))} + + ) : ( + // Single unit display +
onAddressClick(addresses[0]!.id)}> +
+ {group.baseAddress} +
+ {addresses[0]?.unitNumber && ( +
+ Unit {addresses[0].unitNumber} +
+ )} + {addresses[0]?.firstName && ( +
+ {addresses[0].firstName} {addresses[0].lastName} +
+ )} + {addresses[0]?.lastVisit ? ( + <> +
+ + {VISIT_OUTCOME_LABELS[addresses[0].lastVisit.outcome]} +
+ {addresses[0].lastVisit.visitorName && ( +
+ by {addresses[0].lastVisit.visitorName} +
+ )} + + ) : ( +
Not visited
+ )} + {addresses[0]?.notes && ( +
+ Note: {addresses[0].notes} +
+ )} +
+ Click to record visit +
+
+ )} +
+ + + ); +} + +// Memoize component to prevent re-renders when props haven't changed +export default React.memo(CanvassMarkerGroup, (prevProps, nextProps) => { + // Only re-render if these specific props change + return ( + prevProps.group.locationId === nextProps.group.locationId && + prevProps.group.addresses === nextProps.group.addresses && + prevProps.selectedAddressId === nextProps.selectedAddressId && + prevProps.onAddressClick === nextProps.onAddressClick + ); +}); diff --git a/admin/src/components/canvass/LocationEditDrawer.tsx b/admin/src/components/canvass/LocationEditDrawer.tsx index 1d13ad8d..f9c8f835 100644 --- a/admin/src/components/canvass/LocationEditDrawer.tsx +++ b/admin/src/components/canvass/LocationEditDrawer.tsx @@ -3,12 +3,12 @@ import { Drawer, Form, Input, Select, Switch, Button, message } from 'antd'; import type { CanvassLocation } from '@/types/canvass'; import type { SupportLevel } from '@/types/api'; import { SUPPORT_LEVEL_LABELS } from '@/types/api'; -import { useCanvassStore } from '@/stores/canvass.store'; interface LocationEditDrawerProps { open: boolean; onClose: () => void; location: CanvassLocation | null; + zIndex?: number; } const supportLevelOptions = (['LEVEL_1', 'LEVEL_2', 'LEVEL_3', 'LEVEL_4'] as SupportLevel[]).map( @@ -19,9 +19,10 @@ export default function LocationEditDrawer({ open, onClose, location, + zIndex = 1000, }: LocationEditDrawerProps) { const [form] = Form.useForm(); - const { updateLocationFields } = useCanvassStore(); + // TODO: Update to work with Address model instead of deprecated CanvassLocation useEffect(() => { if (location && open) { @@ -40,20 +41,16 @@ export default function LocationEditDrawer({ const handleSave = async () => { if (!location) return; - try { - const values = await form.validateFields(); - await updateLocationFields(location.id, values); - message.success('Location updated'); - onClose(); - } catch { - message.error('Failed to update location'); - } + message.warning('Location editing temporarily disabled - needs Address model update'); + onClose(); + // TODO: Implement address update API call }; return ( Promise; + onBulkRecord?: (payload: BulkRecordVisitPayload) => Promise; + onNextUnit?: () => void; recording: boolean; userRole?: UserRole; + isMultiUnit?: boolean; + unvisitedCountInBuilding?: number; } const outcomeKeys: VisitOutcome[] = [ @@ -27,18 +33,25 @@ const outcomeKeys: VisitOutcome[] = [ const supportLevelKeys: SupportLevel[] = ['LEVEL_1', 'LEVEL_2', 'LEVEL_3', 'LEVEL_4']; export default function VisitRecordingForm({ - location, + address, sessionId, shiftId, onRecord, + onBulkRecord, + onNextUnit, recording, userRole, + isMultiUnit = false, + unvisitedCountInBuilding = 0, }: VisitRecordingFormProps) { const [outcome, setOutcome] = useState(null); const [supportLevel, setSupportLevel] = useState(undefined); const [signRequested, setSignRequested] = useState(false); const [signSize, setSignSize] = useState(undefined); const [notes, setNotes] = useState(''); + const screens = Grid.useBreakpoint(); + const isMobile = !screens.md; + const isNarrow = !screens.sm; const showDetailFields = userRole !== 'TEMP'; @@ -49,7 +62,7 @@ export default function VisitRecordingForm({ } await onRecord({ - locationId: location.id, + addressId: address.id, // Changed from locationId outcome, supportLevel, signRequested, @@ -59,6 +72,11 @@ export default function VisitRecordingForm({ shiftId, }); + // Auto-advance to next unit if multi-unit + if (isMultiUnit && unvisitedCountInBuilding > 1 && onNextUnit) { + onNextUnit(); + } + // Reset form setOutcome(null); setSupportLevel(undefined); @@ -67,81 +85,166 @@ export default function VisitRecordingForm({ setNotes(''); }; + const handleBulkRecord = (bulkOutcome: 'NOT_HOME' | 'REFUSED' | 'MOVED') => { + if (!onBulkRecord) return; + + Modal.confirm({ + title: ( + + ⚠️ Bulk Record Visit + + ), + icon: , + content: ( +
+

+ This will mark ALL {unvisitedCountInBuilding} unvisited units in this building as: +

+

+ {bulkOutcome.replace(/_/g, ' ')} +

+

+ This action will record {unvisitedCountInBuilding} separate visit entries and cannot be easily undone. +

+
+ ), + okText: `Record ${unvisitedCountInBuilding} Visits`, + okType: 'danger', + okButtonProps: { danger: true }, + cancelText: 'Cancel', + onOk: async () => { + await onBulkRecord({ + locationId: address.location.id, + outcome: bulkOutcome, + notes, + sessionId, + shiftId, + }); + }, + }); + }; + return (
- - {location.address || 'Unknown Address'} - {location.unitNumber && ` #${location.unitNumber}`} - - - {location.firstName && ( - - {location.firstName} {location.lastName} + {address.firstName && ( + + {address.firstName} {address.lastName} )} - - Outcome + {/* Building notes for multi-unit */} + {address.location.buildingNotes && ( + + } + type="info" + showIcon + banner + closable + style={{ marginBottom: 12, fontSize: 11 }} + /> + )} + + + Visit Outcome -
+ {outcomeKeys.map((key) => { const color = VISIT_OUTCOME_COLORS[key]; const selected = outcome === key; return ( - + + ); })} -
+ {showDetailFields && outcome === 'SPOKE_WITH' && ( <> - + Support Level - + {supportLevelKeys.map((key) => ( - + +
+ +
+ {SUPPORT_LEVEL_LABELS[key]} +
+
+ ))} -
-
- {supportLevel && ( - - {SUPPORT_LEVEL_LABELS[supportLevel]} - - )} -
+ - - Sign + + Sign Request + + + + {/* Bulk record and next unit buttons for multi-unit */} + {isMultiUnit && unvisitedCountInBuilding > 1 && ( + + {/* Bulk record dropdown */} + {onBulkRecord && ( + + handleBulkRecord('NOT_HOME'), + }, + { + key: 'REFUSED', + label: `All Refused (${unvisitedCountInBuilding})`, + onClick: () => handleBulkRecord('REFUSED'), + }, + { + key: 'MOVED', + label: `All Moved (${unvisitedCountInBuilding})`, + onClick: () => handleBulkRecord('MOVED'), + }, + ], + }} + > + + + + )} + + {/* Next unit button */} + {onNextUnit && ( + + + + )} + + )} +
); } diff --git a/admin/src/components/canvass/VolunteerMapDrawer.tsx b/admin/src/components/canvass/VolunteerMapDrawer.tsx index 99b88c1e..09ba9e7a 100644 --- a/admin/src/components/canvass/VolunteerMapDrawer.tsx +++ b/admin/src/components/canvass/VolunteerMapDrawer.tsx @@ -1,12 +1,16 @@ import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Drawer, Typography, Button, Select, Statistic, Space, Divider, List } from 'antd'; +import { Drawer, Typography, Button, Select, Statistic, Space, Divider, List, Grid, Alert } from 'antd'; import { HistoryOutlined, LogoutOutlined, PlayCircleOutlined, AimOutlined, + StopOutlined, + ClockCircleOutlined, + CloseOutlined, } from '@ant-design/icons'; +import SessionTimer from './SessionTimer'; import { api } from '@/lib/api'; import { useAuthStore } from '@/stores/auth.store'; import type { MyAssignment, MyCanvassStats } from '@/types/canvass'; @@ -15,21 +19,35 @@ import type { PublicCut } from '@/types/api'; interface VolunteerMapDrawerProps { open: boolean; onClose: () => void; + drawerBodyRef?: React.RefObject; cuts: PublicCut[]; onStartSession: (cutId: string, shiftId?: string) => void; + sessionActive?: boolean; + sessionCutName?: string; + sessionStartedAt?: string; + onEndSession?: () => void; + endingSession?: boolean; } export default function VolunteerMapDrawer({ open, onClose, + drawerBodyRef, cuts, onStartSession, + sessionActive = false, + sessionCutName, + sessionStartedAt, + onEndSession, + endingSession = false, }: VolunteerMapDrawerProps) { const navigate = useNavigate(); const { user, logout } = useAuthStore(); const [stats, setStats] = useState(null); const [assignments, setAssignments] = useState([]); const [freeCutId, setFreeCutId] = useState(null); + const screens = Grid.useBreakpoint(); + const isMobile = !screens.md; useEffect(() => { if (!open) return; @@ -45,15 +63,93 @@ export default function VolunteerMapDrawer({ return ( +
+ {/* Header with drag handle and close button */} +
+ {/* Drag handle at top center */} +
+ + {/* Close button at top right */} +
+ + {/* Active session alert */} + {sessionActive && sessionCutName && ( + <> + + + Active Session: {sessionCutName} + + {sessionStartedAt && ( + + + + + )} + + } + type="info" + showIcon={false} + action={ + onEndSession && ( + + ) + } + style={{ marginBottom: 16 }} + /> + + + )} + {user?.name || user?.email || 'Volunteer'} @@ -71,8 +167,8 @@ export default function VolunteerMapDrawer({ - {/* Assignments */} - {assignments.length > 0 && ( + {/* Assignments (hidden when session active) */} + {!sessionActive && assignments.length > 0 && ( <> My Assignments @@ -111,28 +207,32 @@ export default function VolunteerMapDrawer({ )} - {/* Free session — pick a cut */} - - Start Session (Any Cut) - - - ({ label: c.name, value: c.id }))} + allowClear + /> + + + + )} {/* Navigation links */} +
); } diff --git a/admin/src/components/canvass/VolunteerMapHeader.tsx b/admin/src/components/canvass/VolunteerMapHeader.tsx index 8726018b..0b449706 100644 --- a/admin/src/components/canvass/VolunteerMapHeader.tsx +++ b/admin/src/components/canvass/VolunteerMapHeader.tsx @@ -26,7 +26,8 @@ export default function VolunteerSessionBar({
= { + UNVISITED: 1, // Highest priority - if any address unvisited, show gray + COME_BACK_LATER: 2, + NOT_HOME: 3, + SPOKE_WITH: 4, + LEFT_LITERATURE: 5, + REFUSED: 6, + ALREADY_VOTED: 7, + MOVED: 8, // Lowest priority +}; + +const UNVISITED_COLOR = '#95a5a6'; // Gray + +// Cluster metadata cache to avoid repeated calculations +interface ClusterMetadata { + totalAddresses: number; + hasUnvisited: boolean; + outcomeCounts: Record; + dominantColor: string; +} + +/** + * Creates cluster metadata from marker group with single pass computation. + * Calculates total addresses, visit status, outcome counts, and dominant color. + * + * @param markers - Array of Leaflet markers in the cluster + * @returns Cluster metadata with all computed values + */ +function computeClusterMetadata(markers: L.Marker[]): ClusterMetadata { + let totalAddresses = 0; + let hasUnvisited = false; + const outcomeCounts: Record = { + NOT_HOME: 0, + REFUSED: 0, + MOVED: 0, + ALREADY_VOTED: 0, + SPOKE_WITH: 0, + LEFT_LITERATURE: 0, + COME_BACK_LATER: 0, + }; + + for (const marker of markers) { + const group = (marker.options as any).addressGroup as AddressGroup | undefined; + if (!group) continue; + + totalAddresses += group.addresses.length; + + for (const address of group.addresses) { + if (!address.lastVisit) { + hasUnvisited = true; + } else { + outcomeCounts[address.lastVisit.outcome]++; + } + } + } + + // Calculate dominant color + let dominantColor = UNVISITED_COLOR; + if (hasUnvisited) { + dominantColor = UNVISITED_COLOR; + } else { + let highestPriority = Infinity; + for (const [outcome, count] of Object.entries(outcomeCounts)) { + if (count > 0) { + const priority = OUTCOME_PRIORITY[outcome as VisitOutcome]; + if (priority < highestPriority) { + highestPriority = priority; + dominantColor = VISIT_OUTCOME_COLORS[outcome as VisitOutcome]; + } + } + } + } + + return { totalAddresses, hasUnvisited, outcomeCounts, dominantColor }; +} + +/** + * Determines the dominant outcome color for a cluster of markers. + * Priority: Unvisited > Come Back Later > Not Home > Spoke With > etc. + * + * @param markers - Array of Leaflet markers in the cluster + * @returns Hex color code for the cluster icon + */ +export function getClusterColor(markers: L.Marker[]): string { + // Compute once, return color + const metadata = computeClusterMetadata(markers); + return metadata.dominantColor; +} + +/** + * Creates a custom cluster icon showing total address count and dominant outcome color. + * + * @param cluster - Leaflet marker cluster group + * @returns Custom DivIcon for the cluster + */ +export function createClusterIcon(cluster: any): L.DivIcon { + const markers = cluster.getAllChildMarkers(); + + // Single pass computation - calculates all metadata at once + const metadata = computeClusterMetadata(markers); + + // Generate circular badge HTML + const html = ` +
+ ${metadata.totalAddresses} +
+ `; + + return L.divIcon({ + html, + className: 'marker-cluster-custom', + iconSize: [40, 40], + }); +} + +/** + * Configuration for MarkerClusterGroup component. + * Optimized for performance and UX with address canvassing. + */ +export const CLUSTER_CONFIG = { + maxClusterRadius: 50, // 50px clustering radius + disableClusteringAtZoom: 18, // Disable at street zoom level (buildings clearly visible) + spiderfyOnMaxZoom: false, // Zoom to bounds instead of spider + showCoverageOnHover: false, // No polygon on hover (reduces visual clutter) + zoomToBoundsOnClick: true, // Click cluster → zoom in + animate: true, // Smooth zoom/pan animations + animateAddingMarkers: false, // Skip animation when adding bulk markers (performance) + removeOutsideVisibleBounds: true, // Remove offscreen markers from DOM (memory optimization) + chunkedLoading: true, // Load markers in chunks to prevent UI freeze +}; diff --git a/admin/src/components/email-templates/EmailTemplateEditor.tsx b/admin/src/components/email-templates/EmailTemplateEditor.tsx new file mode 100644 index 00000000..8b23c88a --- /dev/null +++ b/admin/src/components/email-templates/EmailTemplateEditor.tsx @@ -0,0 +1,481 @@ +import { useState, useEffect, useCallback } from 'react'; +import { useOutletContext } from 'react-router-dom'; +import { + Button, + Space, + Typography, + message, + Spin, + Tag, + Grid, + Result, + theme, + Input, + Tabs, + App, +} from 'antd'; +import { + ArrowLeftOutlined, + SaveOutlined, + SendOutlined, + MailOutlined, +} from '@ant-design/icons'; +import Editor from '@monaco-editor/react'; +import { api } from '@/lib/api'; +import type { EmailTemplate, EmailTemplateCategory } from '@/types/api'; +import TestEmailModal from '@/components/email-templates/TestEmailModal'; +import VariablesPanel from '@/components/email-templates/VariablesPanel'; + +const { Text } = Typography; + +interface EmailTemplateEditorProps { + templateId: string; + onClose: () => void; +} + +export default function EmailTemplateEditor({ + templateId, + onClose, +}: EmailTemplateEditorProps) { + const [template, setTemplate] = useState(null); + const [loading, setLoading] = useState(true); + const [saving, setSaving] = useState(false); + const [subjectLine, setSubjectLine] = useState(''); + const [htmlContent, setHtmlContent] = useState(''); + const [textContent, setTextContent] = useState(''); + const [activeEditorTab, setActiveEditorTab] = useState<'html' | 'text'>('html'); + const [activeTab, setActiveTab] = useState('variables'); + const [testModalOpen, setTestModalOpen] = useState(false); + const [sampleData, setSampleData] = useState>({}); + const screens = Grid.useBreakpoint(); + const isMobile = !screens.md; + const { token } = theme.useToken(); + const { modal } = App.useApp(); + const { setPageHeader } = useOutletContext<{ setPageHeader: (config: { fullBleed: boolean } | null) => void }>(); + + // Enable fullBleed mode on mount, disable on unmount + useEffect(() => { + setPageHeader({ fullBleed: true }); + return () => setPageHeader(null); + }, [setPageHeader]); + + useEffect(() => { + const fetchTemplate = async () => { + try { + const { data } = await api.get(`/email-templates/${templateId}`); + setTemplate(data); + setSubjectLine(data.subjectLine); + setHtmlContent(data.htmlContent); + setTextContent(data.textContent); + + // Initialize sample data from variables + const initialSampleData: Record = {}; + data.variables.forEach((v) => { + initialSampleData[v.key] = v.sampleValue || ''; + }); + setSampleData(initialSampleData); + } catch { + message.error('Failed to load template'); + onClose(); + } finally { + setLoading(false); + } + }; + fetchTemplate(); + }, [templateId, onClose]); + + const handleSave = useCallback(async () => { + if (!template) return; + setSaving(true); + try { + const { data: updated } = await api.put(`/email-templates/${templateId}`, { + subjectLine, + htmlContent, + textContent, + }); + setTemplate(updated); + message.success('Template saved successfully'); + } catch (err: unknown) { + const msg = + (err as { response?: { data?: { error?: string } } })?.response?.data?.error || + 'Failed to save template'; + message.error(msg); + } finally { + setSaving(false); + } + }, [template, templateId, subjectLine, htmlContent, textContent]); + + // Keyboard shortcut for saving (Ctrl+S) + useEffect(() => { + const handler = (e: KeyboardEvent) => { + if ((e.ctrlKey || e.metaKey) && e.key === 's') { + e.preventDefault(); + handleSave(); + } + }; + window.addEventListener('keydown', handler); + return () => window.removeEventListener('keydown', handler); + }, [handleSave]); + + const handleClose = () => { + // Check if there are unsaved changes + if (template && ( + subjectLine !== template.subjectLine || + htmlContent !== template.htmlContent || + textContent !== template.textContent + )) { + modal.confirm({ + title: 'Unsaved Changes', + content: 'You have unsaved changes. Are you sure you want to discard them?', + okText: 'Discard', + cancelText: 'Continue Editing', + okType: 'danger', + onOk: () => onClose(), + }); + } else { + onClose(); + } + }; + + const processTemplate = (content: string, data: Record): string => { + let processed = content; + + // Process VIDEO variables first (render as video player in preview) + if (template) { + template.variables.forEach((variable) => { + if (variable.type === 'VIDEO' && variable.videoId) { + const mediaApiUrl = import.meta.env.VITE_MEDIA_API_URL || 'http://localhost:4100'; + const videoHtml = ` +
+ +

+ ⚠️ In actual emails, this will display as a thumbnail with a link +

+
+ `; + processed = processed.replace( + new RegExp(`\\{\\{${variable.key}\\}\\}`, 'g'), + videoHtml + ); + } + }); + } + + // Process TEXT variables + Object.entries(data).forEach(([key, value]) => { + processed = processed.replace(new RegExp(`{{${key}}}`, 'g'), value); + }); + + return processed; + }; + + const getCategoryColor = (category: EmailTemplateCategory): string => { + const colors: Record = { + INFLUENCE: 'blue', + MAP: 'green', + SYSTEM: 'purple', + }; + return colors[category]; + }; + + if (isMobile) { + return ( +
+ + Back to Templates + + } + /> +
+ ); + } + + if (loading || !template) { + return ( +
+ +
+ ); + } + + const processedHtml = processTemplate(htmlContent, sampleData); + const processedText = processTemplate(textContent, sampleData); + + return ( +
+ {/* Top Toolbar with Subject Line */} +
+ + + + +
+ + {/* Main Editor Layout - 60/40 Tabbed */} +
+ {/* Left: Tabbed Editors (60%) */} +
+ setActiveEditorTab(key as 'html' | 'text')} + style={{ flex: 1, display: 'flex', flexDirection: 'column' }} + tabBarStyle={{ margin: 0, paddingLeft: 12, backgroundColor: token.colorBgLayout, minHeight: 38 }} + size="small" + items={[ + { + key: 'html', + label: 'HTML Content', + children: ( + setHtmlContent(value || '')} + options={{ + minimap: { enabled: false }, + fontSize: 14, + wordWrap: 'on', + lineNumbers: 'on', + scrollBeyondLastLine: false, + }} + /> + ), + }, + { + key: 'text', + label: 'Plain Text Content', + children: ( + setTextContent(value || '')} + options={{ + minimap: { enabled: false }, + fontSize: 14, + wordWrap: 'on', + lineNumbers: 'on', + scrollBeyondLastLine: false, + }} + /> + ), + }, + ]} + /> +
+ + {/* Right: Utilities Panel (40%) */} +
+ + ), + }, + { + key: 'htmlPreview', + label: 'HTML Preview', + children: ( + + + + ``` + - Open in browser + - If iframe works here but not in React app, React-specific issue + - If iframe doesn't work here either, service configuration issue + +5. **Verify service URL:** + - Check iframe `src` attribute in code + - Should be `http://qr.cmlite.org` (nginx proxied) + - Try direct URL: `http://localhost:8089` (for testing only) + +--- + +### Problem: Mobile Warning Shows on Desktop + +**Symptoms:** +- Viewing page on desktop computer (large screen) +- Warning "Desktop Recommended" appears instead of iframe +- Screen width clearly > 768px + +**Causes:** +1. Browser zoom level causing incorrect breakpoint detection +2. Browser window width < 768px (narrow window) +3. DevTools open in side-by-side mode reducing width +4. Cached breakpoint state + +**Solutions:** + +1. **Check browser zoom:** + - Press `Ctrl+0` (Windows/Linux) or `Cmd+0` (Mac) to reset zoom to 100% + - Refresh page + +2. **Maximize browser window:** + - Click maximize button or press `F11` for fullscreen + - Ensure window width > 768px + - Refresh page + +3. **Close DevTools or dock to bottom:** + - If DevTools open in side-by-side mode, window width reduced + - Close DevTools (F12) or dock to bottom + - Refresh page + +4. **Check breakpoint detection:** + - Open browser console (F12) + - Type: `window.innerWidth` + - If < 768, window too narrow + - Resize window wider and refresh + +5. **Clear browser cache:** + - Hard refresh: `Ctrl+Shift+R` (Windows/Linux) or `Cmd+Shift+R` (Mac) + - Or clear browser cache entirely + +--- + +### Problem: "Retry" Button Does Nothing + +**Symptoms:** +- Service shows "Offline" +- Click "Retry" button +- Nothing happens, still shows "Offline" + +**Causes:** +1. Service genuinely offline (not a UI bug) +2. Network connectivity issues +3. API endpoint not responding + +**Solutions:** + +1. **Wait before retrying:** + - Service may need time to start + - Wait 30-60 seconds + - Click "Retry" again + +2. **Check Docker containers:** + ```bash + docker compose ps + # Verify mini-qr, nginx, api all show "Up" + + docker compose logs mini-qr + # Check for startup errors + ``` + +3. **Restart services:** + ```bash + docker compose restart mini-qr nginx api + # Wait 30 seconds for services to fully start + # Refresh page and click "Retry" + ``` + +4. **Check network connectivity:** + ```bash + curl http://localhost:8089/health + # Should return 200 OK + + curl http://localhost:4000/api/services/mini-qr/status + # Should return {"online": true} + ``` + +5. **Hard refresh page:** + - `Ctrl+Shift+R` (Windows/Linux) or `Cmd+Shift+R` (Mac) + - Forces fresh status check + +--- + +### Problem: Iframe Content Not Responsive + +**Symptoms:** +- Iframe loads correctly +- Mini QR interface inside iframe is cut off or has horizontal scrollbar +- Cannot see full QR generator form + +**Causes:** +1. Mini QR service not responsive +2. Iframe width constraints +3. Service has minimum width requirement + +**Solutions:** + +1. **Check iframe width:** + - Inspect iframe element in DevTools + - Verify `width: 100%` applied + - Verify parent container has sufficient width + +2. **Remove iframe sandbox (temporarily):** + ```typescript +

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 B*wz35 literal 0 HcmV?d00001 diff --git a/PANGOLIN_NGINX_FIX_SUMMARY.md b/PANGOLIN_NGINX_FIX_SUMMARY.md new file mode 100644 index 00000000..eedff133 --- /dev/null +++ b/PANGOLIN_NGINX_FIX_SUMMARY.md @@ -0,0 +1,181 @@ +# Pangolin Tunnel Management + Nginx Multi-Domain Support - Implementation Summary + +**Date:** 2026-02-15 +**Status:** ✅ COMPLETE + +## Changes Implemented + +### 1. Pangolin Resources Configuration (`configs/pangolin/resources.yml`) + +**Added 2 new resources:** +- Excalidraw (subdomain: `draw`, container: `excalidraw-changemaker`, port: 80) +- MailHog (subdomain: `mail`, container: `mailhog-changemaker`, port: 8025) + +**Fixed Mini QR resource:** +- Container name: `miniqr-changemaker` → `mini-qr` ✅ +- Port: `8089` → `8080` ✅ + +**Total resources:** 14 (up from 12) + +### 2. Nginx Template Updates (`nginx/conf.d/services.conf.template`) + +Updated 6 server blocks to support multi-domain routing: + +| Service | Old server_name | New server_name | +|---------|----------------|-----------------| +| **Gitea** | `git.${DOMAIN}` | `git.cmlite.org git.betteredmonton.org` | +| **n8n** | `n8n.${DOMAIN}` | `n8n.cmlite.org n8n.betteredmonton.org` | +| **Code Server** | `code.${DOMAIN}` | `code.cmlite.org code.betteredmonton.org` | +| **MailHog** | `mail.${DOMAIN}` | `mail.cmlite.org mail.betteredmonton.org` | +| **Mini QR** | `qr.${DOMAIN}` | `qr.cmlite.org qr.betteredmonton.org` | +| **Excalidraw** | `draw.${DOMAIN}` | `draw.cmlite.org draw.betteredmonton.org` | + +**CSP Headers Updated:** +All 6 services now allow iframe embedding from both admin domains: +```nginx +add_header Content-Security-Policy "frame-ancestors 'self' app.cmlite.org app.betteredmonton.org" always; +``` + +### 3. Nginx Container Rebuild + +- Rebuilt nginx image to pick up updated template files +- Restarted nginx container with new configuration +- Verified nginx syntax: ✅ OK + +## Root Cause Analysis + +### Issue 1: Missing Resources +- Excalidraw and MailHog existed in infrastructure but weren't listed in `resources.yml` +- Pangolin page reads from this YAML to display resource status + +### Issue 2: X-Frame-Options Error +- Nginx template used `${DOMAIN}` variable (only substitutes ONE domain from `.env`) +- When accessing via alternate domain, nginx didn't match any server block +- Request fell back to default server with `X-Frame-Options: SAMEORIGIN` +- This blocked iframe embedding + +### Issue 3: Wrong Container Name +- resources.yml referenced `miniqr-changemaker` (doesn't exist) +- Correct name from docker-compose.yml: `mini-qr` + +## Solution Applied + +**Pattern:** Hardcoded dual-domain `server_name` directives (same pattern as NocoDB, Listmonk, Grafana, etc.) + +**Why not template variables?** +- `${DOMAIN}` substitution only supports ONE domain value +- We need BOTH domains for multi-domain production deployment +- Hardcoding is explicit and predictable + +## Verification Results + +### ✅ Nginx Configuration +```bash +$ docker compose exec nginx nginx -t +nginx: the configuration file /etc/nginx/nginx.conf syntax is ok +nginx: configuration file /etc/nginx/nginx.conf test is successful +``` + +### ✅ Multi-Domain Server Blocks +All 6 services verified with both domains in `server_name`: +- Mini QR: `qr.cmlite.org qr.betteredmonton.org` +- Gitea: `git.cmlite.org git.betteredmonton.org` +- n8n: `n8n.cmlite.org n8n.betteredmonton.org` +- Code Server: `code.cmlite.org code.betteredmonton.org` +- MailHog: `mail.cmlite.org mail.betteredmonton.org` +- Excalidraw: `draw.cmlite.org draw.betteredmonton.org` + +### ✅ Resources Count +```bash +$ grep -c "subdomain:" configs/pangolin/resources.yml +14 +``` + +## Testing Instructions + +### 1. Test Pangolin Resources Page +```bash +# Access Pangolin page +# Navigate to http://localhost:3000/app/pangolin +# or https://app.betteredmonton.org/app/pangolin + +# Verify: +# ✅ Resources table shows 14 services +# ✅ "Excalidraw" appears in list +# ✅ "MailHog" appears in list +# ✅ Mini QR container shows as "mini-qr" +``` + +### 2. Test Multi-Domain Access (Production) +```bash +# Test all 6 services respond on both domains +for service in qr git n8n code mail draw; do + for domain in cmlite.org betteredmonton.org; do + echo "Testing ${service}.${domain}..." + curl -I https://${service}.${domain} 2>&1 | grep HTTP | head -1 + done +done + +# Expected: All return HTTP/1.1 200 OK (or 302 for auth-protected) +``` + +### 3. Test Iframe Embedding +```bash +# Test Mini QR iframe from both domains +# 1. Navigate to https://app.betteredmonton.org/app/services/qr +# 2. Check browser console for errors +# 3. Verify Mini QR loads without "Refused to display" error +# 4. Repeat from https://app.cmlite.org/app/services/qr + +# Test other services similarly +``` + +### 4. Verify CSP Headers +```bash +# Check CSP headers include both admin domains +curl -I https://qr.betteredmonton.org 2>&1 | grep Content-Security-Policy + +# Expected: +# Content-Security-Policy: frame-ancestors 'self' app.cmlite.org app.betteredmonton.org +``` + +## Success Criteria + +✅ Pangolin resources list shows 14 services (up from 12) +✅ Excalidraw and MailHog appear in resources table +✅ Mini QR container name corrected to `mini-qr` +✅ Mini QR iframe loads without X-Frame-Options errors +✅ All 6 iframe-embedded services work on both domains +✅ CSP headers allow embedding from both app domains +✅ Nginx config regenerates successfully without syntax errors + +## Files Modified + +1. **configs/pangolin/resources.yml** - Added 2 resources, fixed 1 container name/port +2. **nginx/conf.d/services.conf.template** - Updated 6 server blocks for dual-domain support + +## Next Steps + +1. **Pangolin Setup** (Manual) + - Login to Pangolin dashboard + - Create resources for new services (Excalidraw, MailHog) + - Set authentication to "Not Protected" for public access + - Verify tunnel connectivity + +2. **Production Deployment** + - Rebuild nginx image: `docker compose build nginx` + - Restart nginx: `docker compose up -d nginx` + - Test all services on both domains + - Verify iframe embedding works + +3. **Documentation Updates** + - Update CLAUDE.md with new resource count + - Update MEMORY.md with nginx rebuild requirement for template changes + - Document dual-domain pattern in troubleshooting guide + +## Notes + +- **Important:** Template changes require nginx image rebuild (`docker compose build nginx`) +- **Pattern:** Hardcoded domains prevent future confusion vs. variable substitution +- **Scope:** Frontend already uses `buildServiceUrl()` correctly (no code changes needed) +- **Manual Setup:** Pangolin resources.yml is documentation/reference only (manual setup per MEMORY.md) diff --git a/PRODUCTION_403_FIX.md b/PRODUCTION_403_FIX.md new file mode 100644 index 00000000..720cfc81 --- /dev/null +++ b/PRODUCTION_403_FIX.md @@ -0,0 +1,200 @@ +# Production 403 Errors - Root Cause & Fix + +## Diagnosis Summary + +**Issue:** All API endpoints returning 302 redirects to Pangolin authentication page +**Root Cause:** Pangolin tunnel resources configured with authentication enabled (should be "Not Protected") +**Status:** CORS configuration ✅ FIXED | Pangolin resources ❌ NEEDS MANUAL FIX + +--- + +## What Was Fixed + +### ✅ CORS Configuration (COMPLETED) + +**File:** `/home/bunker-admin/changemaker.lite/.env` + +**Changes applied:** +```bash +# Changed from development to production +NODE_ENV=production + +# Added production domain to CORS whitelist +CORS_ORIGINS=http://app.betteredmonton.org,https://app.betteredmonton.org,http://localhost:3000,http://localhost +``` + +**API container restarted:** ✅ Done + +--- + +## What Still Needs Manual Fix + +### ❌ Pangolin Resource Authentication (REQUIRES MANUAL ACTION) + +**Problem:** Resources are configured with authentication, causing 302 redirects to auth page. + +**Evidence:** +```bash +$ curl -I https://api.betteredmonton.org/api/health +HTTP/2 302 +location: https://pangolin.bnkserve.org/auth/resource/68488f80-b055-41ea-bc1b-0ab905fb8a53?redirect=... +``` + +**Fix Required:** Change authentication setting for ALL Pangolin resources to "Not Protected" + +--- + +## Step-by-Step Fix Instructions + +### 1. Log in to Pangolin Dashboard + +URL: https://api.bnkserve.org (remove `/v1` from API URL) + +### 2. Navigate to Resources + +Dashboard → **Resources** → **Public** + +### 3. Edit Each Resource + +For EACH of these critical resources: +- ✅ **app.betteredmonton.org** (Admin GUI + Public Pages) +- ✅ **api.betteredmonton.org** (Main API) +- ✅ **media.betteredmonton.org** (Media API) +- db.betteredmonton.org (NocoDB) +- docs.betteredmonton.org (MkDocs) +- code.betteredmonton.org (Code Server) +- git.betteredmonton.org (Gitea) +- n8n.betteredmonton.org (n8n) +- grafana.betteredmonton.org (Grafana) +- listmonk.betteredmonton.org (Listmonk) +- qr.betteredmonton.org (Mini QR) +- home.betteredmonton.org (Homepage) + +**Most critical (fix these first):** +1. **api.betteredmonton.org** - Main API (all endpoints fail without this) +2. **app.betteredmonton.org** - Admin GUI (login page won't work) +3. **media.betteredmonton.org** - Media API (video library features) + +### 4. Change Authentication Setting + +For each resource: +1. Click **Edit** (pencil icon) +2. Find **Authentication** or **Access Policy** section +3. Change from **"Protected"** or **"Authenticated"** to: + - **"Not Protected"** OR + - **"Public Access"** OR + - **"No Authentication"** + (exact wording depends on Pangolin UI version) +4. Click **Save** + +### 5. Verify Fix + +After changing authentication settings, test each endpoint: + +**Test API:** +```bash +curl https://api.betteredmonton.org/api/health +# Expected: {"status":"healthy","checks":{"database":"ok","redis":"ok"}} +# NOT: 302 redirect +``` + +**Test Public Campaigns:** +```bash +curl https://api.betteredmonton.org/api/campaigns/public +# Expected: JSON array of campaigns +# NOT: 302 redirect +``` + +**Test Admin GUI:** +Visit https://app.betteredmonton.org in browser +- Should see login page +- NO redirect to Pangolin auth page + +--- + +## Why This Happened + +1. **Pangolin resources default to "Protected"** - requires manual change to "Not Protected" +2. **Manual setup process** - automated setup was removed, so resources must be configured manually +3. **No API enforcement** - Pangolin API doesn't enforce "Not Protected" when creating resources programmatically + +--- + +## Resource Configuration Reference + +**Correct settings for ALL resources:** +- **Protocol:** HTTPS (SSL enabled) +- **Target:** nginx:80 (all services route through nginx) +- **Authentication:** **Not Protected** ← THIS IS CRITICAL +- **SSL/TLS:** Enabled + +--- + +## Troubleshooting + +### Still seeing 302 redirects after changing settings? + +1. **Clear browser cache** - old redirects may be cached +2. **Try incognito/private window** +3. **Wait 30-60 seconds** - Pangolin may need time to update routing +4. **Check resource status** - ensure resource shows as "Active" in Pangolin dashboard +5. **Verify target** - should point to `nginx:80` (not individual service ports) + +### API works locally but not via tunnel? + +Confirm: +- [ ] Newt container is running: `docker compose ps newt` +- [ ] Newt logs show connection: `docker compose logs newt --tail 50` +- [ ] PANGOLIN_SITE_ID, PANGOLIN_NEWT_ID, PANGOLIN_NEWT_SECRET are set in .env +- [ ] Nginx is running: `docker compose ps nginx` + +### Health endpoint works but other endpoints fail? + +Check in this order: +1. Test public endpoints (no auth): `/api/campaigns/public`, `/api/shifts/public` +2. Test protected endpoints with valid JWT: `/api/campaigns`, `/api/users` +3. Check auth store in browser DevTools: localStorage should have `auth-storage` with tokens +4. Verify JWT secrets haven't changed (would invalidate existing tokens) + +--- + +## Post-Fix Verification Checklist + +After changing Pangolin resource authentication to "Not Protected": + +- [ ] Health endpoint returns JSON (not 302): `curl https://api.betteredmonton.org/api/health` +- [ ] Public campaigns endpoint works: `curl https://api.betteredmonton.org/api/campaigns/public` +- [ ] Admin GUI loads: visit https://app.betteredmonton.org +- [ ] Login works: can authenticate with admin credentials +- [ ] Campaign management page loads data (no console errors) +- [ ] Representative lookup functions +- [ ] Public campaign page accessible: https://app.betteredmonton.org/campaigns +- [ ] Map page loads: https://app.betteredmonton.org/map +- [ ] Shifts page works: https://app.betteredmonton.org/shifts + +--- + +## Summary + +**What was done:** +1. ✅ Updated `.env` with production CORS origins +2. ✅ Set NODE_ENV to production +3. ✅ Restarted API container +4. ✅ Verified API works locally + +**What you need to do:** +1. ❌ Log in to Pangolin dashboard at https://api.bnkserve.org +2. ❌ Edit each resource and set Authentication to "Not Protected" +3. ❌ Verify endpoints no longer return 302 redirects +4. ❌ Test application is fully functional + +**Time estimate:** 5-10 minutes to update all 12 resources + +--- + +## Contact + +If you encounter issues after following these steps: +- Check Pangolin documentation: https://pangolin.bnkserve.org/docs (if available) +- Review Newt container logs: `docker compose logs newt` +- Verify nginx routing: `docker compose logs nginx | grep betteredmonton.org` diff --git a/RNAguide.pdf b/RNAguide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5bc019320425417235e3380fb6047197be21f80f GIT binary patch literal 397942 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 C0OCgh0~n=;+(A zi)&F~+V*)Zk{{RrOgk=4t|GBx9hwKkZ#?mCW*V`^Xzy^EIMoD@hBK#7M zF%+X8)9GFE6h+l+*Bn5K+wx&gvd=&}G}#JS0+i+aYLUg*itSyJsVx!N=J&BuZ zh6G01ZCx}638K;L;3QssR(Y?fMU517POvERPU>?EOvTYkjU?372oCu83I}zv<#o|` z=@dS`Cy@9c8gUk#20^84Qd};)-H)yJ@R^lnb4HNzUURTv2dNr{v^JCfbPh9}K!3V8 z-hn&3buLA3xgeHeB<+|=SA)6_vj=Ga^FrL$a?QvDp(gwD%BF-=B8Ti*wFY*JUmZ_h z$I8l4aDY`*$)L!5x*er}7kRhV5Nk+`Wm)GwKVhxodVO-=6*4l-fvsAYmNqe3^X3^D zMdK9dbIrhfex}Gf^tWr<2H(UP{eEIAMOaC?G<``NVDN1$SW8?NCWl-*8Njw(1CFz`<}79b^SeTnR(_YNcGNiwn!dF_#%Ou1fRm$L-r&VOa0m6@_`n8xsA z58mw`q;eG&fq0X%1ASJ8e-#|mG+68>oK(|vRL@%EO3oI*Z%N=ec*w@2FdY2VptV4q zOo5)jV%9M!lBlda{EBTOU?6I8Xfw=TR(gW^On@HuzK(tD=%X&>?405mWZ44l?2eQK zwwoT%ieG|MOH%C($g*T3qcJar3qO(gPMpSaS6O29DkijK*sZwOKm!~2%2m1ng=1=n z?mX%;Ye#}S0yk2Wg80UQ5O@ZhwW0a$+NZ63q}syzuZ~w_dbRR4$O9 z2g{OeOq*_I%f(Iam3Z|%J+gSHv|=5R+N>e?6-wW~s-E4SE)7q<($36-3uc9ymQ$Gy zW_$?5u3Rm}Egenexjr6U4}r5;;ezH$%gkUUB7?X!uf#s6w35gZ+}4~Wiq~(R!he#Z z0d@6Oh*7Y#rQ<(kf4f=7Do+x4!$$@4qwkHKu;^}BaT)?P=8U~TYk0>^vDOC|iU1oL z#RD?rrQvuukblV1@audoIw+biSWm7NG}m4Aa#z$$i=GI*_*nIs9l4qfU1`-g=JqOb zLxr%RhoEZj@o68MmiOih3vOmo+E#v`BuS*|HyPFB@Zu*EEQe&s8lFX#rrbMeOVW2g zOHn;05c7G;#o}>%Dcxd;1GlAL6S9!B4?#VPl6k zBp}46ar`uY<#3*9OLaB(wOi9hSJq-tiz}4HZfpnO)8CK{=*^ag!VRfh^!%0EJ+2X$Euk};)R6Sj@Mo2HzV`*Ik@Qf^mx2xS~=z=VzP zwW0^vKn~mqf7@%cIa5Ln=fw98+ z{sT!gC#wkZ6mSb_sS=6Fbz^{Zv)Bc1Pqp~RL0$7xa>El~e4W2ZSqcE^#h1Dlo0Q3QImX9C;5jx{mh8pw)w9h~ zJX)vIK|B3H|_1H+y&7h-R4@9m%REO2d$vr