Thank you for your interest in contributing to HomeKey-ESP32! We welcome contributions from the community and are pleased to have you join us.
Note
AI/LLM Guidelines
Use of LLMs is permitted to produce the code or content for the wiki as long as the following guidelines are followed:
- Ensure no unnecessary information is added
- Ensure no unnecessary dependencies are added
- Ensure the PR does not include changes to unrelated files and/or unrelated changes within the same file, keep it focused on the purpose of the PR
- Fork the repository on GitHub
- Clone your fork locally:
git clone --recursive https://github.com/your-username/HomeKey-ESP32.git cd HomeKey-ESP32
-
Install ESP-IDF (see the ESP-IDF Installation Guide for details):
-
Install web development dependencies:
cd data ## You need Bun instead, feel free to use npm or yarn instead if you prefer bun install
-
Update submodules:
git submodule update --init --recursive
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following our coding standards (see below)
-
Test your changes:
- For ESP32 firmware:
idf.py build && idf.py flash monitor - For web interface:
cd data && npm run dev
- For ESP32 firmware:
-
Commit your changes:
git add . git commit -m "feat: add your feature description"
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub
- Title your PR with a clear and descriptive title
- Provide a detailed description of your changes and the problem you're trying to solve
- Request review from maintainers
- Address review feedback promptly
- Squash commits if requested
- Include steps to reproduce
- Provide system information
- Include relevant logs and/or screenshots
- Explain the use case
- Describe the expected behavior
- Consider implementation complexity
- Firmware: ESP32 C++ code in
main/ - Web Interface: Svelte code in
data/ - Documentation: Markdown files in
docs/content
- Fix typos and improve clarity
- Add missing documentation
- Update outdated information
- Test on different hardware configurations
- Report compatibility issues
- Validate new features
- Performance benchmarking
// Use consistent indentation (2 spaces)
// Use meaningful variable names
// Add comments for complex logic
class ExampleClass {
public:
void exampleMethod();
private:
int m_exampleVariable;
};Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Test changeschore: Maintenance tasks
Examples:
feat(nfc): add support for multiple card types
fix(web): resolve configuration save issue
docs: update installation guide for Windows
Test on different ESP32 variants:
- ESP32-WROOM-32
- ESP32-S3
- ESP32-C3
- ESP32-C6
- Validate all inputs
- Use secure random number generation
- Implement proper error handling
- Avoid hardcoded secrets
- Use established libraries
- Follow cryptographic best practices
- Secure key storage (not implemented atm)
- Proper random seeding
- Validate certificates
- Implement proper authentication
- Avoid information leakage
- Check existing issues and discussions
- Read the documentation thoroughly
- Search closed issues for similar problems
- Test with the latest development version
- Use the appropriate template
- Provide complete information
- Include relevant logs and screenshots
- Be specific about your environment
- Describe what you've already tried
- Discord: Join our server
- GitHub Discussions: For general questions and ideas
- GitHub Issues: For bug reports and feature requests
- Documentation: Read the docs
Contributors will be:
- Given credit in release notes
- Invited to the contributors team after significant contributions
By contributing, you agree that your contributions will be licensed under the same MIT License that covers the project.
You retain copyright to your contributions. We ask that you license them under the MIT license so they can be included in the main project.
Thank you for contributing to HomeKey-ESP32! Your efforts help make smart home technology more accessible to everyone.