docs(branding): brand kit contract + CLAUDE.md section
branding/README.md is the deployer contract: - Directory layout, source format constraints (SVG > PNG ≥ 1024), brand.json schema, per-standalone override resolution order - BRAND_DIR / BRAND_APP usage, generator pipeline walkthrough - Pointer to issue #95 + the NixOS Phase 2 integration webapp CLAUDE.md gains a Brand Kit section describing the moving parts (vite-branding.ts, @brand alias, brandAssetsPlugin, public/icons/ gitignore, per-app override path) so future sessions on this repo know the convention without grepping. Adds BRAND_DIR / BRAND_APP to the Environment Variables example. Workspace ~/dev/CLAUDE.md note about "brand changes don't need flake.lock bump" deferred to Phase 2 (server-deploy migration) — that's when the workflow becomes reality. Part of aiolabs/webapp#95. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3efae30e84
commit
3dfed23b43
2 changed files with 162 additions and 0 deletions
52
CLAUDE.md
52
CLAUDE.md
|
|
@ -712,8 +712,60 @@ VITE_ADMIN_PUBKEYS='["pubkey1","pubkey2"]'
|
|||
|
||||
# Optional: Disable WebSocket if needed
|
||||
VITE_WEBSOCKET_ENABLED=true
|
||||
|
||||
# Brand kit override (defaults to ./branding/default)
|
||||
BRAND_DIR=branding/cfaun
|
||||
|
||||
# Per-standalone brand override (set by build pipeline, not directly)
|
||||
BRAND_APP=events
|
||||
```
|
||||
|
||||
## Brand kit (white-label PWA branding)
|
||||
|
||||
The webapp ships a brand kit architecture so the hub + every standalone
|
||||
(events, wallet, chat, market, …) can be rebranded per deployment without
|
||||
forking the codebase. See `branding/README.md` for the deployer contract.
|
||||
|
||||
**Single source of truth:** `branding/<dep>/` holds `logo.{svg,png}` +
|
||||
`brand.json`. `vite-branding.ts` reads brand.json and exposes a `@brand`
|
||||
import alias. `pwa-assets.config.ts` + `@vite-pwa/assets-generator` derive
|
||||
the full PWA icon set from the single logo source.
|
||||
|
||||
**brand.json schema:** `{ name, shortName?, themeColor?, backgroundColor? }`
|
||||
— `name` drives the manifest. `themeColor`/`backgroundColor` are optional
|
||||
chrome overrides; when unset, each standalone's per-app accent applies.
|
||||
|
||||
**In-app logo:** components reference `@brand/logo.png`. Active consumers:
|
||||
`Login.vue`, `LoginDemo.vue`, `AppSidebar.vue`, `MobileDrawer.vue`. The
|
||||
Vite alias resolves to the active brand dir at build time.
|
||||
|
||||
**Generated icons:** `public/icons/` is gitignored. `brandAssetsPlugin()`
|
||||
(registered first in every `vite.*.config.ts`'s plugins[]) runs the
|
||||
generator once per build/dev start via `buildStart`. Outputs match the
|
||||
existing filename convention (`icon-192.png`, `icon-maskable-512.png`,
|
||||
…) so HTML `<link>` hrefs and VitePWA `manifest.icons` reference
|
||||
`/icons/<name>` consistently across all 9 configs.
|
||||
|
||||
**Per-standalone override:** `branding/<dep>/icons/<app>/logo.{svg,png}`
|
||||
is checked before the brand's primary logo. The standalone build sets
|
||||
`BRAND_APP`; deployers just put files in the right place.
|
||||
|
||||
**Switching brands:**
|
||||
```bash
|
||||
BRAND_DIR=branding/cfaun pnpm build:events
|
||||
```
|
||||
|
||||
**Adding a new in-app logo consumer:** use `<img src="@brand/logo.png">`
|
||||
instead of `@/assets/logo.png`. The latter still works for non-brand
|
||||
assets (`@/assets/bitcoin.svg`, etc.) — it's only the logo that moved.
|
||||
|
||||
**NixOS deployment:** brand directories will eventually live in
|
||||
`deploy/server-deploy/hosts/<host>/branding/`, with each host's
|
||||
`services/webapp.nix` calling `inputs.webapp.lib.mkWebapp { brandDir =
|
||||
./../branding; }`. `flake.nix` exposing `lib.mkWebapp` is a follow-up
|
||||
to this PR. Until it lands, server-deploy continues to build webapp
|
||||
through its existing path. See aiolabs/server-deploy#8.
|
||||
|
||||
## Payment Rails Pattern
|
||||
|
||||
Shared primitives for modules that mix Lightning + fiat (and, future,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue