WhatToCook — AI-рецепты из того, что есть дома

О проекте

  • Клиент Собственный SaaS
  • Год 2026 → настоящее время
  • Категория SaaS / AI Cooking
  • Стек Next.js 16 (App Router), React 19, TypeScript, Tailwind v4, Prisma 7 + Postgres (@prisma/adapter-pg), NextAuth v5 (JWT, Google + Credentials), Expo (mobile placeholder), WayForPay, npm workspaces monorepo
  • ИИ Claude Vision — OCR чеков, извлечение продуктов и генерация рецептов в одном пайплайне

Описание проекта

WhatToCook — SaaS с оплатой по кредитам, который превращает то, что есть на кухне, в рецепты, которые можно реально приготовить сегодня. Пользователи добавляют ингредиенты тремя способами — сфотографировать чек, сфотографировать отдельные продукты или просто вписать вручную — и сервис возвращает персонализированные пошаговые рецепты, подобранные из курируемой базы. Сканирование бесплатно; генерация рецепта стоит один кредит. На старте бесплатно даётся три кредита, потом докупаются паки (10 / 50 / 100) через WayForPay.

Архитектура: TypeScript-монорепо на npm-workspaces с Next.js 16 App Router в apps/web, общим packages/shared для типов и констант, общих между клиентами, и Expo-плейсхолдером в apps/mobile. Все эндпойнты — route handlers Next (не server actions), чтобы тот же интерфейс работал и для веб-дашборда, и для будущего мобильного клиента — авторизация в API проходит через хелпер getUserId(), который сначала проверяет сессию NextAuth и фолбэчится на Bearer-токен. Хранилище — Prisma 7 поверх Postgres через @prisma/adapter-pg.

Интересные места: единый пайплайн на Claude Vision делает и OCR (вытаскивает названия продуктов из чеков или фотографий), и сам синтез рецептов; персональная кладовая пользователя хранится в PantryItem-строках, которые промпт для рецепта читает в момент генерации. WayForPay-интеграция использует тот же HMAC-MD5 паттерн подписанных коллбэков, что и в MyCalendar и BrandChecker, а небольшой cron-эндпойнт (POST /api/cron/cleanup, защищён shared secret) подчищает старые аплоады и записи запросов.

WhatToCook — AI recipe discovery from your ingredients