# Oreshka Seeds — план миграции на Astro + Medusa ## 1. Стек | Слой | Технология | Роль | |---|---|---| | Frontend / SSG | **Astro** | Статическая генерация category/article/product страниц, near-zero JS, лучшие Core Web Vitals | | Commerce backend | **Medusa.js** (Node/TS, open source) | Catalog, cart, checkout, orders, inventory, admin panel, REST/Store API | | БД | **Postgres** | Хранилище Medusa (products, orders, customers) | | Кэш/сессии | **Redis** | Cart sessions, job queue Medusa | | Search | **Meilisearch** (self-host) или Algolia | Поиск по 1197+ SKU, фильтры по категориям | | CMS для статей (опц.) | **Payload CMS** или Astro Content Collections (markdown/MDX в репо) | Growing-guide статьи, schema-разметка | | Hosting frontend | **Cloudflare Pages** | Уже есть аккаунт, прямая интеграция с Astro | | Hosting backend | **Oracle Cloud Always Free VM** (Ampere A1, 2 OCPU/12GB) | Node-процесс Medusa + Postgres + Redis — всё в Docker Compose на одном инстансе, 0€/мес навсегда | | AI widget | Без изменений: **Cloudflare Worker** (прокси) + OpenRouter Qwen3-235B | Переключается с Tilda JSON на Medusa Store API для live search | | Платежи | Stripe + PayPal (Medusa plugins) | EU/международные платежи, WhatsApp/Telegram как fallback-контакт остаётся | | CI/CD | GitHub Actions | Auto-deploy Astro → Cloudflare Pages, Medusa → backend host | | Мониторинг | Sentry (опц.) | Ошибки backend/frontend | ## 2. Data flow (см. диаграмму выше) **Content/build pipeline (batch, не runtime):** CSV/GMC feed → Medusa backend (Postgres) → Astro build (SSG) → Cloudflare Pages → Browser **Runtime — AI widget:** Browser → Cloudflare Worker → OpenRouter (Qwen3) ⇄ Medusa Store API (live product search) → ответ в чат **Runtime — заказ:** Browser (Astro page) → Medusa Store API (add to cart, checkout) → Stripe/PayPal → Medusa (order created) → email/Telegram-уведомление менеджеру **Runtime — контент-индексация AI-краулерами (GEO):** Googlebot / GPTBot / PerplexityBot → статический HTML с Astro (schema уже в разметке, без JS-рендеринга) → llms.txt на domain root ## 3. Структура сайта (маршруты Astro) ``` / — home /category/[slug] — 19 категорий (conifers, herbs, succulents...) /product/[sku] — карточка товара (Product schema) /articles/[slug] — growing guides (Article+HowTo+FAQ schema) /how-to-grow-[name]-from-seed — flat slug для статей (сохранить текущий паттерн) /cart, /checkout — Medusa-driven /search — Meilisearch-driven ``` ## 4. Миграция данных 1. Экспорт текущего CSV (`store2047252202602181305.csv`) → скрипт-импортёр в Medusa Admin API 2. Маппинг полей: SKU, title, price, qty, category, photo[0..8] → Medusa product + variants + images 3. Категории CSV → Medusa product collections (сохранить текущие breadcrumb-маппинги: `fruitseeds`, `seedsofdeciduous`, `seedsofconiferous`, `herbs`, `nut-bearingseeds`) 4. Существующие 30+ статей (HTML из Tilda) → конвертация в Astro-компоненты/MDX, schema разметка переносится 1:1 5. Product schema обязательные поля (image, description, brand) — валидировать сразу при импорте, не постфактум ## 5. Фазы | Фаза | Содержание | Ориентир | |---|---|---| | 0. Discovery | Финализировать список полей Medusa product (зона зимостойкости, происхождение, custom attrs) | 0.5 дня | | 1. Backend | Medusa + Postgres + Redis, деплой, admin доступ | 1 день | | 2. Импорт каталога | Скрипт CSV → Medusa API, валидация 1197+ SKU | 1 день | | 3. Frontend skeleton | Astro проект, category/product/article templates (переносим CSS/HTML структуру из текущих Tilda-блоков) | 1–2 дня | | 4. Статьи | Перенос 30+ существующих статей в Astro Content Collections | параллельно с фазой 3 | | 5. Checkout | Medusa Store API + Stripe/PayPal, cart UI | 1 день | | 6. AI widget | Переключить function calling с Tilda JSON на Medusa Store API | 0.5 дня | | 7. SEO/GEO parity | Schema.org (Organization/WebSite/Product/Article/HowTo/FAQ), llms.txt на domain root, sitemap.xml | 0.5 дня | | 8. 301-редиректы | Полный маппинг старых Tilda URL → новых Astro-роутов (критично для сохранения SEO/GEO веса) | 0.5 дня | | 9. Запуск + мониторинг | DNS cutover, Google Search Console reindex request, проверка Ads conversion tracking на новых URL | — | ## 6. Риски - **SEO/GEO просадка на переходный период** — смягчается 301-редиректами и сохранением URL-структуры статей (`/how-to-grow-[name]-from-seed`) - **Google Ads конверсии** — перенастроить conversion tracking под новый checkout flow до отключения старого сайта - **AI widget** — логика function calling переносится, но нужно протестировать Medusa Store API как источник live search вместо текущего JSON - **Обслуживание backend** — Medusa требует постоянно работающий Node-процесс + БД (не статика), в отличие от Tilda — нужен план по хостингу/бэкапам ## 7. Бесплатный хостинг backend (Oracle Always Free) - 1 VM: Ampere A1, 2 OCPU / 12GB RAM (лимит с июня 2026), 200GB block storage, 10TB egress/мес — навсегда бесплатно - Docker Compose на VM: Medusa + Postgres + Redis в контейнерах — не завязываемся на отдельные free-tier БД с ограничением по времени (Render Postgres умирает через 90 дней) - Бэкап: cron → Oracle Object Storage (20GB free) ежедневно, дамп Postgres - Риски: нет SLA, нет автобэкапа из коробки, idle-reclaim при полном отсутствии активности, возможен "out of capacity" при регистрации в некоторых регионах — пробовать разные регионы - Альтернатива без сервера вообще: Astro + Cloudflare Pages Functions (serverless, free) + Stripe Checkout напрямую, каталог как статика в репо — но без admin-панели для 1197 SKU неудобно на масштабе ## 8. Что переносится без изменений - Cloudflare account, Worker-инфраструктура для AI widget - Google Merchant Center feed (адаптируется под новый product API) - Trustpilot интеграция (виджет, не зависит от платформы) - Бренд: Montserrat + Open Sans, `#1e7e1e` - Контактная модель: без телефонов, Telegram/WhatsApp/соцсети