Skip to content

Contributing to LemonUp ​

First off, thank you for considering contributing to LemonUp! It's people like you that make the World of Warcraft community great.

Local Development ​

LemonUp is built with Bun and Ink. To get started with development, you'll need Bun installed on your machine.

Setup ​

  1. Clone the repository:

    bash
    git clone https://github.com/archcorsair/lemonup.git
    cd lemonup
  2. Install dependencies:

    bash
    bun install
  3. Run in development mode:

    bash
    bun dev -- --dev

    This will launch the TUI with the --dev flag enabled, providing extra logging and faster update check intervals.

Project Structure ​

  • src/core/: Handles addon logic, database management, and API clients.
  • src/tui/: The user interface built with React and Ink.
  • src/cli/: Logic for the non-interactive CLI mode.

Coding Standards ​

  • TypeScript: We use strict TypeScript. Avoid any at all costs.
  • Type Safety: Run bun run typecheck to ensure there are no type errors.
  • Components: UI components in src/tui/ should be functional and follow React best practices.
  • Logging: Use the internal logger for meaningful events. Avoid console.log.
  • Testing: Run bun run test to ensure everything is working correctly before submitting a PR.

Pull Request Process ​

  1. Check Issues: See if there's already an issue for what you want to work on. If not, open one!
  2. Branch: Create a feature branch from main.
  3. Commits: Use conventional commits.
  4. Docs: If you're adding a feature, update the documentation in the lemonup.org repository as well.
  5. PR: Submit your PR to the main branch. Provide a clear description of your changes.

Development Tools ​

We use Biome for formatting and linting.

  • Formatter/Linter: Run bun run lint:fix to automatically fix formatting and linting issues.
  • VS Code Extension: We recommend installing the Biome VS Code extension for real-time feedback.

Need Help? ​

If you have questions or need guidance, feel free to open a discussion on GitHub or reach out to the maintainers.

Released under the MIT License.