## Итерация 00 — фиксация требований и источников данных ### Цель Согласовать “что именно делаем”, чтобы не переписывать UX/архитектуру на ходу. ### Входные решения (обязательные) - **Карусель скриншотов**: Swiper Vue (`https://swiperjs.com/vue`), на десктопе видно **несколько** скринов одновременно. - **Download Section**: - Автоопределение ОС. - Если не определили — показываем все ОС. - Для macOS — учёт **Apple Silicon vs Intel** (если детект не точный — дать выбор пользователю). - **Privacy**: - Локальное хранение API ключей. - Опциональное использование собственных API ключей. - Нет облачного хранилища транскрипций. - **Open Source**: да, часть компонентов/модулей будет open-source (маркетинг/доверие). - **Статистика загрузок**: не делаем. - **Аналитика**: GA4 + события скачивания и ключевых действий. - **Деплой**: Render, **SSG**. - **State management**: Pinia (общее состояние не размазываем по компонентам). - **Code quality**: ESLint (`@nuxt/eslint`) + Prettier. - **Структура**: добавляем `landing/data`, `landing/types`, `landing/utils` + правило `composables/` vs `utils/`. ### Важно про SSG (чтобы не было сюрпризов в конце) - Лендинг остаётся **статическим**: без собственного backend на каждый запрос. - Поэтому **IP-геолокацию на сервере не делаем** (в чистом SSG её просто негде исполнять). - Автовыбор языка: **cookie/localStorage (если пользователь выбирал)** → **настройки браузера** → fallback на `en`. Всё остальное (гео, Accept-Language на сервере) — только если появится отдельный runtime/edge, но это уже другая задача. ### Решения/данные, которые нужно получить от владельца проекта - **Релизы/артефакты**: где лежат ссылки на `.dmg/.exe/.msi/.deb/.AppImage`, как формируется URL (GitHub Releases / отдельный CDN). - **macOS артефакты**: есть ли separate сборки `arm64` и `x64` или один universal. - **GA4**: - Measurement ID вида `G-XXXXXXXXXX` (и подтверждение, что GA4 property уже создан). - Список обязательных событий/параметров (если есть требования маркетинга). ### Контракт по загрузкам (нужно согласовать один раз) - **Источник правды**: GitHub Releases (рекомендуется) или статичный список в `landing/data/downloads.ts` (если релизы ведутся вручную). - **Нейминг ассетов**: как минимум, чтобы можно было однозначно сопоставить `os + arch + extension` (например `VoiceToText-1.2.3-mac-arm64.dmg`). - **Страница /download**: откуда берём “версия/размер/дата” (из релиза или руками в data). - **Проверки**: если есть sha256/подпись — решаем, показываем ли это пользователю (желательно да). ### Критерии готовности - Все пункты выше подтверждены. - Есть источник правды по ссылкам загрузок и форматам релизов. - Определены обязательные GA4 события и параметры. - Подтверждено, что лендинг действительно деплоится как **статик** (SSG), без server runtime. ### Чеклист перепроверки (прогнать 2–3 раза) - Нет “опциональных” фич, которые фактически обязательны. - Нет скрытых зависимостей (например, server API для статистики). - SSG и Render не конфликтуют с выбранными модулями.