Skip to content

Getting Started with Contributions

Welcome! Pano is an open-source project and we love community contributions. Whether you're fixing bugs, adding new features, or improving documentation, your help is appreciated.

Our Repositories

Pano is composed of several repositories, each serving a specific purpose:

  • Pano (Core): The main backend repository (Kotlin/Vert.x).
  • panel-ui: The administrative management interface (SvelteKit).
  • setup-ui: The initial setup wizard (SvelteKit).
  • vanilla-theme: The default official theme (SvelteKit).
  • pano-mc-plugin: Minecraft server-side integration plugin.
  • docs: This documentation repository.

Release Types

We maintain three stages of releases across our branches:

TypeBranchStabilityDescription
AlphaalphaLowActive development, frequent updates. May contain breaking changes.
BetabetaMediumPre-release stage. Generally stable but may have minor bugs.
ReleasemainHighProduction-ready. The most stable version.

Technology Stack

Pano is built using modern technologies to ensure performance and flexibility:

  • Backend: Kotlin, Vert.x, Spring DI, targeting JVM 11+.
  • Frontend: SvelteKit, Bootstrap 5, SASS.
  • Runtime: Bun is used for running our frontend services.
  • Packaging: Projects are packaged into ZIP files and embedded into a single executable JAR file.

Contribution Guidelines

To maintain a high-quality codebase, please follow these guidelines:

  • Branching Policy:
    • Pano (Core): The active development branch is alpha. All Pull Requests should be opened against the alpha branch.
    • UI Projects: These projects typically have two branches, but dev is the default branch for active development. Please target the dev branch for your PRs.
  • Conventional Commits: We follow the Conventional Commits specification. This is strictly required for all commit messages.
  • Semantic Versioning & Release: Pano uses Semantic Versioning (SemVer) and Semantic Release. Commit messages are used to automatically generate changelogs and determine version numbers.
  • Auto Deployment: We use GitHub Actions for continuous integration and automatic deployment.
  • Database Support: We aim to support MariaDB and MySQL 5.5+. Ensure your database queries and schema changes are compatible with these versions.
  • Migrations: We pay close attention to configuration and database migrations, striving to maintain backward compatibility whenever possible.
  • Code Formatting: Please ensure your code follows the general structure and style of the existing project.
  • AI-Generated Code: Using AI to generate code is allowed; however, we cannot accept any code that is private, proprietary, or subject to licenses that conflict with our open-source goals.
  • Quality: PRs should be clean, well-commented where necessary, and tested before submission.

How Pano Works

Pano is not a traditional web script. It's a self-contained platform that runs as a single JAR file (similar to a Minecraft server). When you run the JAR:

  1. It extracts the necessary UI files.
  2. It downloads a portable Bun runtime.
  3. Startup Checks:
    • It checks if the platform is already installed.
    • It performs configuration migrations to ensure compatibility with the current version.
    • If the platform is installed, it checks and applies database migrations.
  4. It starts a backend service that acts as a reverse proxy, directing traffic to the appropriate interfaces:
    • If the platform is not installed, it directs all traffic to setup-ui.
    • If the platform is installed, it directs traffic to vanilla-theme by default.
    • Any routes starting with /panel are proxied to panel-ui.
  5. It communicates with Minecraft servers via an encrypted WebSocket connection.

Ready to dive in? Check out the specific development guides for Backend and Frontend.