Contributing
Whether you’re fixing bugs, adding new functionality, improving documentation, or creating your own projects, your contribution is highly valued and appreciated!
Getting Started
Before diving in, familiarize yourself with SensEdu:
- Read through this wiki
- Run basic examples and finished projects
- Explore existing issues
- Review styling guidelines
If you are still not sure what to do, feel free to open a discussion, and we’ll find a task for you!
Styling Guidelines
Please familiarize yourself with the following conventions to ensure styling consistency. It keeps the project manageable, easy to navigate for other developers, and make releases easier to create.
Branch Naming
Follow the format:
<type>/<issue-number>/<short-name>
Try to avoid creating a branch without a linked issue. If you must, follow the format:
<type>/<descriptive-name>
Types
- pcb: Hardware design
- lib: STM32 library
- proj: SensEdu projects
- docs: Website or README documentation
- deploy: Website deployment
Good Examples
proj/7/record-audio
lib/13/dma-integration
pcb/34/tweak-rx-schematics
docs/10/web-emg-page
Commit Messages
Follow the format:
<type>: <subject>
<optional body>
- Subject line: maximum 50 characters, use imperative mood (“Add” not “Added”)
- No period at the end of subject line
- During PR review, reference the PR number in subject line
Types
- feat: New features/additions
- fix: Bug fixes and other broken behaviour
- refactor: Code or project restructuring
- docs: Website or README documentation
- deploy: Website deployment
Good Examples
# New lib feature:
feat: Add ADC3 support
# PCB design:
feat: Draw power supply schematic
# Docs editing:
docs: Finish EMG implementation section
Document hardware setup
Explain RC values for amplifier circuit
Add data acquisition code snippet
# Bug fix:
fix: Rewrite ADC polling
Fix improper ADC initialization in CFGR1 register
# PR review:
refactor: Rename lib example (#90)
Rename `adc_Record` to `ADC_Record`
How to Contribute
Report Bugs
Found a bug or unexpected behaviour? Help us fix it:
- Search for existing issues to avoid duplicates
- Create a new issue with
buglabel, providing:- Steps to reproduce
- Expected vs actual behaviour
- Screenshots, logs, oscilloscope waveforms or any additional data
Suggest Features
Have an idea for a new sensor driver, project or optimization?
- Create an issue with the
enhancementlabel:- Describe your idea in detail
- Provide some usage examples
Improve Documentation
Clear documentation is essential for our educational purposes, help us:
- Fix typos or grammatical errors
- Clarify ambiguous explanations to ensure everything is easy to understand
- Fill in missing explanations
Check Documentation Contributions for detailed instructions.
For educational purposes, the documentation is aimed not only at developers but at beginner students as well. Try to avoid logical skips, use simple language, and add diagrams, images or code examples!
Improve Code
If you are an experienced embedded systems developer, feel free to optimize library code for better performance.
- Review the library wiki section and Library Contributions
- Assign yourself an issue to ensure collaboration with others who are working on the same feature and to avoid duplicates
- Create a fork and develop your feature
- Submit a Pull Request (PR) and ask for a review
Try to keep PRs small, focusing on one feature/fix per PR.
Submit Project
Created something amazing using SensEdu? Share it with us! Check Project Contributions for detailed instructions.
Roadmap
Please refer to the issues, all planned new features are listed there.

Thank You to All Contributors!