Likeness
The website that answers “how much for two dogs?”
A ready-made website for pet portrait artists where customers browse your work, price their own portrait, and send you an order with each pet's details filled in.
Zip, 195 KB. MIT licence. Built 30 Oct 2026.
Live preview
This is the real site, not a mock-up. Click around; the button on it opens the working app.
What you get
Everything a website needs, already done.
Pages and screens
- Gallery
- Size and price guide
- Photo tips
- Order sheet
- Launch page
Features
- Gallery filtered by animal and medium
- Price adds the cost of each extra pet
- Pick a canvas size on a to-scale wall
- Order sheet takes pet names, colours and size
- Copy the order summary into an email or text
- No server, no uploads, no checkout
Palette
#b0502a#8f3f1f#f4e2d6#ffffff#2a211c#6b5d53
Style
- Warm
- Editorial
- Elegant

For developers
A real codebase, not a page builder export.
Stack
Vite, React 19 and TypeScript for the app. The launch page is plain HTML, CSS and a little JavaScript with no build step. Vitest for unit tests, Playwright for browser tests.
Run it
unzip likeness.zip
cd likeness
npm install
npm run devIn the zip
site/the launch page with the built app insite/app/src/ande2e/the app source and testsdocs/technical-docs/architecture, runbook, quick referenceSTART-HERE.mdandLICENSE(MIT)
More like this
Also on the shelf

Endpaper
A portfolio site illustrators build in the browser, grouping pieces into series, ordering them by drag, and exporting as a static bundle or JSON to host anywhere.

Gesso
Keeps an artist's exhibitions, residencies, awards, commissions and publications on one timeline linked to their works, and prints a gallery-format CV.

Halftone
A website for one webcomic where readers page or scroll through chapters and resume where they left off, and you upload pages and publish one file.
