Перейти к основному содержимому

Участие в разработке

EMD Cloud SDK — это open-source проекты под лицензией MIT. Мы приветствуем вклад сообщества в развитие наших инструментов!

Лицензия MIT

Все SDK EMD Cloud распространяются под лицензией MIT. Это означает, что вы можете:

Использовать код в коммерческих и некоммерческих проектах
Изменять и адаптировать под свои нужды
Распространять и делиться с другими
Вносить улучшения и создавать Pull Request
Создавать производные работы

Единственное требование — сохранять уведомление об авторских правах и лицензии в копиях программного обеспечения.

Наши репозитории

JavaScript SDK

GitHub: EMD-Cloud/sdk
NPM: @emd-cloud/sdk

Основная библиотека для работы с EMD Cloud API.

React Components

GitHub: EMD-Cloud/react-components
NPM: @emd-cloud/react-components

Готовые React компоненты и хуки.

Create App

GitHub: EMD-Cloud/create-app
NPM: @emd-cloud/create-app

Инструмент для создания проектов с EMD Cloud.

Как внести вклад

1. Сообщить о проблеме

Нашли баг или у вас есть предложение? Создайте issue на GitHub:

  1. Перейдите в соответствующий репозиторий
  2. Нажмите "Issues" → "New Issue"
  3. Опишите проблему или предложение
  4. Добавьте примеры кода, если возможно
  5. Укажите версию SDK и окружение

Хороший issue содержит:

  • Четкое описание проблемы
  • Шаги для воспроизведения
  • Ожидаемое и фактическое поведение
  • Версию SDK и окружение (браузер/Node.js)
  • Примеры кода

2. Предложить улучшение

Есть идея новой функции? Создайте Feature Request:

  1. Откройте issue с меткой "enhancement"
  2. Опишите, что вы хотите добавить
  3. Объясните, зачем это нужно
  4. Предложите возможную реализацию

3. Создать Pull Request

Хотите внести изменения в код? Следуйте этим шагам:

Шаг 1: Fork репозитория

# Клонируйте ваш fork
git clone https://github.com/YOUR_USERNAME/sdk.git
cd sdk

# Добавьте upstream remote
git remote add upstream https://github.com/EMD-Cloud/sdk.git

Шаг 2: Создайте ветку

# Обновите main ветку
git checkout main
git pull upstream main

# Создайте новую ветку для изменений
git checkout -b feature/my-new-feature
# или
git checkout -b fix/bug-description

Шаг 3: Внесите изменения

# Внесите изменения в код
# Добавьте тесты для новой функциональности
# Обновите документацию, если необходимо

# Проверьте код
npm run lint
npm run test

# Закоммитьте изменения
git add .
git commit -m "feat: добавлена новая функция"
# или
git commit -m "fix: исправлен баг с авторизацией"

Шаг 4: Отправьте изменения

# Отправьте ветку в ваш fork
git push origin feature/my-new-feature

Шаг 5: Создайте Pull Request

  1. Перейдите на GitHub в ваш fork
  2. Нажмите "Compare & pull request"
  3. Заполните описание PR:
    • Что изменено
    • Зачем это нужно
    • Как протестировано
  4. Отправьте PR на review

Правила для Pull Request

Делайте:

  • Один PR = одна функция/исправление
  • Пишите понятные commit сообщения
  • Добавляйте тесты для нового кода
  • Обновляйте документацию
  • Следуйте code style проекта
  • Проверяйте, что все тесты проходят

Не делайте:

  • Смешивайте несколько изменений в одном PR
  • Изменяйте код style без необходимости
  • Добавляйте ненужные зависимости
  • Коммитьте закомментированный код
  • Оставляйте console.log в production коде

Coding Standards

JavaScript/TypeScript

// ✅ Хорошо: используйте const/let
const userName = 'John';
let counter = 0;

// ❌ Плохо: не используйте var
var userName = 'John';

// ✅ Хорошо: async/await
async function fetchData() {
const result = await api.getData();
return result;
}

// ❌ Плохо: callback hell
function fetchData(callback) {
api.getData(function(result) {
callback(result);
});
}

// ✅ Хорошо: деструктуризация
const { name, email } = user;

// ✅ Хорошо: стрелочные функции
const double = (x) => x * 2;

// ✅ Хорошо: template literals
const message = `Hello, ${userName}!`;

Именование

// ✅ Хорошо: camelCase для переменных и функций
const userName = 'John';
function getUserData() {}

// ✅ Хорошо: PascalCase для классов и компонентов
class UserManager {}
function UserProfile() {}

// ✅ Хорошо: UPPER_CASE для констант
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = 'https://api.emd.one';

// ✅ Хорошо: описательные имена
const isUserAuthenticated = true;
const hasPermission = false;

// ❌ Плохо: однобуквенные имена (кроме циклов)
const u = getUser();
const d = new Date();

Комментарии

// ✅ Хорошо: JSDoc для публичных API
/**
* Авторизует пользователя по логину и паролю
* @param {string} login - Email пользователя
* @param {string} password - Пароль
* @returns {Promise<User>} Данные пользователя
*/
async function login(login, password) {
// ...
}

// ✅ Хорошо: комментарии для сложной логики
// Проверяем, не истек ли токен (добавляем 5 минут запаса)
if (tokenExpiry < Date.now() + 5 * 60 * 1000) {
await refreshToken();
}

// ❌ Плохо: очевидные комментарии
// Увеличиваем счетчик на 1
counter++;

Процесс review

После создания PR:

  1. Автоматические проверки — CI/CD запустит тесты и линтеры
  2. Code review — мейнтейнеры проверят код
  3. Обсуждение — возможны вопросы и предложения по улучшению
  4. Изменения — внесите правки, если требуется
  5. Merge — после одобрения PR будет смержен

Разработка локально

Установка зависимостей

# Клонируйте репозиторий
git clone https://github.com/EMD-Cloud/sdk.git
cd sdk

# Установите зависимости
npm install

Запуск тестов

# Запустить все тесты
npm test

# Запустить тесты в watch режиме
npm run test:watch

# Проверить покрытие кода
npm run test:coverage

Линтинг

# Проверить код
npm run lint

# Автоматически исправить ошибки
npm run lint:fix

Сборка

# Собрать проект
npm run build

# Собрать в watch режиме
npm run build:watch

Сообщество

Telegram

Присоединяйтесь к нашему Telegram сообществу для:

  • Обсуждения идей
  • Помощи другим разработчикам
  • Новостей о релизах
  • Общения с командой

GitHub Discussions

Используйте GitHub Discussions для:

  • Вопросов по использованию
  • Обсуждения архитектуры
  • Предложений улучшений
  • Обмена опытом

Благодарности

Спасибо всем, кто вносит вклад в развитие EMD Cloud SDK! 🎉

Список контрибьюторов:

Вопросы?

Если у вас есть вопросы о процессе участия:

  1. Прочитайте документацию
  2. Посмотрите существующие issues
  3. Спросите в Telegram
  4. Создайте discussion

Следующие шаги


Спасибо за интерес к EMD Cloud! Мы ценим каждый вклад в развитие проекта. ❤️