3D toys for the web, drawn in plain SVG

Laptops, phones and small objects for your landing page. They render on the server, stay sharp at any size and carry live HTML on their screens. No WebGL, no canvas, no images.

npx vectoys add laptop

It's just SVG

Every device is projected to flat SVG paths. Drag the phone to turn it: the numbers are read back from this page as it redraws.

Paths
 
Kilobytes of markup
 
Kilobytes gzipped
 
  • Drawn on the server: view this page's source and the phone is already there as paths.
  • Sharp at any zoom, because there are no pixels to stretch.

9:41

The screen is real

What sits on a screen is ordinary HTML, laid onto the glass with a CSS transform. Tick a box, type something in, select the text. Find in page finds it, and a screen reader reads it.

Turn the tablet on its side and the list lays out again for the wider screen.

A day at the sea

2 of 4 packed

Make your own with your agent

The CLI comes with a skill that teaches a coding agent how items are built. Give it this prompt and it creates, checks, previews and submits the item for you.

Submissions open at launch. If you host your own registry, vectoys submit --registry lists it here.

Prompt for your agent

Run npx vectoys skill and follow it. Make me a spinning top for my landing page, check it, preview it, then submit it.

Bring your own

A registry is a folder of JSON files on any static host: one file per item in the shadcn registry item format, and an index that lists them. Put its address in your vectoys.json and its items install by scope.

The engine, the React pieces and the CLI are MIT licensed. The items will get a license of their own before launch, free to use with credit.

acme.dev/r/index.json
{
  "items": [
    {
      "name": "rocket",
      "title": "Rocket",
      "description": "A toy rocket"
    }
  ]
}
vectoys.json
{
  "registries": {
    "@acme": "https://acme.dev/r"
  }
}
Terminal
$ npx vectoys add @acme/rocket