-
Notifications
You must be signed in to change notification settings - Fork 1
Developer Guide
This page exists so contributors do not accidentally improve the project into a broken state.
Recommended flow:
main -> create branch -> make changes -> open PR -> review CI -> merge
Do not work directly on main if the change is non-trivial.
Use a topic branch:
git checkout -b my-changeThen open a Pull Request.
The repo includes GitHub Actions in .github/workflows/pylint.yml.
Current workflow:
- runs on
push - runs on
pull_request - installs
requirements.txt - runs
ruff - runs
black --check - runs
pytest
Those commands currently end with || true, which means CI is informational, not a strict gate. Read the logs. Green does not always mean good. Humans love this kind of trap.
Core files are protected with CODEOWNERS for review routing.
Protected areas currently include:
main.pyrotation_engine.pydb_manager.pydisplay_manager.py- selected API modules
Good places for beginners:
apis/*- fallback content text
- provider normalization logic
- documentation
- wiki pages
.env.example
Treat these as dangerous until you understand the full runtime:
rotation_engine.pydisplay_manager.pydb_manager.pymain.py
Why:
-
rotation_engine.pydefines slot identity and persisted content selection -
display_manager.pydefines timing, rendering, preview behavior, and matrix output -
db_manager.pydefines schema and connection behavior -
main.pyties together scheduling, providers, and display
Check all of these:
- Does the category order still work?
- Does the project still start with an empty DB?
- Does
--simulatestill work? - Does
--oncestill behave predictably? - Does CI still run?
- Did you change payload keys used by the renderer?
A real category addition usually requires coordinated changes in:
rotation_engine.DISPLAY_SEQUENCEmain.build_content_for_now()main.print_payload()-
display_manager.pyrendering/display code - possibly
db_manager.pyif persistence is required
Do not add a category in only one layer. That is how you manufacture runtime bugs with confidence.
Raspberry Pi LED Matrix
Built with caffeine, stubbornness, and way too many test runs on a Raspberry Pi.
This project was created as a learning space for exploring Python, APIs, Raspberry Pi hardware, and real development workflows.
Yes, it is “just” an LED matrix project.
No, that does not mean you should edit rotation_engine.py blindly and summon chaos.
If you are new here, start with Getting Started and Developer Guide.
If you want to understand how the project works, read Architecture.
If something breaks, check Troubleshooting before inventing new bugs.
If you are a student contributor:
- start with Getting Started
- read Architecture
- do not touch core files carelessly 😐
Created and maintained by coayo-x