Table of contents

Вклад в разработку

Mailframe — это бесплатный продукт с открытым исходным кодом. Это означает, что каждый может присоединиться к его развитию.

Если вы обнаружили проблему в документации, сначала проверьте, существует ли уже соответствующая задача. Если подходящей задачи нет, вы можете создать новую, используя соответствующую форму.

Также вы можете отправить запрос на новую функцию, выбрав метку feature-request.

Ознакомьтесь с существующими задачами и выберите ту, которая вас заинтересует. Вы можете сузить поиск с помощью фильтров. Как правило, мы не закрепляем задачи за конкретными разработчиками. Если вы нашли задачу для работы, вы можете создать пулл-реквест с исправлением.

Проект использует Feature-Sliced Design (FSD) — архитектурную методологию для создания масштабируемых фронтенд-приложений.

src/ ├── app/ # 🏗️ Конфигурация приложения │ ├── entrypoints/ # Точки входа │ ├── layouts/ # Макеты страниц │ ├── providers/ # Провайдеры контекста │ └── router/ # Настройка роутинга │ ├── pages/ # 📄 Страницы приложения │ └── [page-name]/ # Композиция виджетов │ ├── widgets/ # 🧩 Виджеты │ └── [widget-name]/ # Композиция фич │ ├── features/ # ✨ Бизнес-функции │ └── [feature-name]/ # Законченная бизнес-логика │ ├── entities/ # 🏢 Бизнес-сущности │ └── [entity-name]/ # Модели предметной области │ └── shared/ # 🔧 Переиспользуемые ресурсы ├── api/ # API клиенты ├── config/ # Конфигурация ├── lib/ # Внешние библиотеки ├── ui/ # UI компоненты └── utils/ # Утилиты

Правила импортов

Запрещены импорты снизу вверх shared → entities → features → widgets → pages → app

Нижние слои не могут импортировать верхние.

Обязательный Public API

  • Все модули экспортируются через index.ts
  • Прямые импорты из внутренних файлов запрещены

Соглашения по коду

  • Язык: Английский для кода, русский для комментариев
  • Именование файлов: kebab-case
  • Именование компонентов: PascalCase
  • Именование переменных: camelCase
  • Типизация: Строгая типизация, избегание any
  1. После внесения изменений создайте пулл-реквест.
  2. Заполните описание пулл-реквеста четким сообщением.
  3. Не забудьте связать пулл-реквест с задачей, если вы решаете конкретную проблему.
  4. Активируйте опцию «Разрешить изменения мейнтейнерам», чтобы ветку можно было обновить для слияния.
  5. После отправки пулл-реквеста его проверит член команды. Мы можем задать вопросы или запросить дополнительную информацию.
  6. Перед слиянием мы можем попросить внести изменения — через предложенные правки или комментарии. Вы можете применить предложенные изменения напрямую через интерфейс. Другие правки внесите в своем форке, затем закоммитьте их в свою ветку.
  7. По мере обновления пулл-реквеста отмечайте каждый обсуждаемый пункт как разрешенный.
  8. При возникновении конфликтов слияния воспользуйтесь этим гайдом по Git для их решения.

Проект находится в стадии активной разработки. Версионные теги обновляются только при достижении стабильной сборки. Заметки о релизах формируются вручную на основе ключевых изменений, включенных в версию.