- 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.
47 lines
3.6 KiB
Markdown
47 lines
3.6 KiB
Markdown
## Итерация 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 для статического хостинга (чтобы потом не гадать на деплое).
|
||
|
||
### Чеклист перепроверки (2–3 прохода)
|
||
- SSG: нет использования SSR-only API в runtime.
|
||
- i18n: URL стратегия соответствует требованиям SEO.
|
||
- Pinia: состояния не дублируются в компонентах.
|
||
- Минимальная страница открывается без ошибок с отключённым JS (хотя бы смысловой контент).
|
||
|