Skip to main content
ShipFree provides a centralized branding configuration system in src/config/branding.ts that allows you to customize your application’s visual identity.

Brand Configuration

The brand configuration controls various aspects of your application’s appearance and metadata.

Configuration Interface

Default Configuration

The default brand configuration is defined in src/config/branding.ts:

Customizing Your Brand

1. Update Brand Name

Change the application name:
This name is used in:
  • Email templates
  • SEO metadata
  • Application manifest
  • Email subjects
Place your logo in the public/ directory and update the configuration:
Recommended formats:
  • SVG: Scalable, small file size
  • PNG: With transparent background
  • WebP: Modern, efficient format

3. Customize Favicon

Update the favicon path:
For best browser support, provide multiple sizes:
Then update src/app/layout.tsx:
Add links to your support resources:
These URLs are used in:
  • Email footers
  • Navigation menus
  • Legal pages
  • Error pages

Theme Configuration

Color Customization

Update the theme colors to match your brand:

Using Theme Colors

ShipFree uses TailwindCSS v4 with CSS custom properties. The theme colors from branding.ts can be integrated with the global stylesheet.

Global CSS Variables

The main theme is defined in src/app/_styles/globals.css:

Converting Hex to OKLCH

ShipFree uses OKLCH color space for better color consistency. Convert your brand colors:
  1. Use an online converter: https://oklch.com/
  2. Input your hex color (e.g., #701ffc)
  3. Copy the OKLCH value
  4. Update globals.css:

Custom CSS

For advanced customization, you can inject custom CSS:
Create public/custom-theme.css:
Then load it in your root layout or specific pages.

Using Brand Config in Components

Server Components

Use getBrandConfig() in Server Components:

Client Components

Use the useBrandConfig() hook in Client Components:

Email Templates

Brand configuration is used in email templates:

Where Brand Config is Used

The brand configuration is automatically integrated throughout ShipFree:

1. Email Templates

Location: src/components/emails/
  • Welcome emails
  • Password reset emails
  • OTP verification emails
  • Email footers and layouts

2. SEO & Metadata

Location: src/lib/seo.ts

3. Application Manifest

Location: src/app/manifest.ts

4. Error Pages

Location: src/app/not-found.tsx

5. Email Subjects

Location: src/components/emails/subjects.ts

Best Practices

1. Consistent Branding

  • Use the same colors across all components
  • Maintain consistent logo sizing and spacing
  • Keep email branding aligned with web branding

2. Accessibility

  • Ensure color contrast meets WCAG AA standards (4.5:1 for text)
  • Provide alt text for logos
  • Test theme in both light and dark modes

3. Performance

  • Optimize logo files (compress images, use SVG when possible)
  • Use WebP format with fallbacks
  • Load custom CSS asynchronously if large

4. Brand Consistency

  • Keep branding.ts as the single source of truth
  • Don’t hardcode brand values in components
  • Always use getBrandConfig() or useBrandConfig()

Example: Complete Rebrand

Here’s a complete example of rebranding ShipFree to “Acme SaaS”:
This will automatically update:
  • All email templates
  • SEO metadata
  • Application manifest
  • Navigation and UI components
  • Error pages