01
Real ingredients first
Every recipe on this shelf lists a whole protein first, not a by-product. If we wouldn't feed it to our own dog, it doesn't get a bag.
About
KIBBLE started as a two-person, one-dog household getting tired of ingredient lists that hid the truth in the fourth line. So we built the shop we wanted to use — real photography, plain-language filters, and a bag that says what's actually in it.

Why we exist
Pet food shopping shouldn't need a decoder ring.Every bag on this shelf is filterable by the things that actually decide whether your pet will eat it and do well on it — species, life stage, diet and protein — laid out as plain filters instead of buried in fine print.
01
Every recipe on this shelf lists a whole protein first, not a by-product. If we wouldn't feed it to our own dog, it doesn't get a bag.
02
Nothing here pretends to be a backend it isn't. The cart is real, the checkout total is real math, and the confirmation says plainly that no order is placed.
03
A calm palette and a strict grid, with motion that always has a reduced-motion twin. The craft is in what's left out, not piled on.
How this shop is built
Every product photo here is real, self-hosted photography — downloaded once at build time, converted to compact WebP, and served from this domain. No stock photo API calls at runtime, no external image hosts, no hotlinking.
The storefront runs entirely in your browser: no backend, no API calls. Adding to cart and placing an order update local state directly, persisted to this browser's localStorage — instant, and honestly labelled as a demo. Nothing is ever charged and no order is transmitted anywhere.
Every field below is declared once, in one data file, and the shop keeps working:
pet
Dog · Cat · Small Pet
lifeStage
Puppy·Kitten · Adult · Senior
diet
Grain-Free · Raw · Prescription · Everyday
protein
Chicken · Salmon · Beef · Lamb · Plant
type
Food · Treats · Toys · Beds · Grooming · Health