> For the complete documentation index, see [llms.txt](https://voyzu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://voyzu.gitbook.io/docs/voyzu-platform-patterns/static-assets.md).

# Static assets

Packages keep their images, fonts and other static files in an optional package-root `public-assets` directory:

```
packages/@acme/warehousing/
├─ public-assets/
│  └─ images/warehouse.jpg
├─ package.json
└─ voyzu.package.ts
```

During `voyzu:compose`, Voyzu replaces that package's asset directory in the Next.js `public` folder, namespaced by the full package name:

```
.run/voyzu/apps/web/public/@acme/warehousing/images/warehouse.jpg
```

The package can then use an absolute URL:

```tsx
<img src="/@acme/warehousing/images/warehouse.jpg" alt="Warehouse" />
```

Install, link, update and uninstall workflows invoke composition, so published assets follow the package lifecycle. Packages must not write into another package's namespace or rely on files added directly beneath `.run`.
