White-label checklist
Everything needed to make Numeralens look and feel like your own product.
Scope reminder. White-labelling means rebranding the dashboard for the end product you are building — your SaaS, your client's portal, your internal tool. It does not permit reselling Numeralens itself as a template, boilerplate or starter kit; see LICENSE.md, section 3.
1. Identity
-
src/config/branding.ts— company name, logo path, colours, currency, locale, date format, fiscal year start, landing route. -
public/logos/— replacenorthstar.svgwith your mark; delete the demo file. -
src/app/favicon.ico— replace. -
.env.local/ deployment env —NEXT_PUBLIC_APP_NAME. -
package.json—name,version,description. -
src/app/layout.tsx— themetadatatitle and description. -
src/app/opengraph-image.png(1200×630) andopengraph-image.alt.txt— the link-share preview; replace with a screenshot of your product.
2. Content
-
src/app/help/page.tsx— FAQs, links and support pointers. -
README.mdanddocs/— replace or trim for your own team, or remove them from your deployed product entirely.
3. Scope
- Turn off modules you are not selling in
src/config/features.ts, or delete their route folders and navigation entries outright. - Trim the widget library in
src/components/dashboard/widget-registry.tsx. - Adjust roles and permissions in
src/config/roles.tsto match your tiers.
4. Data
- Point at your backend (api-integration.md).
- Decide what happens to
src/mock/— keeping it gives you an offline demo mode for sales; deleting it (plussrc/app/api/and the mock adapter) trims the bundle.
5. Auth
- Set
AUTH_SECRET(openssl rand -base64 32). - Replace the demo accounts in
src/lib/auth/users.tswith your user directory or identity provider (authentication.md). - Restyle
/login(src/app/login/) if needed.
6. Ship
-
npm run lint && npm run typecheck && npm test && npm run build - Deploy (deployment.md).
Multi-tenant branding
For per-tenant themes, fetch the tenant's branding record after sign-in and feed
it to BrandingProvider instead of the localStorage default. The provider takes
a plain object; nothing else in the UI needs to change.