diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 05fd795..ef615bb 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -1,101 +1,51 @@ import { defineConfig } from 'vitepress'; -const ruSidebar = [ +const sidebar = [ { text: 'Главная', - link: '/ru/', + link: '/docs/', }, { text: 'Workflow', - link: '/ru/workflow', + link: '/docs/workflow', }, { text: 'Базовые правила', items: [ - { text: 'Технологии и библиотеки', link: '/ru/basics/tech-stack' }, - { text: 'Именование', link: '/ru/basics/naming' }, + { text: 'Технологии и библиотеки', link: '/docs/basics/tech-stack' }, + { text: 'Именование', link: '/docs/basics/naming' }, { text: 'Архитектура', collapsed: true, items: [ - { text: 'Обзор', link: '/ru/basics/architecture/' }, - { text: 'Слои', link: '/ru/basics/architecture/reference/layers' }, - { text: 'Модули', link: '/ru/basics/architecture/reference/modules' }, - { text: 'Сегменты', link: '/ru/basics/architecture/reference/segments' }, + { text: 'Обзор', link: '/docs/basics/architecture/' }, + { text: 'Слои', link: '/docs/basics/architecture/reference/layers' }, + { text: 'Модули', link: '/docs/basics/architecture/reference/modules' }, + { text: 'Сегменты', link: '/docs/basics/architecture/reference/segments' }, ], }, - { text: 'Стиль кода', link: '/ru/basics/code-style' }, - { text: 'Документирование', link: '/ru/basics/documentation' }, - { text: 'Типизация', link: '/ru/basics/typing' }, + { text: 'Стиль кода', link: '/docs/basics/code-style' }, + { text: 'Документирование', link: '/docs/basics/documentation' }, + { text: 'Типизация', link: '/docs/basics/typing' }, ], }, { text: 'Прикладные разделы', items: [ - { text: 'Структура проекта', link: '/ru/applied/project-structure' }, - { text: 'Компоненты', link: '/ru/applied/components' }, - { text: 'Страницы (App Router)', link: '/ru/applied/page-level' }, - { text: 'Шаблоны и генерация кода', link: '/ru/applied/templates-generation' }, - { text: 'Стили', link: '/ru/applied/styles' }, - { text: 'Изображения', link: '/ru/applied/images-sprites' }, - { text: 'SVG-спрайты', link: '/ru/applied/svg-sprites' }, - { text: 'Видео', link: '/ru/applied/video' }, - { text: 'API', link: '/ru/applied/api' }, - { text: 'Stores', link: '/ru/applied/stores' }, - { text: 'Хуки', link: '/ru/applied/hooks' }, - { text: 'Шрифты', link: '/ru/applied/fonts' }, - { text: 'Локализация', link: '/ru/applied/localization' }, - { text: 'Настройка VS Code', link: '/ru/applied/vscode' }, - ], - }, -]; - -const enSidebar = [ - { - text: 'Home', - link: '/en/', - }, - { - text: 'Processes', - items: [ - { text: 'Getting Started', link: '/en/workflow/getting-started' }, - { text: 'Creating an App', link: '/en/workflow/creating-app' }, - { text: 'Creating Pages', link: '/en/workflow/creating-pages' }, - { text: 'Creating Components', link: '/en/workflow/creating-components' }, - { text: 'Styling', link: '/en/workflow/styling' }, - { text: 'Data Fetching', link: '/en/workflow/data-fetching' }, - { text: 'State Management', link: '/en/workflow/state-management' }, - { text: 'Localization', link: '/en/workflow/localization' }, - ], - }, - { - text: 'Basic Rules', - items: [ - { text: 'Tech Stack', link: '/en/basics/tech-stack' }, - { text: 'Architecture', link: '/en/basics/architecture' }, - { text: 'Code Style', link: '/en/basics/code-style' }, - { text: 'Naming', link: '/en/basics/naming' }, - { text: 'Documentation', link: '/en/basics/documentation' }, - { text: 'Typing', link: '/en/basics/typing' }, - ], - }, - { - text: 'Applied Sections', - items: [ - { text: 'VS Code Setup', link: '/en/applied/vscode' }, - { text: 'Project Structure', link: '/en/applied/project-structure' }, - { text: 'Components', link: '/en/applied/components' }, - { text: 'Page-level Components', link: '/en/applied/page-level' }, - { text: 'Templates & Code Generation', link: '/en/applied/templates-generation' }, - { text: 'Styles', link: '/en/applied/styles' }, - { text: 'Images', link: '/en/applied/images-sprites' }, - { text: 'SVG Sprites', link: '/en/applied/svg-sprites' }, - { text: 'Video', link: '/en/applied/video' }, - { text: 'API', link: '/en/applied/api' }, - { text: 'Stores', link: '/en/applied/stores' }, - { text: 'Hooks', link: '/en/applied/hooks' }, - { text: 'Fonts', link: '/en/applied/fonts' }, - { text: 'Localization', link: '/en/applied/localization' }, + { text: 'Структура проекта', link: '/docs/applied/project-structure' }, + { text: 'Компоненты', link: '/docs/applied/components' }, + { text: 'Страницы (App Router)', link: '/docs/applied/page-level' }, + { text: 'Шаблоны и генерация кода', link: '/docs/applied/templates-generation' }, + { text: 'Стили', link: '/docs/applied/styles' }, + { text: 'Изображения', link: '/docs/applied/images-sprites' }, + { text: 'SVG-спрайты', link: '/docs/applied/svg-sprites' }, + { text: 'Видео', link: '/docs/applied/video' }, + { text: 'API', link: '/docs/applied/api' }, + { text: 'Stores', link: '/docs/applied/stores' }, + { text: 'Хуки', link: '/docs/applied/hooks' }, + { text: 'Шрифты', link: '/docs/applied/fonts' }, + { text: 'Локализация', link: '/docs/applied/localization' }, + { text: 'Настройка VS Code', link: '/docs/applied/vscode' }, ], }, ]; @@ -123,8 +73,9 @@ export default defineConfig({ // (попадают в корень `dist/` как статика). Исключаем из сканирования // страниц, иначе VitePress рендерит их как HTML-страницы. srcExclude: ['public/**'], + lang: 'ru-RU', title: 'NextJS Style Guide', - description: 'Правила и стандарты разработки на NextJS и TypeScript', + description: 'Стандарты разработки на Next.js + TypeScript с архитектурой SLM', vite: { plugins: [utf8TextPlugin], @@ -133,44 +84,18 @@ export default defineConfig({ }, }, - locales: { - root: { - label: 'Languages', - lang: 'en', - }, - ru: { - label: 'Русский', - lang: 'ru-RU', - link: '/ru/', - description: 'Стандарты разработки на Next.js + TypeScript с архитектурой SLM', - themeConfig: { - sidebar: ruSidebar, - socialLinks: [ - { icon: 'github', link: 'https://gromlab.ru/docs/nextjs-style-guide' }, - ], - }, - // Расширенный блок описания для llms.txt — даёт LLM полный - // технический контекст: стек, методология, охват тем. - llmsBlockquote: - 'Стандарты разработки frontend-приложений на Next.js (App Router) + TypeScript + React с архитектурой SLM (Scoped Layered Module Design — модульная архитектура со слоями ответственности, где каждый модуль содержит всё необходимое: компоненты, хуки, сторы, типы, стили).', - llmsContext: - 'Стек: React, TypeScript, Next.js App Router, Mantine UI, SWR, Zustand, i18next, PostCSS Modules, Vitest, clsx.\n\nДокументация покрывает архитектуру SLM (слои, модули, сегменты, направление зависимостей, публичный API), правила оформления кода (именование, форматирование, импорты, типизация, JSDoc), реализацию компонентов и хуков, работу с App Router, кодогенерацию из шаблонов, стилизацию (Mobile First, токены), работу с API и сокетами, управление состоянием через Zustand, локализацию, ассеты (шрифты, изображения, SVG-спрайты) и настройку VS Code.', - }, - en: { - label: 'English', - lang: 'en-US', - link: '/en/', - description: 'Next.js + TypeScript development standards with SLM architecture', - themeConfig: { - sidebar: enSidebar, - socialLinks: [ - { icon: 'github', link: 'https://gromlab.ru/docs/nextjs-style-guide' }, - ], - }, - llmsBlockquote: - 'Frontend development standards for Next.js (App Router) + TypeScript + React projects with SLM architecture (Scoped Layered Module Design — a modular architecture with responsibility layers, where each module contains everything it needs: components, hooks, stores, types, styles).', - llmsContext: - 'Stack: React, TypeScript, Next.js App Router, Mantine UI, SWR, Zustand, i18next, PostCSS Modules, Vitest, clsx.\n\nThe documentation covers SLM architecture (layers, modules, segments, dependency direction, public API), code conventions (naming, formatting, imports, typing, JSDoc), component and hook implementation, App Router usage, code generation from templates, styling (Mobile First, design tokens), API and socket integration, state management via Zustand, localization, assets (fonts, images, SVG sprites), and VS Code setup.', - }, + themeConfig: { + sidebar, + socialLinks: [ + { icon: 'github', link: 'https://gromlab.ru/docs/nextjs-style-guide' }, + ], }, -}); + + // Расширенный блок описания для llms.txt — даёт LLM полный + // технический контекст: стек, методология, охват тем. + // Используется в generate-llms.ts. + llmsBlockquote: + 'Стандарты разработки frontend-приложений на Next.js (App Router) + TypeScript + React с архитектурой SLM (Scoped Layered Module Design — модульная архитектура со слоями ответственности, где каждый модуль содержит всё необходимое: компоненты, хуки, сторы, типы, стили).', + llmsContext: + 'Стек: React, TypeScript, Next.js App Router, Mantine UI, SWR, Zustand, i18next, PostCSS Modules, Vitest, clsx.\n\nДокументация покрывает архитектуру SLM (слои, модули, сегменты, направление зависимостей, публичный API), правила оформления кода (именование, форматирование, импорты, типизация, JSDoc), реализацию компонентов и хуков, работу с App Router, кодогенерацию из шаблонов, стилизацию (Mobile First, токены), работу с API и сокетами, управление состоянием через Zustand, локализацию, ассеты (шрифты, изображения, SVG-спрайты) и настройку VS Code.', +} as any); diff --git a/.vitepress/theme/custom.css b/.vitepress/theme/custom.css index 840117d..474ce0f 100644 --- a/.vitepress/theme/custom.css +++ b/.vitepress/theme/custom.css @@ -16,13 +16,4 @@ overflow-wrap: anywhere; } -/* - * Скрыть root-локаль (лендинг с layout: false) из переключателя языка. - * VitePress не даёт исключить root через config — она всегда попадает - * в lang-switcher. Идентифицируем по href="/" — другие локали используют - * href="/ru/" и href="/en/". - */ -.VPNavBarTranslations a[href="/"], -.VPNavScreenTranslations a[href="/"] { - display: none; -} + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 02a4c78..f33eac3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,9 +7,8 @@ Документационный сайт с правилами и стандартами фронтенд-разработки на Next.js + TypeScript. - Движок: VitePress -- Языки: русский (основной), английский -- Русская версия: `docs/ru/` -- Английская версия: `docs/en/` +- Язык: русский +- Контент: `docs/docs/` ## Команды @@ -17,51 +16,53 @@ |---------|-----------| | `npm run dev` | Локальный сервер разработки | | `npm run build` | Сборка статического сайта | -| `npm run llms` | Генерация `generated/{lang}/llms.txt` (карта документации для LLM) и README | +| `npm run llms` | Генерация `llms.txt` (карта документации для LLM) и README | ## Структура файлов ``` docs/ -├── ru/ # Русская версия (основная) -│ ├── index.md # Главная страница -│ ├── basics/ # Базовые правила -│ │ ├── tech-stack.md -│ │ ├── architecture.md -│ │ ├── code-style.md -│ │ ├── naming.md -│ │ ├── documentation.md -│ │ └── typing.md -│ └── applied/ # Прикладные разделы -│ ├── vscode.md -│ ├── project-structure.md -│ ├── components.md -│ ├── page-level.md -│ ├── templates-generation.md -│ ├── styles.md -│ ├── images-sprites.md -│ ├── svg-sprites.md -│ ├── video.md -│ ├── api.md -│ ├── stores.md -│ ├── hooks.md -│ ├── fonts.md -│ └── localization.md -├── en/ # Английская версия (зеркало ru/) +├── index.md # Лендинг (URL `/`) +└── docs/ # Контент документации (URL `/docs/...`) + ├── index.md # Главная страница + ├── workflow.md + ├── workflow/ # Процессы разработки + ├── basics/ # Базовые правила + │ ├── tech-stack.md + │ ├── architecture/ + │ ├── code-style.md + │ ├── naming.md + │ ├── documentation.md + │ └── typing.md + └── applied/ # Прикладные разделы + ├── vscode.md + ├── project-structure.md + ├── components.md + ├── page-level.md + ├── templates-generation.md + ├── styles.md + ├── images-sprites.md + ├── svg-sprites.md + ├── video.md + ├── api.md + ├── stores.md + ├── hooks.md + ├── fonts.md + └── localization.md .vitepress/ -├── config.ts # Конфигурация VitePress, сайдбары, локали -generated/ -├── ru/llms.txt # Карта документации для LLM (ru, llmstxt.org) -└── en/llms.txt # Карта документации для LLM (en, llmstxt.org) +└── config.ts # Конфигурация VitePress, сайдбар generate-llms.ts # Скрипт генерации llms.txt и README ``` +Сгенерированные артефакты (`docs/public/`): `llms.txt`, `llms-full.txt`, +`nextjs-style-guide.zip`, `manifest.json`, копии `.md` в `docs/public/docs/`. + ### Добавление нового раздела -1. Создать `.md`-файл в нужной папке (`basics/` или `applied/`). -2. Добавить пункт в сайдбар — `.vitepress/config.ts` (оба языка, если есть перевод). +1. Создать `.md`-файл в нужной папке (`docs/docs/basics/` или `docs/docs/applied/`). +2. Добавить пункт в сайдбар — `.vitepress/config.ts`. Сайдбар — единственный источник порядка и группировки для `llms.txt`. -3. Запустить `npm run llms` для обновления `generated/{lang}/llms.txt`. +3. Запустить `npm run llms` для обновления `llms.txt` и README. ## Два типа документации diff --git a/Dockerfile b/Dockerfile index 8bf0823..571090b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM node:24-alpine AS build WORKDIR /app -# zip нужен для упаковки nextjs-style-guide-{lang}.zip +# zip нужен для упаковки nextjs-style-guide.zip RUN apk add --no-cache zip COPY package*.json ./ RUN npm ci diff --git a/README.md b/README.md index 16fca63..0456939 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,69 @@ # NextJS Style Guide -Conventions for Next.js project development: application architecture and layers, code structure, module organization, styling, typing, and infrastructure. +Соглашения по разработке Next.js проектов: архитектура и слои приложения, структура кода, организация модулей, стилизация, типизация и инфраструктура. -## Usage +## Использование -**For AI agents:** +**Для AI-агентов:** -- [Sections map](https://nextjs-style-guide.gromlab.ru/en/llms.txt) — `llms.txt`, table of contents with links to sections. -- [Full text](https://nextjs-style-guide.gromlab.ru/en/llms-full.txt) — `llms-full.txt`, the entire documentation in a single file. +- [Карта разделов](https://nextjs-style-guide.gromlab.ru/llms.txt) — `llms.txt`, оглавление со ссылками на разделы. +- [Полный текст](https://nextjs-style-guide.gromlab.ru/llms-full.txt) — `llms-full.txt`, вся документация одним файлом. -**For projects:** +**Для проекта:** -- [Rules archive](https://nextjs-style-guide.gromlab.ru/nextjs-style-guide-en.zip) — `nextjs-style-guide-en.zip`, a set of Markdown files to unpack into `./ai/nextjs-style-guide/` or another project folder. +- [Архив с правилами](https://nextjs-style-guide.gromlab.ru/nextjs-style-guide.zip) — `nextjs-style-guide.zip`, набор Markdown-файлов для распаковки в `./ai/nextjs-style-guide/` или другую папку проекта. -## Documentation Structure +## Структура документации -### Processes +### Workflow -**What to do** in a specific situation — step-by-step instructions. +**Что делать и в каком порядке** — пошаговые инструкции. -| Section | Answers the question | -|---------|---------------------| -| Getting Started | What tools to install before starting development? | -| Creating an App | How to create a new project, where to get a template? | -| Creating Pages | How to add a page: routing and screen? | -| Creating Components | How to generate components using templates? | -| Styling | What to use: Mantine, tokens, or PostCSS? | -| Data Fetching | How to fetch data: SWR, codegen, sockets? | -| State Management | When and how to create a store (Zustand)? | -| Localization | How to add translations and work with i18next? | +| Раздел | Отвечает на вопрос | +|--------|-------------------| +| Начало работы | Что нужно знать перед началом разработки? | +| Создание проекта | Как начать новый проект? | +| Генерация кода | Какие модули должны генерироваться из шаблонов? | +| Добавление страницы | Как добавить новую страницу в проект? | +| Добавление UI-модуля | Как создать компонент, бизнес-модуль, виджет или layout? | +| Стилизация | Как стилизовать компоненты в проекте? | +| Получение данных | Как получать данные с сервера? | +| Управление состоянием | Как работать с состоянием? | +| Локализация | Как добавлять переводы и подключать локализацию? | -### Basic Rules +### Базовые правила -**What the code should look like** — standards not tied to a specific technology. +**Каким должен быть код** — стандарты, не привязанные к конкретной технологии. -| Section | Answers the question | -|---------|---------------------| -| Tech Stack | What stack do we use? | -| Architecture | How are SLM layers, dependencies, and public API structured? | -| Code Style | How to format code: indentation, quotes, imports, early return? | -| Naming | How to name files, variables, components, hooks? | -| Documentation | How to write JSDoc: what to document and what not? | -| Typing | How to type: type vs interface, any/unknown? | +| Раздел | Отвечает на вопрос | +|--------|-------------------| +| Технологии и библиотеки | Какой стек используем? | +| Архитектура | Как устроены слои SLM, зависимости, публичный API? | +| Стиль кода | Как оформлять код: отступы, кавычки, импорты, early return? | +| Именование | Как называть файлы, переменные, компоненты, хуки? | +| Документирование | Как писать JSDoc: что документировать, а что нет? | +| Типизация | Как типизировать: type vs interface, any/unknown? | -### Applied Sections +### Прикладные разделы -**How a specific area works** — rules, structure, and code examples for specific technologies and tools. +**Как это настроить и использовать** — конфигурация, структура и примеры кода для конкретных областей. + +| Раздел | Отвечает на вопрос | +|--------|-------------------| +| Настройка VS Code | Как настроить редактор для проекта? | +| Структура проекта | Как организованы папки и файлы по SLM? | +| Компоненты | Как устроен компонент: файлы, пропсы, clsx? | +| Page-level компоненты | Как описывать layout, page, loading, error, not-found? | +| Шаблоны и генерация кода | Как работают шаблоны, синтаксис и инструменты генерации? | +| Стили | Как писать CSS: PostCSS Modules, вложенность, медиа, токены? | +| Изображения | _(не заполнен)_ | +| SVG-спрайты | _(не заполнен)_ | +| Видео | _(не заполнен)_ | +| API | _(не заполнен)_ | +| Stores | _(не заполнен)_ | +| Хуки | _(не заполнен)_ | +| Шрифты | _(не заполнен)_ | +| Локализация | _(не заполнен)_ | -| Section | Answers the question | -|---------|---------------------| -| Project Structure | How are folders and files organized by FSD? | -| Components | How is a component structured: files, props, clsx? | -| Page-level Components | How to define layout, page, loading, error, not-found? | -| Templates & Code Generation | How do templates work: syntax, variables, modifiers? | -| Styles | How to write CSS: PostCSS Modules, nesting, media, tokens? | -| Images | _(not filled)_ | -| SVG Sprites | _(not filled)_ | -| Video | _(not filled)_ | -| API | _(not filled)_ | -| Stores | _(not filled)_ | -| Hooks | _(not filled)_ | -| Fonts | _(not filled)_ | -| Localization | _(not filled)_ | diff --git a/README_RU.md b/README_RU.md deleted file mode 100644 index ccadec3..0000000 --- a/README_RU.md +++ /dev/null @@ -1,69 +0,0 @@ -# NextJS Style Guide - -Соглашения по разработке Next.js проектов: архитектура и слои приложения, структура кода, организация модулей, стилизация, типизация и инфраструктура. - -## Использование - -**Для AI-агентов:** - -- [Карта разделов](https://nextjs-style-guide.gromlab.ru/ru/llms.txt) — `llms.txt`, оглавление со ссылками на разделы. -- [Полный текст](https://nextjs-style-guide.gromlab.ru/ru/llms-full.txt) — `llms-full.txt`, вся документация одним файлом. - -**Для проекта:** - -- [Архив с правилами](https://nextjs-style-guide.gromlab.ru/nextjs-style-guide-ru.zip) — `nextjs-style-guide-ru.zip`, набор Markdown-файлов для распаковки в `./ai/nextjs-style-guide/` или другую папку проекта. - -## Структура документации - -### Workflow - -**Что делать и в каком порядке** — пошаговые инструкции. - -| Раздел | Отвечает на вопрос | -|--------|-------------------| -| Начало работы | Что нужно знать перед началом разработки? | -| Создание проекта | Как начать новый проект? | -| Генерация кода | Какие модули должны генерироваться из шаблонов? | -| Добавление страницы | Как добавить новую страницу в проект? | -| Добавление UI-модуля | Как создать компонент, бизнес-модуль, виджет или layout? | -| Стилизация | Как стилизовать компоненты в проекте? | -| Получение данных | Как получать данные с сервера? | -| Управление состоянием | Как работать с состоянием? | -| Локализация | Как добавлять переводы и подключать локализацию? | - -### Базовые правила - -**Каким должен быть код** — стандарты, не привязанные к конкретной технологии. - -| Раздел | Отвечает на вопрос | -|--------|-------------------| -| Технологии и библиотеки | Какой стек используем? | -| Архитектура | Как устроены слои SLM, зависимости, публичный API? | -| Стиль кода | Как оформлять код: отступы, кавычки, импорты, early return? | -| Именование | Как называть файлы, переменные, компоненты, хуки? | -| Документирование | Как писать JSDoc: что документировать, а что нет? | -| Типизация | Как типизировать: type vs interface, any/unknown? | - -### Прикладные разделы - -**Как это настроить и использовать** — конфигурация, структура и примеры кода для конкретных областей. - -| Раздел | Отвечает на вопрос | -|--------|-------------------| -| Настройка VS Code | Как настроить редактор для проекта? | -| Структура проекта | Как организованы папки и файлы по SLM? | -| Компоненты | Как устроен компонент: файлы, пропсы, clsx? | -| Page-level компоненты | Как описывать layout, page, loading, error, not-found? | -| Шаблоны и генерация кода | Как работают шаблоны, синтаксис и инструменты генерации? | -| Стили | Как писать CSS: PostCSS Modules, вложенность, медиа, токены? | -| Изображения | _(не заполнен)_ | -| SVG-спрайты | _(не заполнен)_ | -| Видео | _(не заполнен)_ | -| API | _(не заполнен)_ | -| Stores | _(не заполнен)_ | -| Хуки | _(не заполнен)_ | -| Шрифты | _(не заполнен)_ | -| Локализация | _(не заполнен)_ | - - - diff --git a/docs/ru/applied/api.md b/docs/docs/applied/api.md similarity index 100% rename from docs/ru/applied/api.md rename to docs/docs/applied/api.md diff --git a/docs/ru/applied/components.md b/docs/docs/applied/components.md similarity index 96% rename from docs/ru/applied/components.md rename to docs/docs/applied/components.md index addc019..fd2d07c 100644 --- a/docs/ru/applied/components.md +++ b/docs/docs/applied/components.md @@ -6,7 +6,7 @@ title: Компоненты Правила написания React-компонентов: файловая структура модуля, типизация пропсов, документирование и реализация. Раздел охватывает компоненты всех слоёв — от `shared/ui` до `screens`. -Архитектурные слои и их назначение описаны в разделе [Архитектура](/ru/basics/architecture/). +Архитектурные слои и их назначение описаны в разделе [Архитектура](/docs/basics/architecture/). ## Правила организации @@ -43,7 +43,7 @@ container/ - **`type` вместо `interface`** — гибче для пропсов: поддерживает union, intersection, mapped types. Declaration merging пропсам не нужно. - **Без `FC`** — неявно добавляет `children`, усложняет дженерики, не даёт преимуществ перед аннотацией параметра. - **Типы в `types/`, а не в `.tsx`** — предотвращает циклические зависимости (компонент импортирует хук, хук импортирует тип из компонента) и разделяет ответственность: `.tsx` для рендера, `.type.ts` для данных. -- **Без возвращаемого типа** — TypeScript выводит из JSX. Осознанное исключение из [базового правила](/ru/basics/typing). +- **Без возвращаемого типа** — TypeScript выводит из JSX. Осознанное исключение из [базового правила](/docs/basics/typing). ## Реализация diff --git a/docs/ru/applied/fonts.md b/docs/docs/applied/fonts.md similarity index 100% rename from docs/ru/applied/fonts.md rename to docs/docs/applied/fonts.md diff --git a/docs/ru/applied/hooks.md b/docs/docs/applied/hooks.md similarity index 100% rename from docs/ru/applied/hooks.md rename to docs/docs/applied/hooks.md diff --git a/docs/ru/applied/images-sprites.md b/docs/docs/applied/images-sprites.md similarity index 100% rename from docs/ru/applied/images-sprites.md rename to docs/docs/applied/images-sprites.md diff --git a/docs/ru/applied/localization.md b/docs/docs/applied/localization.md similarity index 100% rename from docs/ru/applied/localization.md rename to docs/docs/applied/localization.md diff --git a/docs/ru/applied/page-level.md b/docs/docs/applied/page-level.md similarity index 100% rename from docs/ru/applied/page-level.md rename to docs/docs/applied/page-level.md diff --git a/docs/ru/applied/project-structure.md b/docs/docs/applied/project-structure.md similarity index 100% rename from docs/ru/applied/project-structure.md rename to docs/docs/applied/project-structure.md diff --git a/docs/ru/applied/stores.md b/docs/docs/applied/stores.md similarity index 100% rename from docs/ru/applied/stores.md rename to docs/docs/applied/stores.md diff --git a/docs/ru/applied/styles.md b/docs/docs/applied/styles.md similarity index 100% rename from docs/ru/applied/styles.md rename to docs/docs/applied/styles.md diff --git a/docs/ru/applied/svg-sprites.md b/docs/docs/applied/svg-sprites.md similarity index 100% rename from docs/ru/applied/svg-sprites.md rename to docs/docs/applied/svg-sprites.md diff --git a/docs/ru/applied/templates-generation.md b/docs/docs/applied/templates-generation.md similarity index 100% rename from docs/ru/applied/templates-generation.md rename to docs/docs/applied/templates-generation.md diff --git a/docs/ru/applied/video.md b/docs/docs/applied/video.md similarity index 100% rename from docs/ru/applied/video.md rename to docs/docs/applied/video.md diff --git a/docs/ru/applied/vscode.md b/docs/docs/applied/vscode.md similarity index 100% rename from docs/ru/applied/vscode.md rename to docs/docs/applied/vscode.md diff --git a/docs/ru/basics/architecture/index.md b/docs/docs/basics/architecture/index.md similarity index 100% rename from docs/ru/basics/architecture/index.md rename to docs/docs/basics/architecture/index.md diff --git a/docs/ru/basics/architecture/reference/layers.md b/docs/docs/basics/architecture/reference/layers.md similarity index 100% rename from docs/ru/basics/architecture/reference/layers.md rename to docs/docs/basics/architecture/reference/layers.md diff --git a/docs/ru/basics/architecture/reference/modules.md b/docs/docs/basics/architecture/reference/modules.md similarity index 98% rename from docs/ru/basics/architecture/reference/modules.md rename to docs/docs/basics/architecture/reference/modules.md index 1af3c60..bd71c9d 100644 --- a/docs/ru/basics/architecture/reference/modules.md +++ b/docs/docs/basics/architecture/reference/modules.md @@ -52,7 +52,7 @@ auth/ └── index.ts # публичный API ``` -Подробное описание каждого сегмента — в разделе [Сегменты](/ru/basics/architecture/reference/segments). +Подробное описание каждого сегмента — в разделе [Сегменты](/docs/basics/architecture/reference/segments). ## Публичный API diff --git a/docs/ru/basics/architecture/reference/segments.md b/docs/docs/basics/architecture/reference/segments.md similarity index 100% rename from docs/ru/basics/architecture/reference/segments.md rename to docs/docs/basics/architecture/reference/segments.md diff --git a/docs/ru/basics/code-style.md b/docs/docs/basics/code-style.md similarity index 100% rename from docs/ru/basics/code-style.md rename to docs/docs/basics/code-style.md diff --git a/docs/ru/basics/documentation.md b/docs/docs/basics/documentation.md similarity index 100% rename from docs/ru/basics/documentation.md rename to docs/docs/basics/documentation.md diff --git a/docs/ru/basics/naming.md b/docs/docs/basics/naming.md similarity index 100% rename from docs/ru/basics/naming.md rename to docs/docs/basics/naming.md diff --git a/docs/ru/basics/tech-stack.md b/docs/docs/basics/tech-stack.md similarity index 96% rename from docs/ru/basics/tech-stack.md rename to docs/docs/basics/tech-stack.md index 2a56fb7..b894be0 100644 --- a/docs/ru/basics/tech-stack.md +++ b/docs/docs/basics/tech-stack.md @@ -13,7 +13,7 @@ title: Технологии и библиотеки - `Next.js` — для продуктовых сайтов. ### Архитектура -- `SLM Design` — собственная модульная архитектура проекта. Подробнее в разделе [Архитектура](/ru/basics/architecture/). +- `SLM Design` — собственная модульная архитектура проекта. Подробнее в разделе [Архитектура](/docs/basics/architecture/). ### UI компоненты - `Mantine UI` — базовые UI-компоненты. diff --git a/docs/ru/basics/typing.md b/docs/docs/basics/typing.md similarity index 100% rename from docs/ru/basics/typing.md rename to docs/docs/basics/typing.md diff --git a/docs/ru/index.md b/docs/docs/index.md similarity index 86% rename from docs/ru/index.md rename to docs/docs/index.md index ccadec3..a54f1b5 100644 --- a/docs/ru/index.md +++ b/docs/docs/index.md @@ -6,12 +6,12 @@ **Для AI-агентов:** -- [Карта разделов](https://nextjs-style-guide.gromlab.ru/ru/llms.txt) — `llms.txt`, оглавление со ссылками на разделы. -- [Полный текст](https://nextjs-style-guide.gromlab.ru/ru/llms-full.txt) — `llms-full.txt`, вся документация одним файлом. +- [llms.txt](/llms.txt) — Карта разделов, оглавление со ссылками на разделы. +- [llms-full.txt](/llms-full.txt) — Вся документация одним файлом. **Для проекта:** -- [Архив с правилами](https://nextjs-style-guide.gromlab.ru/nextjs-style-guide-ru.zip) — `nextjs-style-guide-ru.zip`, набор Markdown-файлов для распаковки в `./ai/nextjs-style-guide/` или другую папку проекта. +- [nextjs-style-guide.zip](/nextjs-style-guide.zip) — Набор Markdown-файлов для распаковки в `./ai/nextjs-style-guide/` или другую папку проекта. ## Структура документации diff --git a/docs/ru/workflow.md b/docs/docs/workflow.md similarity index 100% rename from docs/ru/workflow.md rename to docs/docs/workflow.md diff --git a/docs/ru/workflow/code-generation.md b/docs/docs/workflow/code-generation.md similarity index 94% rename from docs/ru/workflow/code-generation.md rename to docs/docs/workflow/code-generation.md index 5cce8ed..a74a5ed 100644 --- a/docs/ru/workflow/code-generation.md +++ b/docs/docs/workflow/code-generation.md @@ -28,4 +28,4 @@ title: Генерация кода - Повторяющаяся структура появляется больше одного раза. - Существующий шаблон не покрывает нужный тип модуля. -Инструменты и синтаксис шаблонов — [Шаблоны и генерация кода](/ru/applied/templates-generation). +Инструменты и синтаксис шаблонов — [Шаблоны и генерация кода](/docs/applied/templates-generation). diff --git a/docs/ru/workflow/creating-app.md b/docs/docs/workflow/creating-app.md similarity index 100% rename from docs/ru/workflow/creating-app.md rename to docs/docs/workflow/creating-app.md diff --git a/docs/ru/workflow/creating-components.md b/docs/docs/workflow/creating-components.md similarity index 62% rename from docs/ru/workflow/creating-components.md rename to docs/docs/workflow/creating-components.md index cacf98c..126b9a4 100644 --- a/docs/ru/workflow/creating-components.md +++ b/docs/docs/workflow/creating-components.md @@ -12,11 +12,11 @@ title: Добавление UI-модуля ## Порядок действий -1. [Сгенерировать](/ru/applied/templates-generation) модуль из соответствующего шаблона в целевой слой. +1. [Сгенерировать](/docs/applied/templates-generation) модуль из соответствующего шаблона в целевой слой. 2. Заполнить модуль логикой и стилями. ## Дочерние компоненты -Если модулю нужны внутренние подкомпоненты — [генерировать](/ru/applied/templates-generation) их из шаблона `component` в папку `ui/` внутри родительского модуля. Дочерние компоненты не экспортируются через `index.ts` родителя. +Если модулю нужны внутренние подкомпоненты — [генерировать](/docs/applied/templates-generation) их из шаблона `component` в папку `ui/` внутри родительского модуля. Дочерние компоненты не экспортируются через `index.ts` родителя. -Правила написания компонентов — [Компоненты](/ru/applied/components). +Правила написания компонентов — [Компоненты](/docs/applied/components). diff --git a/docs/ru/workflow/creating-pages.md b/docs/docs/workflow/creating-pages.md similarity index 85% rename from docs/ru/workflow/creating-pages.md rename to docs/docs/workflow/creating-pages.md index 1be0eaf..b9c3785 100644 --- a/docs/ru/workflow/creating-pages.md +++ b/docs/docs/workflow/creating-pages.md @@ -12,7 +12,7 @@ title: Добавление страницы ## Порядок действий -1. [Сгенерировать](/ru/applied/templates-generation) экран из шаблона `screen` в папку `src/screens/`. +1. [Сгенерировать](/docs/applied/templates-generation) экран из шаблона `screen` в папку `src/screens/`. 2. Заполнить экран логикой и стилями. @@ -20,8 +20,8 @@ title: Добавление страницы ## Правила -- Ручное создание файловой структуры экрана запрещено — только [генерация](/ru/applied/templates-generation) из шаблона. +- Ручное создание файловой структуры экрана запрещено — только [генерация](/docs/applied/templates-generation) из шаблона. - Логика, стили и зависимости размещаются в экране, не в `page.tsx`. - Каждая страница содержит `metadata` с `title` и `description`. -Примеры `page.tsx` и `metadata` — [Page-level компоненты](/ru/applied/page-level). +Примеры `page.tsx` и `metadata` — [Page-level компоненты](/docs/applied/page-level). diff --git a/docs/ru/workflow/data-fetching.md b/docs/docs/workflow/data-fetching.md similarity index 100% rename from docs/ru/workflow/data-fetching.md rename to docs/docs/workflow/data-fetching.md diff --git a/docs/ru/workflow/getting-started.md b/docs/docs/workflow/getting-started.md similarity index 92% rename from docs/ru/workflow/getting-started.md rename to docs/docs/workflow/getting-started.md index b7ed5f4..630b879 100644 --- a/docs/ru/workflow/getting-started.md +++ b/docs/docs/workflow/getting-started.md @@ -10,7 +10,7 @@ title: Начало работы **Next.js** (App Router), **Mantine**, **Zustand**, **SLM Design**. -Подробнее — [Технологии и библиотеки](/ru/basics/tech-stack). +Подробнее — [Технологии и библиотеки](/docs/basics/tech-stack). ## Ключевые особенности @@ -19,4 +19,4 @@ title: Начало работы ## Настройка окружения -Открыть проект в VS Code и установить рекомендуемые расширения — редактор предложит это автоматически. Подробнее — [Настройка VS Code](/ru/applied/vscode). +Открыть проект в VS Code и установить рекомендуемые расширения — редактор предложит это автоматически. Подробнее — [Настройка VS Code](/docs/applied/vscode). diff --git a/docs/ru/workflow/localization.md b/docs/docs/workflow/localization.md similarity index 100% rename from docs/ru/workflow/localization.md rename to docs/docs/workflow/localization.md diff --git a/docs/ru/workflow/state-management.md b/docs/docs/workflow/state-management.md similarity index 100% rename from docs/ru/workflow/state-management.md rename to docs/docs/workflow/state-management.md diff --git a/docs/ru/workflow/styling.md b/docs/docs/workflow/styling.md similarity index 94% rename from docs/ru/workflow/styling.md rename to docs/docs/workflow/styling.md index 5d27a1f..5cadcf0 100644 --- a/docs/ru/workflow/styling.md +++ b/docs/docs/workflow/styling.md @@ -20,4 +20,4 @@ title: Стилизация - **Магические значения** — произвольные цвета, отступы и скругления запрещены, использовать токены. - **Глобальные стили** вне `app/styles/` запрещены. -Правила написания CSS, вложенность, медиа-запросы и токены — [Стили](/ru/applied/styles). +Правила написания CSS, вложенность, медиа-запросы и токены — [Стили](/docs/applied/styles). diff --git a/docs/en/applied/api.md b/docs/en/applied/api.md deleted file mode 100644 index 92e2c05..0000000 --- a/docs/en/applied/api.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: API ---- - -# API diff --git a/docs/en/applied/components.md b/docs/en/applied/components.md deleted file mode 100644 index 62b33e6..0000000 --- a/docs/en/applied/components.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Components ---- - -# Components - -Rules for creating UI components across all FSD layers. diff --git a/docs/en/applied/fonts.md b/docs/en/applied/fonts.md deleted file mode 100644 index f44d50c..0000000 --- a/docs/en/applied/fonts.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Fonts ---- - -# Fonts diff --git a/docs/en/applied/hooks.md b/docs/en/applied/hooks.md deleted file mode 100644 index a0c4376..0000000 --- a/docs/en/applied/hooks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Hooks ---- - -# Hooks diff --git a/docs/en/applied/images-sprites.md b/docs/en/applied/images-sprites.md deleted file mode 100644 index 9014879..0000000 --- a/docs/en/applied/images-sprites.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Images ---- - -# Images diff --git a/docs/en/applied/localization.md b/docs/en/applied/localization.md deleted file mode 100644 index c0c5eb3..0000000 --- a/docs/en/applied/localization.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Localization ---- - -# Localization diff --git a/docs/en/applied/page-level.md b/docs/en/applied/page-level.md deleted file mode 100644 index 7da2c23..0000000 --- a/docs/en/applied/page-level.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Page-level Components ---- - -# Page-level Components - -Next.js App Router special files used by the framework by convention: `layout.tsx`, `page.tsx`, `loading.tsx`, `error.tsx`, `not-found.tsx`, `template.tsx`. diff --git a/docs/en/applied/project-structure.md b/docs/en/applied/project-structure.md deleted file mode 100644 index bbf5def..0000000 --- a/docs/en/applied/project-structure.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Project Structure ---- - -# Project Structure - -Base project structure and principles of module organization at folder and file level. diff --git a/docs/en/applied/stores.md b/docs/en/applied/stores.md deleted file mode 100644 index d0cf77d..0000000 --- a/docs/en/applied/stores.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Stores ---- - -# Stores diff --git a/docs/en/applied/styles.md b/docs/en/applied/styles.md deleted file mode 100644 index 7af40ac..0000000 --- a/docs/en/applied/styles.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Styles ---- - -# Styles - -CSS writing rules: PostCSS Modules, nesting, media queries, variables, formatting. diff --git a/docs/en/applied/svg-sprites.md b/docs/en/applied/svg-sprites.md deleted file mode 100644 index 45e5895..0000000 --- a/docs/en/applied/svg-sprites.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: SVG Sprites ---- - -# SVG Sprites diff --git a/docs/en/applied/templates-generation.md b/docs/en/applied/templates-generation.md deleted file mode 100644 index c137721..0000000 --- a/docs/en/applied/templates-generation.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Templates & Code Generation ---- - -# Templates & Code Generation - -Template tools, syntax, and examples for code generation. diff --git a/docs/en/applied/video.md b/docs/en/applied/video.md deleted file mode 100644 index 7b6cd18..0000000 --- a/docs/en/applied/video.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Video ---- - -# Video diff --git a/docs/en/basics/architecture.md b/docs/en/basics/architecture.md deleted file mode 100644 index b908f6b..0000000 --- a/docs/en/basics/architecture.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Architecture ---- - -# Architecture - -Architecture based on FSD (Feature-Sliced Design) and strict module boundaries. diff --git a/docs/en/basics/code-style.md b/docs/en/basics/code-style.md deleted file mode 100644 index 85bec4b..0000000 --- a/docs/en/basics/code-style.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Code Style ---- - -# Code Style - -Unified code formatting rules: indentation, line breaks, quotes, import order, and readability. diff --git a/docs/en/basics/documentation.md b/docs/en/basics/documentation.md deleted file mode 100644 index 094808e..0000000 --- a/docs/en/basics/documentation.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Documentation ---- - -# Documentation - -Documentation should help understand the purpose of an entity, not duplicate its types or obvious details. diff --git a/docs/en/basics/naming.md b/docs/en/basics/naming.md deleted file mode 100644 index c5aebc0..0000000 --- a/docs/en/basics/naming.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Naming ---- - -# Naming - -Naming should be predictable, concise, and reflect the meaning of the entity. diff --git a/docs/en/basics/tech-stack.md b/docs/en/basics/tech-stack.md deleted file mode 100644 index c43318f..0000000 --- a/docs/en/basics/tech-stack.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Tech Stack ---- - -# Tech Stack - -Base technology stack and libraries used in projects. diff --git a/docs/en/basics/typing.md b/docs/en/basics/typing.md deleted file mode 100644 index faa1d11..0000000 --- a/docs/en/basics/typing.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Typing ---- - -# Typing - -Typing is required for all public interfaces, functions, and components. diff --git a/docs/en/index.md b/docs/en/index.md deleted file mode 100644 index 16fca63..0000000 --- a/docs/en/index.md +++ /dev/null @@ -1,66 +0,0 @@ -# NextJS Style Guide - -Conventions for Next.js project development: application architecture and layers, code structure, module organization, styling, typing, and infrastructure. - -## Usage - -**For AI agents:** - -- [Sections map](https://nextjs-style-guide.gromlab.ru/en/llms.txt) — `llms.txt`, table of contents with links to sections. -- [Full text](https://nextjs-style-guide.gromlab.ru/en/llms-full.txt) — `llms-full.txt`, the entire documentation in a single file. - -**For projects:** - -- [Rules archive](https://nextjs-style-guide.gromlab.ru/nextjs-style-guide-en.zip) — `nextjs-style-guide-en.zip`, a set of Markdown files to unpack into `./ai/nextjs-style-guide/` or another project folder. - -## Documentation Structure - -### Processes - -**What to do** in a specific situation — step-by-step instructions. - -| Section | Answers the question | -|---------|---------------------| -| Getting Started | What tools to install before starting development? | -| Creating an App | How to create a new project, where to get a template? | -| Creating Pages | How to add a page: routing and screen? | -| Creating Components | How to generate components using templates? | -| Styling | What to use: Mantine, tokens, or PostCSS? | -| Data Fetching | How to fetch data: SWR, codegen, sockets? | -| State Management | When and how to create a store (Zustand)? | -| Localization | How to add translations and work with i18next? | - -### Basic Rules - -**What the code should look like** — standards not tied to a specific technology. - -| Section | Answers the question | -|---------|---------------------| -| Tech Stack | What stack do we use? | -| Architecture | How are SLM layers, dependencies, and public API structured? | -| Code Style | How to format code: indentation, quotes, imports, early return? | -| Naming | How to name files, variables, components, hooks? | -| Documentation | How to write JSDoc: what to document and what not? | -| Typing | How to type: type vs interface, any/unknown? | - -### Applied Sections - -**How a specific area works** — rules, structure, and code examples for specific technologies and tools. - -| Section | Answers the question | -|---------|---------------------| -| Project Structure | How are folders and files organized by FSD? | -| Components | How is a component structured: files, props, clsx? | -| Page-level Components | How to define layout, page, loading, error, not-found? | -| Templates & Code Generation | How do templates work: syntax, variables, modifiers? | -| Styles | How to write CSS: PostCSS Modules, nesting, media, tokens? | -| Images | _(not filled)_ | -| SVG Sprites | _(not filled)_ | -| Video | _(not filled)_ | -| API | _(not filled)_ | -| Stores | _(not filled)_ | -| Hooks | _(not filled)_ | -| Fonts | _(not filled)_ | -| Localization | _(not filled)_ | - - diff --git a/docs/en/workflow/creating-app.md b/docs/en/workflow/creating-app.md deleted file mode 100644 index 119b9b6..0000000 --- a/docs/en/workflow/creating-app.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Creating an App ---- - -# Creating an App - -How to create a new application: choosing a project template and initialization. diff --git a/docs/en/workflow/creating-components.md b/docs/en/workflow/creating-components.md deleted file mode 100644 index 6c71dd2..0000000 --- a/docs/en/workflow/creating-components.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Creating Components ---- - -# Creating Components - -Generating components using templates, working with child components. diff --git a/docs/en/workflow/creating-pages.md b/docs/en/workflow/creating-pages.md deleted file mode 100644 index 5edd2fa..0000000 --- a/docs/en/workflow/creating-pages.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Creating Pages ---- - -# Creating Pages - -Page creation pattern: routing (page.tsx) and screen. diff --git a/docs/en/workflow/data-fetching.md b/docs/en/workflow/data-fetching.md deleted file mode 100644 index a20cf89..0000000 --- a/docs/en/workflow/data-fetching.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Data Fetching ---- - -# Data Fetching - -How to fetch data: SWR, API client codegen, sockets. diff --git a/docs/en/workflow/getting-started.md b/docs/en/workflow/getting-started.md deleted file mode 100644 index a503150..0000000 --- a/docs/en/workflow/getting-started.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Getting Started ---- - -# Getting Started - -Setting up the environment and installing tools before starting development. diff --git a/docs/en/workflow/localization.md b/docs/en/workflow/localization.md deleted file mode 100644 index 6231664..0000000 --- a/docs/en/workflow/localization.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Localization ---- - -# Localization - -How to add translations and work with i18next. diff --git a/docs/en/workflow/state-management.md b/docs/en/workflow/state-management.md deleted file mode 100644 index 05cfa65..0000000 --- a/docs/en/workflow/state-management.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: State Management ---- - -# State Management - -When and how to create a store (Zustand), what to store locally vs globally. diff --git a/docs/en/workflow/styling.md b/docs/en/workflow/styling.md deleted file mode 100644 index 495de7e..0000000 --- a/docs/en/workflow/styling.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Styling ---- - -# Styling - -Styling tools priority and rules for their application. diff --git a/docs/index.md b/docs/index.md index bd9aede..c1046c8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,102 +3,21 @@ layout: false ---