Assets

Horn uses the standard Vite asset model.

public/

Use public/ for files that should be served as-is:

  • favicon.ico
  • social images
  • robots.txt if you do not want to generate it from server/routes

Files in public/ are copied to the built client output without import processing.

app/assets/

Use app/assets/ for files that should go through Vite:

  • images imported by Vue components
  • fonts referenced from CSS
  • icons used inside route components
import logoUrl from '../assets/logo.svg'

Use public/ when you need a stable public URL. Use app/assets/ when you want bundling, hashing, and import semantics.