Post Workflow:
- PostDetail full page (/posts/:id) replaces slide panel approach
- Post = 1 Caption Copy + 1 Body Copy + 1 Design + 0-1 Video
- copy_type field on Translations (caption/body)
- Composition endpoint returns rich data (content preview, languages, thumbnails)
- Stage auto-advances on translation/artefact changes (both link and unlink)
- "Translations" renamed to "Copy" in navigation
- GET /api/posts/:id, /api/translations/:id, /api/artefacts/:id routes added
- PostProduction: "New Post" creates → navigates to full page
- CampaignDetail: click post → navigates to full page
- Inline link picker (no modals) with search + rich item display
- PostComposition sub-components for caption, copy, designs, video, formats, readiness
Budget Allocation:
- Single source of truth: BudgetEntries (Campaign.budget deprecated)
- Budget mutex for race conditions
- Validation at all levels (main → campaign → track, expenses)
- CEO approval workflow: BudgetRequests table, public approval page
- Finance page: request budget UI, budget requests section
- Settings: CEO email field
- All emails branded with "Rawaj —" prefix
Brand Identity:
- Name: Rawaj (رواج) — trending/virality
- Deep teal palette (#0d9488), forest-tinted dark mode
- DM Sans font, custom SVG logo
- Consistent across login, sidebar, emails, public pages
Approval Workflow:
- Single reviewer per artefact (not multi-select)
- Reviewer redirect on public review page
- Server blocks submit-review without reviewer
- Review URLs use APP_URL (not server URL)
UI/UX:
- Scroll clipping fix: Modal, TabbedModal, SlidePanel restructured
to avoid overflow-y-auto clipping native select dropdowns
- section-card overflow-hidden → overflow-clip
- All page titles via Header.jsx (removed duplicate h1s)
- CampaignDetail redesigned: prominent budget card, compact team
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cards (bg-white → #22223a) now sit visibly above kanban columns
and section backgrounds (surface-secondary → #1c1c2a).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deep layered surfaces (#15151e → #1c1c2a → #24243a), ambient
purple/cyan/gold background glow, glass-edge borders, translucent
status badges, form inputs with accent focus glow, comprehensive
overrides for all hardcoded bg-white/gray/border/text utilities,
brand primary with violet glow effect, and dark selection highlight.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The ThemeContext was toggling the 'dark' class on <html> but the CSS
custom properties never changed. Added:
- .dark selector overriding all theme color variables
- .dark overrides for hardcoded bg-white, bg-gray-*, text-gray-*,
border-gray-* classes used throughout components
- Dark mode input/select/textarea styling
- Dark mode scrollbar colors
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix Dashboard stat card: show "Budget Remaining" instead of "Budget Spent"
with correct remaining value accounting for campaign allocations
- Add expense system: budget entries now have income/expense type with
server-side split, per-campaign and per-project expense tracking,
colored amounts, type filters, and summary bar in Budgets page
- Add configurable currency in Settings (SAR default, supports 10
currencies) replacing all hardcoded SAR references across the app
- Replace PiggyBank icon with Landmark (culturally appropriate for KSA)
- Visual upgrade: mesh background, gradient text, premium stat cards with
accent bars, section-card containers, sidebar active glow
- UX polish: consistent text-2xl headers, skeleton loaders for Finance
and Budgets pages
- Finance page: expenses column in campaign/project breakdown tables,
ROI accounts for expenses, expense stat card
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Features:
- Full RBAC with 3 roles (superadmin/manager/contributor)
- Ownership tracking on posts, tasks, campaigns, projects
- Task system: assign to anyone, filter combobox, visibility scoping
- Team members merged into users table (single source of truth)
- Post thumbnails on kanban cards from attachments
- Publication link validation before publishing
- Interactive onboarding tutorial with Settings restart
- Full Arabic/English i18n with RTL layout support
- Language toggle in sidebar, IBM Plex Sans Arabic font
- Brand-based visibility filtering for non-superadmins
- Manager can only create contributors
- Profile completion flow for new users
- Cookie-based sessions (express-session + SQLite)