Rebranding Guide
After creating a new project with shipkit create, run the rebrand script to replace all ShipKit branding with your own.
Quick Start
bunx tsx scripts/rebrand.ts --name "MyApp" --slug "my-app" --domain "myapp.com" --creator-name "Jane Smith"
That's it. The script updates src/config/site-config.ts, .env.example, and package.json, then formats the config with ESLint.
Options
| Flag | Description | Default |
|---|---|---|
--name | Display name (e.g. "My App") | Prompted |
--slug | URL/package slug (e.g. "my-app") | Derived from name |
--domain | Production domain (e.g. "myapp.com") | {slug}.com |
--creator-name | Your full name (optional) | Empty |
--dry-run | Preview changes without writing files | Off |
If you omit --name, --slug, or --domain, the script prompts for them interactively.
Dry Run
Preview what will change before committing:
bunx tsx scripts/rebrand.ts --name "MyApp" --domain "myapp.com" --dry-run
Output shows old vs. new values for every field without touching any files.
What Gets Updated
src/config/site-config.ts
The script replaces these sections in siteConfig:
| Section | Fields updated |
|---|---|
| Top-level | name, title, url, ogImage |
branding | projectName, projectSlug, domain, protocol, githubOrg, githubRepo, vercelProjectName, databaseName, productNames.main |
repo | owner, name, url, format.clone(), format.ssh() |
email | support, team, noreply, domain, legal, privacy, format() |
creator | name, email, url, twitter, domain, fullName, avatar |
social | github, x (other social fields reset to empty) |
links | twitter, x, github URLs |
store | id, product keys (variant IDs reset to empty for you to fill in) |
metadata.keywords | Replaces "Shipkit" with your project name |
.env.example
Updates the DATABASE_URL database name from shipkit to your slug.
package.json
Updates the "name" field to your slug.
Derived Values
When you provide --creator-name "Jane Smith", the script derives:
- Username:
janesmith(lowercased, spaces removed) - Creator domain:
janesmith.com - Twitter handle:
@janesmith - Avatar:
https://github.com/janesmith.png - GitHub org:
{slug}-org
Without --creator-name, the creator fields default to your project name/domain.
After Rebranding
- Copy
.env.exampleto.envif you haven't already - Update
DATABASE_URLin.envwith the new database name - Fill in your LemonSqueezy variant IDs in the
store.productssection - Add your social links in the
socialsection (Discord, LinkedIn, etc.) - Replace
public/favicon.icoandpublic/og.pngwith your own assets - Restart your dev server
Manual Changes
The rebrand script handles config values. You'll still want to update:
- Logo/favicon: Replace files in
public/ - Colors/theme: Edit
tailwind.config.tsor your CSS variables - Content: Update landing page copy, footer text, etc.
- Social links: Fill in the empty fields in
siteConfig.social - Store products: Add your LemonSqueezy variant IDs
Troubleshooting
ESLint formatting fails: The script runs bunx eslint --fix on the config file after writing. If it fails, the rebrand still completes. Run bunx eslint --fix src/config/site-config.ts manually to debug.
Script hangs: Make sure you're passing all three required args (--name, --slug, --domain) if running non-interactively. Without them, the script opens a prompt that may not display in some environments.
Template literal errors: The script uses String.fromCharCode(96) for backticks in output to avoid esbuild/tsx parse conflicts. If you see TransformError, make sure you're running with bunx tsx or npx tsx, not ts-node.