Thank you for your interest in contributing to DLMan! We welcome contributions of all kinds.
# Clone the repository
git clone https://github.com/novincode/dlman.git
cd dlman
# Install dependencies
pnpm install
# Run the desktop app in development mode
pnpm tauri devdlman/
├── apps/
│ ├── desktop/ # Tauri + React desktop app
│ │ ├── src/ # React frontend
│ │ └── src-tauri/ # Rust backend
│ ├── cli/ # CLI application
│ └── extension/ # Browser extension
├── crates/
│ ├── dlman-core/ # Core download engine
│ └── dlman-types/ # Shared types
└── docs/ # Documentation
# Development mode with hot reload
pnpm tauri dev
# Build for production
pnpm tauri build# Run CLI in development
cargo run -p dlman-cli -- --help
# Build release binary
cargo build -p dlman-cli --release# Chrome development
pnpm --filter @dlman/extension dev
# Firefox development
pnpm --filter @dlman/extension dev:firefox
# Build for production
pnpm --filter @dlman/extension build:chrome
pnpm --filter @dlman/extension build:firefox- Strict mode enabled, avoid
anytypes - One component per file
- Use functional components with hooks
- Prefer named exports
- Follow standard clippy lints
- Keep functions focused and small
- Document public APIs
- Keep files under 300 lines when possible
- Write descriptive commit messages
- Add comments for complex logic
# Run Rust tests
cargo test
# Type check frontend
cd apps/desktop && pnpm tsc --noEmit- Check if an issue already exists
- Create an issue if not
- Fork the repository
- Create a branch:
git checkout -b fix/issue-description - Make your changes
- Test thoroughly
- Submit a pull request
- Open an issue to discuss the feature first
- Wait for feedback from maintainers
- Fork and create a branch:
git checkout -b feature/feature-name - Implement the feature
- Add tests if applicable
- Submit a pull request
- 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
- Architecture — System design overview
- Core Engine — Download engine internals
- CLI — Command-line interface docs
- Extension — Browser extension docs
- Development — Detailed dev setup
When reporting bugs, please include:
- DLMan version
- Operating system and version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots or logs if applicable
We're open to feature ideas! When suggesting features:
- Check existing issues first
- Describe the use case
- Explain why it would be valuable
- Consider implementation complexity
- Be respectful and inclusive
- Constructive feedback only
- Help others learn and grow
- Focus on the work, not the person
- Open a GitHub Discussion
- Check existing issues
Thank you for contributing! 🎉