You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hub operators want to show their own brand (logo, name, primary colour) to members instead of the default ManageHub branding. White-labeling makes the platform resellable as a branded product — critical for hub software vendors.
Global CSS: frontend/app/globals.css — uses CSS custom properties for colour theming
Hub settings API: GET /hub-settings/branding — to be created alongside this frontend task (a small backend addition: store branding config in a HubSettings DB table or JSON config)
Tasks
Create backend/src/hub-settings/ module with a HubSettings entity (id, hubName, logoUrl, primaryColorHex, faviconUrl) — seed with ManageHub defaults
GET /hub-settings/branding — public endpoint returning branding config
Overview
Hub operators want to show their own brand (logo, name, primary colour) to members instead of the default ManageHub branding. White-labeling makes the platform resellable as a branded product — critical for hub software vendors.
Context
frontend/components/dashboard/DashboardLayout.tsxfrontend/components/ui/Navbar.tsxfrontend/app/globals.css— uses CSS custom properties for colour themingGET /hub-settings/branding— to be created alongside this frontend task (a small backend addition: store branding config in aHubSettingsDB table or JSON config)Tasks
backend/src/hub-settings/module with aHubSettingsentity (id,hubName,logoUrl,primaryColorHex,faviconUrl) — seed with ManageHub defaultsGET /hub-settings/branding— public endpoint returning branding configPATCH /hub-settings/branding— admin updates branding (admin only)GET /hub-settings/brandingin a root layout component; apply:document.documentElement.style.setProperty('--color-primary', primaryColorHex)for the theme colour<img src>inNavbarandDashboardSidebarwithlogoUrlManageHubtext in sidebar and page<title>withhubNamemetadataAPI/admin/settings/brandingpage: upload logo (Cloudinary), upload favicon, colour picker for primary colour, hub name input, save buttonGET /hub-settings/brandingfails, fall back silently to ManageHub defaults (no error shown to members)Files to Modify / Create
backend/src/hub-settings/(module, entity, controller, service)frontend/components/dashboard/DashboardLayout.tsxfrontend/components/ui/Navbar.tsxfrontend/app/admin/settings/branding/page.tsx