A fan-made recipe finder for Core Keeper's cooking pot. Search ingredient pairs by the buffs you want, or combine any two ingredients to preview the resulting dish and its effects.
Live site: https://cookkeeper.lovable.app
- Buff Finder — Pick one or more buffs (offense, defense, healing, mobility, magic, mining, etc.) and browse the ingredient pairs that produce them. Match all selected buffs or any of them, sort by total relevant buff value (high→low / low→high), and page through results 5 at a time.
- Cooking Pot — Combine any two ingredients to preview the cooked dish, including its icon, canonical name (when known), and the full combined effect list. Hover an ingredient for a tooltip showing the buffs it provides at the selected tier.
- What's New popover — Bell icon in the header opens a popover listing the 3 most recent updates. A pulsing dot indicates unseen entries (tracked in
localStorageundercookkeeper:lastSeenChangelogId). Full history at/changelog. Editsrc/lib/changelog.tsto add entries — new ones go at the TOP of the array with a uniqueid. - Effect engine — Parses raw effect strings into structured buffs (value, percent, duration, permanent max-health, immunities) and applies Core Keeper's combine rules (max value per buff, additive permanent max-health, immunity union).
- TanStack Start (React 19 + Vite 7) with file-based routing
- TypeScript (strict)
- Tailwind CSS v4 with semantic design tokens (
src/styles.css) - shadcn/ui (Radix primitives) + lucide-react icons
- Deployed on Cloudflare Workers
src/
routes/ File-based routes (__root.tsx, index.tsx)
components/
BuffFinder.tsx Buff selection, sorting, pagination
Combiner.tsx Two-ingredient cooking pot preview
IngredientIcon.tsx
ui/ shadcn components
lib/
cooking.ts Effect parser + combine logic + recipe search
dishNames.ts Optional canonical dish-name overrides
data/
ingredients.json Source ingredient + tier effect data
styles.css Design tokens (oklch) + Tailwind v4 setup
bun install
bun run dev # start the dev server
bun run build # production build
bun run preview # preview the built site
bun run lint # eslint
bun run format # prettierRequires Bun (or substitute npm / pnpm).
By default, combined dishes are labelled "A & B Dish". To override with the in-game canonical name, add an entry to src/lib/dishNames.ts:
export const DISH_NAMES: Record<string, string> = {
"Carrock + Mushroom": "Mushroom Stew",
};Keys are the two ingredient names sorted alphabetically and joined with + (use the pairKey helper).
Ingredient and effect data is sourced from corekeeper.atma.gg.
Fan-made tool. Not affiliated with Pugstorm or Fireshine Games. Core Keeper is a trademark of its respective owners.