С чего начать вклад в проект
Добро пожаловать! Pano — это проект с открытым исходным кодом, и мы приветствуем вклад сообщества. Будь то исправление ошибок, добавление новых функций или улучшение документации — ваша помощь неоценима.
📦 Наши репозитории
Pano состоит из нескольких репозиториев, каждый из которых служит определенной цели:
- Pano (Core): Основной репозиторий бэкенда (Kotlin/Vert.x).
- panel-ui: Интерфейс панели управления (SvelteKit).
- setup-ui: Мастер первоначальной настройки (SvelteKit).
- vanilla-theme: Официальная тема по умолчанию (SvelteKit).
- pano-mc-plugin: Плагин интеграции для Minecraft сервера.
- docs: Репозиторий этой документации.
🚀 Типы релизов
Мы придерживаемся трехэтапного цикла выпуска обновлений в наших ветках:
| Тип | Ветка | Стабильность | Описание |
|---|---|---|---|
| Alpha | alpha | Низкая | Активная разработка, частые обновления. Может содержать критические изменения. |
| Beta | beta | Средняя | Предрелизная стадия. В целом стабильно, но могут быть мелкие ошибки. |
| Release | main | Высокая | Готов к использованию. Самая стабильная версия. |
🛠️ Технологический стек
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.
- Pano (Core): Активной веткой разработки является
- 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:
- Он извлекает необходимые файлы интерфейса.
- Скачивает портативную среду выполнения Bun.
- Проверки при запуске:
- Проверяет, установлена ли платформа.
- Выполняет миграции конфигурации для обеспечения совместимости с текущей версией.
- Если платформа установлена, проверяет и применяет миграции базы данных.
- Запускает бэкенд-сервис, который работает как обратный прокси (reverse proxy), направляя трафик на соответствующие интерфейсы:
- Если платформа не установлена, весь трафик направляется на setup-ui.
- Если платформа установлена, по умолчанию отображается vanilla-theme.
- Все маршруты, начинающиеся с
/panel, проксируются на panel-ui.
- Взаимодействует с серверами Minecraft через зашифрованное WebSocket-соединение.
Готовы начать? Ознакомьтесь со специальными руководствами по разработке Бэкенда и Фронтенда.