feat: port BrightBean Studio social management suite into Canifa pipeline
Phase 2 - AI Content Pipeline & Social Management: == Backend Modules == - common/notification/: Notification engine (in-app, email, webhook, Slack, HMAC-signed) - common/social/approval_gate.py: Editorial state machine (draft -> review -> approved -> published) - common/social/post_queue.py: Post queue + calendar slot scheduling - common/social/scheduler.py: Background publish engine (parallel, exponential backoff) - common/media/image_processor.py: Media processor (Pillow resize, ffmpeg thumbnails) - common/content_templates.py: 30+ fashion content templates + Vietnamese RSS feeds (ported from BrightBean builtin_templates.py 968L) == API Routes == - api/notification_route.py: Notification CRUD + test endpoints - api/content_approval_route.py: Approval workflow (approve/reject/submit) - api/queue_route.py: Queue + calendar + posting slots - api/media_route.py: Media library (upload/resize/delete) - api/templates_route.py: Content templates + RSS feed catalog - api/social_inbox_route.py: Unified social inbox (FB/IG/TikTok messages) == Static Dashboards (zero-build) == - static/content-approval/index.html: Approval queue UI - static/content-calendar/index.html: Weekly calendar + queue sidebar - static/media-library/index.html: Drag-drop upload + asset grid + platform resize - static/social-inbox/index.html: 3-column inbox (filters/list/detail) + reply/note composer - static/content-composer/index.html: Post editor + templates + AI enhancement + schedule == Server == - server.py: Registered all new routers + publish engine autostart + dashboard links in banner
Showing
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
268 KB
84.7 KB
46.7 KB
56.7 KB
95.7 KB
6.49 KB
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
67 KB
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
61.6 KB
This diff is collapsed.
This diff is collapsed.
42.2 KB
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
78.7 KB
This diff is collapsed.
This diff is collapsed.
74.1 KB
This diff is collapsed.
81 KB
This diff is collapsed.
80.9 KB
80.7 KB
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
backend/api/media_route.py
0 → 100644
This diff is collapsed.
This diff is collapsed.
backend/api/queue_route.py
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
workflow-mockup.png
0 → 100644
This diff is collapsed.