# Developer Documentation
Brewblox is a rapidly evolving system that welcomes external contributions. To reflect this, developer documentation is split in four subcategories:
Tutorials show how to create and run simple scripts. These are useful for everyone that wants to tinker with their own system. The source code for all tutorials is also available here (opens new window).
Contributing guides describe how to get started building a service, and how to use dev tools.
Reference documents describe protocols and interfaces, and are updated whenever these change.
Design decisions are documents describing past research and the context for major decisions. These are not updated: if a decision changes or is reversed, a new document is added. This ensures that not only the current state is known, but also the process that led us there.
# Useful links
# Noteworthy repositories
- brewblox-service: common code for python services (opens new window)
- brewblox-boilerplate: a template for new services (opens new window)
- brewblox-devcon-spark: the Spark service (opens new window)
- brewblox-firmware: the Spark controller (opens new window)
- brewblox-ui: the web-based GUI (opens new window)
- brewblox-history: the InfluxDB client (opens new window)
- brewblox-ctl: CLI tool for users (opens new window)
- brewblox-ctl-lib: release-specific libs for brewblox-ctl (opens new window)