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.