Skip to content

Branding

Customize the template with your brand identity.

App Name

Update in multiple places:

1. PWA Manifest

public/manifest.json:

json
{
  "name": "Your App Name",
  "short_name": "YourApp",
  "description": "Your app description"
}

2. TWA Manifest

twa/twa-manifest.json:

json
{
  "name": "Your App Name",
  "launcherName": "YourApp"
}

3. HTML Metadata

src/app/layout.tsx:

tsx
export const metadata: Metadata = {
  title: 'Your App Name',
  description: 'Your app description',
  manifest: '/manifest.json',
  themeColor: '#9945FF',
};

4. Splash Screen

src/components/splash/SplashScreen.tsx:

tsx
<h1 className="splash-title">Your App Name</h1>

5. Wallet Identity

src/components/wallet/WalletProvider.tsx:

tsx
new SolanaMobileWalletAdapter({
  appIdentity: {
    name: 'Your App Name',
    uri: window.location.origin,
    icon: '/icons/icon-192x192.png',
  },
})

App Icons

Replace icons in public/icons/:

FileSizePurpose
icon-72x72.png72×72Android small
icon-96x96.png96×96Android medium
icon-128x128.png128×128Chrome Web Store
icon-144x144.png144×144Android medium-high
icon-152x152.png152×152iOS
icon-192x192.png192×192Android, PWA
icon-384x384.png384×384Android large
icon-512x512.png512×512PWA install splash
icon-maskable-512x512.png512×512Android adaptive

Creating Icons

From a single 512x512 image:

bash
# Using ImageMagick
convert icon-512.png -resize 72x72 icon-72x72.png
convert icon-512.png -resize 96x96 icon-96x96.png
convert icon-512.png -resize 128x128 icon-128x128.png
convert icon-512.png -resize 144x144 icon-144x144.png
convert icon-512.png -resize 152x152 icon-152x152.png
convert icon-512.png -resize 192x192 icon-192x192.png
convert icon-512.png -resize 384x384 icon-384x384.png

Maskable Icons

Maskable icons are used on Android for adaptive icons. They should:

  • Have important content in the center 80%
  • Have background extending to edges
  • Look good when cropped to different shapes

Use maskable.app to preview and create.

Using SVG

src/components/splash/SplashScreen.tsx:

tsx
function YourLogo() {
  return (
    <svg viewBox="0 0 100 100" className="splash-logo">
      {/* Your logo paths */}
      <circle cx="50" cy="50" r="40" fill="currentColor" />
    </svg>
  );
}

export function SplashScreen() {
  return (
    <div className="splash-screen">
      <YourLogo />
      <h1>Your App Name</h1>
    </div>
  );
}

Using Image

tsx
import Image from 'next/image';

function SplashScreen() {
  return (
    <div className="splash-screen">
      <Image
        src="/icons/icon-512x512.png"
        alt="Logo"
        width={80}
        height={80}
      />
      <h1>Your App Name</h1>
    </div>
  );
}

Favicon

Replace public/favicon.ico with your icon.

For modern browsers, also add to layout.tsx:

tsx
export const metadata: Metadata = {
  icons: {
    icon: '/favicon.ico',
    apple: '/icons/icon-152x152.png',
  },
};

Open Graph / Social

Add social sharing metadata in layout.tsx:

tsx
export const metadata: Metadata = {
  openGraph: {
    title: 'Your App Name',
    description: 'Your app description',
    url: 'https://your-domain.com',
    siteName: 'Your App Name',
    images: [
      {
        url: '/og-image.png', // 1200x630 recommended
        width: 1200,
        height: 630,
      },
    ],
    type: 'website',
  },
  twitter: {
    card: 'summary_large_image',
    title: 'Your App Name',
    description: 'Your app description',
    images: ['/og-image.png'],
  },
};

Theme Colors

Update brand colors throughout:

CSS Variables

css
:root {
  --color-primary: #your-brand-color;
  --color-primary-dark: #your-darker-shade;
  --color-secondary: #your-accent-color;
}

Manifest

json
{
  "theme_color": "#your-brand-color",
  "background_color": "#your-background-color"
}

TWA Manifest

json
{
  "themeColor": "#your-brand-color",
  "backgroundColor": "#your-background-color",
  "navigationColor": "#000000"
}

Package ID (for TWA)

Choose a unique package ID:

twa/twa-manifest.json:

json
{
  "packageId": "com.yourcompany.yourapp"
}

Rules:

  • Must be unique (check Play Store)
  • Use reverse domain notation
  • Only lowercase letters, numbers, dots
  • At least two segments (com.app)

Checklist

  • [ ] Update app name in all locations
  • [ ] Replace all icon sizes
  • [ ] Create maskable icon
  • [ ] Update splash screen logo
  • [ ] Replace favicon
  • [ ] Set theme colors
  • [ ] Add Open Graph image
  • [ ] Configure package ID
  • [ ] Update manifest descriptions

Released under the MIT License.