Skip to content

С чего начать вклад в проект

Добро пожаловать! Pano — это проект с открытым исходным кодом, и мы приветствуем вклад сообщества. Будь то исправление ошибок, добавление новых функций или улучшение документации — ваша помощь неоценима.

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

Pano состоит из нескольких репозиториев, каждый из которых служит определенной цели:

  • Pano (Core): Основной репозиторий бэкенда (Kotlin/Vert.x).
  • panel-ui: Интерфейс панели управления (SvelteKit).
  • setup-ui: Мастер первоначальной настройки (SvelteKit).
  • vanilla-theme: Официальная тема по умолчанию (SvelteKit).
  • pano-mc-plugin: Плагин интеграции для Minecraft сервера.
  • docs: Репозиторий этой документации.

🚀 Типы релизов

Мы придерживаемся трехэтапного цикла выпуска обновлений в наших ветках:

ТипВеткаСтабильностьОписание
AlphaalphaНизкаяАктивная разработка, частые обновления. Может содержать критические изменения.
BetabetaСредняяПредрелизная стадия. В целом стабильно, но могут быть мелкие ошибки.
ReleasemainВысокаяГотов к использованию. Самая стабильная версия.

🛠️ Технологический стек

Pano построен на современных технологиях для обеспечения производительности и гибкости:

  • Backend: Kotlin, Vert.x, Spring DI, ориентирован на JVM 11+.
  • Frontend: SvelteKit, Bootstrap 5, SASS.
  • Среда выполнения: Bun используется для работы наших фронтенд-сервисов.
  • Упаковка: Проекты упаковываются в ZIP-архивы и встраиваются в один исполняемый JAR-файл.

📜 Рекомендации по внесению вклада

Чтобы поддерживать высокое качество кодовой базы, пожалуйста, соблюдайте следующие правила:

  • Политика веток:
    • Pano (Core): Активной веткой разработки является alpha. Все Pull Request должны открываться в ветку alpha.
    • UI-проекты: В этих проектах обычно две ветки, но веткой разработки по умолчанию является dev. Пожалуйста, направляйте ваши PR в ветку dev.
  • Conventional Commits: Мы следуем спецификации Conventional Commits. Это обязательное требование для всех сообщений коммитов.
  • Semantic Versioning & Release: Pano использует Semantic Versioning (SemVer) и Semantic Release. Сообщения коммитов используются для автоматической генерации ченджлогов и определения номеров версий.
  • Автоматическое развертывание: Мы используем GitHub Actions для непрерывной интеграции и автоматического развертывания.
  • Поддержка баз данных: Мы стремимся поддерживать MariaDB и MySQL 5.5+. Убедитесь, что ваши запросы к БД и изменения схемы совместимы с этими версиями.
  • Миграции: Мы уделяем большое внимание миграциям конфигурации и базы данных, стараясь обеспечивать обратную совместимость везде, где это возможно.
  • Форматирование кода: Пожалуйста, следите за тем, чтобы ваш код соответствовал общей структуре и стилю существующего проекта.
  • Код, созданный ИИ: Использование ИИ для генерации кода разрешено; однако мы не принимаем код, который является приватным, проприетарным или обременен лицензиями, конфликтующими с нашими целями открытого исходного кода.
  • Качество: PR должны быть чистыми, при необходимости хорошо прокомментированными и протестированными перед отправкой.

🧩 Как работает Pano?

Pano — это не традиционный веб-скрипт. Это автономная платформа, работающая как один JAR-файл (подобно серверу Minecraft). При запуске JAR:

  1. Он извлекает необходимые файлы интерфейса.
  2. Скачивает портативную среду выполнения Bun.
  3. Проверки при запуске:
    • Проверяет, установлена ли платформа.
    • Выполняет миграции конфигурации для обеспечения совместимости с текущей версией.
    • Если платформа установлена, проверяет и применяет миграции базы данных.
  4. Запускает бэкенд-сервис, который работает как обратный прокси (reverse proxy), направляя трафик на соответствующие интерфейсы:
    • Если платформа не установлена, весь трафик направляется на setup-ui.
    • Если платформа установлена, по умолчанию отображается vanilla-theme.
    • Все маршруты, начинающиеся с /panel, проксируются на panel-ui.
  5. Взаимодействует с серверами Minecraft через зашифрованное WebSocket-соединение.

Готовы начать? Ознакомьтесь со специальными руководствами по разработке Бэкенда и Фронтенда.