Thank you for your interest in contributing to Open Wemo! This document provides guidelines and instructions for contributing.
- Bun v1.0 or later
- Git
- A WeMo device for testing (optional but recommended)
# Clone the repository
git clone https://github.com/haal-laah/open-wemo.git
cd open-wemo
# Switch to develop branch
git checkout develop
# Install dependencies
bun install
# Start development server
bun run devWe use Biome for linting and formatting:
# Check for issues
bun run lint
# Auto-fix issues
bun run lint:fix
# Format code
bun run formatbun run typecheckbun run testopen-wemo/
├── packages/
│ ├── bridge/ # Desktop tray app + REST API
│ │ └── src/
│ │ ├── main.ts # Entry point
│ │ ├── server/ # Hono REST API
│ │ ├── wemo/ # WeMo protocol
│ │ ├── tray/ # System tray
│ │ └── db/ # SQLite
│ │
│ └── web/ # PWA frontend
│ ├── index.html
│ ├── css/
│ ├── js/
│ └── sw.js
│
├── scripts/ # Build scripts
└── docs/ # Documentation
Write clear, concise commit messages:
- Good: "Add power monitoring display to device card"
- Bad: "Updated stuff"
Use present tense ("Add feature" not "Added feature").
- Create a feature branch from
develop(notmain) - Make your changes
- Run tests and linting
- Submit a PR targeting the
developbranch
Note: The
mainbranch is reserved for stable releases. All pull requests should targetdevelop.
- Code follows project style guidelines
- Tests pass (
bun run test) - Linting passes (
bun run lint) - Type checking passes (
bun run typecheck) - Documentation updated (if applicable)
- Commit messages are clear
- Use strict typing - avoid
any - Export types from dedicated type files
- Document public APIs with JSDoc comments
- Always handle errors gracefully
- Provide user-friendly error messages
- Log errors for debugging
- Write unit tests for protocol code
- Test error cases, not just happy paths
- Keep tests focused and fast
To add support for a new WeMo device type:
- Add the device type to
packages/bridge/src/wemo/types.ts - Implement any device-specific SOAP actions
- Update the discovery code if needed
- Add tests for the new device type
- Update documentation
If you find a bug or have a feature request:
- Check existing GitHub Issues
- Open a new issue with a clear description
- Include steps to reproduce (for bugs)
- Include expected vs actual behavior
Open an issue or start a discussion. We're happy to help!
By contributing, you agree that your contributions will be licensed under the PolyForm Noncommercial License 1.0.0.