DLManDLMan
Contributing

Contributing to DLMan

We welcome contributions of all kinds — bug fixes, features, docs, and ideas. Here's how to get started.

Prerequisites

Node.js

v20+

Rust

1.75+

pnpm

v9+

Quick Start

Loading...

Project Structure

apps/desktop/

Tauri + React desktop application

apps/cli/

CLI application (Rust)

apps/extension/

Browser extension (WXT)

crates/dlman-core/

Core download engine (Rust)

crates/dlman-types/

Shared type definitions

Development

Desktop App

pnpm tauri devDevelopment mode with hot reload
pnpm tauri buildBuild for production

CLI

cargo run -p dlman-cli -- --helpRun CLI in dev
cargo build -p dlman-cli --releaseBuild release binary

Browser Extension

pnpm --filter @dlman/extension devChrome dev mode
pnpm --filter @dlman/extension dev:firefoxFirefox dev mode
pnpm --filter @dlman/extension build:chromeBuild for Chrome

Code Style

TypeScript / React

  • Strict mode enabled, avoid any types
  • One component per file
  • Functional components with hooks
  • Prefer named exports

Rust

  • Follow standard clippy lints
  • Keep functions focused and small
  • Document public APIs
  • Files under 300 lines when possible

Submitting Changes

Bug Fixes

Check if an issue already exists

Fork the repo and create a branch: fix/issue-description

Make your changes and test thoroughly

Submit a pull request

New Features

Open an issue to discuss the feature first

Wait for feedback from maintainers

Fork and create a branch: feature/feature-name

Implement, test, and submit a PR

Pull Request Guidelines

Keep PRs focused on a single change

Update documentation if needed

Ensure all tests pass

Follow the existing code style

Write a clear PR description

Testing

cargo testRun Rust tests
cd apps/desktop && pnpm tsc --noEmitType check frontend