First off, thank you for considering contributing to ESP32-WiFi-Manager! It's people like you that make this project better for everyone.
By participating in this project, you are expected to uphold our code of conduct:
- Be respectful and inclusive
- Welcome newcomers and help them get started
- Focus on what is best for the community
- Show empathy towards other community members
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
Bug Report Template:
- Description: Clear description of the bug
- Steps to Reproduce: Step-by-step instructions
- Expected Behavior: What you expected to happen
- Actual Behavior: What actually happened
- Environment:
- ESP32-S3 board version (v1.0 or v1.1)
- PlatformIO or Arduino IDE version
- Operating system
- Library versions
- Serial Output: Include relevant serial monitor output
- Screenshots: If applicable
Enhancement suggestions are welcome! Please provide:
- Clear use case: Why is this enhancement useful?
- Detailed description: What should it do?
- Possible implementation: If you have ideas
- Alternatives considered: Other approaches you've thought about
-
Fork the Repository
git clone https://github.com/EmilyKeer/ESP32-WiFi-Manager.git cd ESP32-WiFi-Manager -
Create a Branch
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make Your Changes
- Follow the code style guidelines below
- Add comments where necessary
- Update documentation if needed
-
Test Your Changes
- Build and upload to ESP32-S3 hardware
- Test all affected features
- Verify serial commands work
- Check web interface functionality
- Test on both WiFi connection and disconnection
-
Commit Your Changes
git add . git commit -m "Brief description of changes"
Commit message format:
feat: Add new LED pattern featurefix: Resolve WiFi reconnection issuedocs: Update installation instructionsrefactor: Improve LED controller codetest: Add unit tests for WiFiManager
-
Push to Your Fork
git push origin feature/your-feature-name
-
Submit a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Select your branch
- Fill in the PR template with details
- Link any related issues
- PlatformIO or Arduino IDE
- ESP32-S3-DevKitC-1 development board
- USB-C cable
-
Install PlatformIO (recommended)
- Install VS Code
- Install PlatformIO extension
-
Clone and Build
git clone https://github.com/EmilyKeer/ESP32-WiFi-Manager.git cd ESP32-WiFi-Manager pio run -
Upload and Monitor
pio run --target upload pio device monitor
-
Indentation: 4 spaces (no tabs)
-
Naming Conventions:
- Classes:
PascalCase(e.g.,WiFiManager) - Functions:
camelCase(e.g.,setColor()) - Variables:
camelCase(e.g.,currentRed) - Constants:
UPPER_CASE(e.g.,RGB_LED_PIN) - Private members:
camelCase(e.g.,serverRunning)
- Classes:
-
File Structure:
- Header guards:
#ifndef FILE_NAME_H - Include order: Arduino libraries → Third-party → Project headers
- Copyright header at top of each file
- Header guards:
-
Comments:
// Single-line comments for brief explanations /** * Multi-line comments for function documentation * @param paramName Description of parameter * @return Description of return value */
-
Braces:
// Use K&R style void function() { if (condition) { // code } else { // code } }
- Indentation: 4 spaces
- Naming:
kebab-casefor CSS classes - Comments: Use
<!-- -->for HTML,/* */for CSS - Keep embedded web code minimal and well-formatted
- Code compiles without errors
- Code compiles without warnings
- Tested on actual ESP32-S3 hardware
- WiFi connection works
- Web interface loads correctly
- LED control functions properly
- Serial commands work as expected
- No memory leaks or crashes during extended use
- Documentation updated (if applicable)
-
WiFi Functionality:
- Scan networks
- Connect to WPA2 network
- Connect to open network
- Automatic reconnection
- Disconnect and forget
-
LED Control:
- Set RGB colors
- Adjust brightness
- Preset colors work
- Rainbow effect
- Turn off
-
Web Interface:
- Status page loads
- LED control page loads
- Tab switching works
- Responsive on mobile
- API endpoints respond correctly
-
Serial Interface:
- All commands execute
- Output is readable
- Error messages are clear
ESP32-WiFi-Manager/
├── include/ # Header files
├── src/ # Source files
├── .github/ # GitHub templates
├── platformio.ini # PlatformIO config
├── README.md # Main documentation
├── LICENSE # MIT License
├── CONTRIBUTING.md # This file
└── NOTICE # Third-party attributions
- Update README.md if you add/change features
- Add inline comments for complex logic
- Update API documentation if endpoints change
- Include examples in pull request description
Feel free to:
- Open an issue for questions
- Check existing issues and pull requests
- Reach out in the pull request comments
Contributors will be recognized in:
- GitHub contributors page
- Future CONTRIBUTORS.md file (if created)
- Release notes for significant contributions
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to ESP32-WiFi-Manager!