agent-ecosystem/landing/docs/iterations/ITERATION_01_SCAFFOLDING.md
iliya e6e89d4ebc fix(tests): improve messageId generation for legacy inbox rows
- Enhanced tests to ensure consistent messageId generation for legacy inbox rows lacking a messageId.
- Updated test descriptions for better clarity regarding the new messageId handling.
- Adjusted test expectations to align with the updated behavior of relaying legacy inbox rows with generated messageIds.
2026-03-23 16:31:37 +02:00

3.6 KiB
Raw Blame History

Итерация 01 — каркас проекта + качество кода + базовая архитектура

Цель

Поднять Nuxt 3 проект под SSG, включить Vuetify, i18n, Pinia, ESLint+Prettier и заложить архитектурные правила.

Ключевые принципы (чтобы потом не переделывать)

  • Лендинг деплоится как статик (SSG), поэтому не закладываем фичи, которые требуют сервер на каждый запрос.
  • Источник правды по контенту: landing/data/* + landing/locales/*. Компоненты секций рендерят данные, а не “хранят смысл внутри себя”.
  • Логика, которую хочется тестировать, живёт в landing/utils/*. Всё что про Nuxt/Vue — в composables/*.

Шаги

  1. Создать проект landing/ (Nuxt 3):
    • SSG-ориентация: конфиг и скрипты сборки/генерации.
  2. Подключить Vuetify 3:
    • Material 3, темы (dark/light), сохранение выбора.
  3. Подключить i18n:
    • 6 языков, стратегия URL (prefix_except_default).
    • Автовыбор языка при первом визите: cookie (если выбирали) → настройки браузера → fallback.
    • Важно: IP-гео в рамках статического лендинга не используем.
  4. Подключить Pinia:
    • Stores для: темы, локали, платформы/архитектуры, ссылок загрузки.
  5. ESLint + Prettier:
    • @nuxt/eslint, Prettier, единые правила форматирования.
    • Команды lint, lint:fix, format.
  6. Структура папок:
    • Добавить landing/data, landing/types, landing/utils.
    • Зафиксировать правило: composables = Nuxt/Vue, utils = чистые функции.

Выход (deliverables)

  • Проект собирается и генерится в SSG режиме.
  • Локализация/темы/Pinia подключены и работают в минимальном виде.
  • Линтер/форматтер настроены, есть команды в package.json.
  • Созданы заготовки данных и типов (без бизнес-логики секций).
  • Есть короткий README как запускать/собирать локально (одинаково для всей команды).

Критерии готовности

  • pnpm/yarn/npm workflow согласован и описан.
  • generate/build/preview проходят локально.
  • ESLint и Prettier не конфликтуют (нет “пинпонга” форматирования).
  • Подтвержден publish directory для статического хостинга (чтобы потом не гадать на деплое).

Чеклист перепроверки (23 прохода)

  • SSG: нет использования SSR-only API в runtime.
  • i18n: URL стратегия соответствует требованиям SEO.
  • Pinia: состояния не дублируются в компонентах.
  • Минимальная страница открывается без ошибок с отключённым JS (хотя бы смысловой контент).