# 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).
Migrations provides additional information on various configuration and data migrations as Brewblox develops.
Using brewblox-service is for those wishing to create a new service. These documents describe the wider context of the system, and how to use the available APIs.
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)