Color Composer is a API server used for making light effects using WS2812/NeoPixel LED strips. It is written in Kotlin and uses the Micronaut Framework and uses Postgres as a database.
Color Composer does not interface with LEDs directly. Instead it sends color data to a Pi Client or NightDriver client.
Color Compser Web is the frontend for Color Composer.
This enables a single interface for controlling multiple clients.
There are currently six effects. Light effects support custom palettes, and effects can be layered to produce new effects. Layering can be customized to make effects take precidence so one effect's colors show instead of another's if they light up the same LED or instead, average RGB values.
A TODO feature is LED strip groups which will enable light effects to treat multiple strips as a single strip.
Triggers can be configured to start a light effect at a set time, or run one for a specified number of interations. If a location is specified in the location_configs table then data from the https://sunrise-sunset.org API is fetched and can be used to set a start time of sunrise or sunset.
- JDK 21 or newer
- A Postgres installation
- Configure your Postgres instance. Credentials can be passed as command line arguments or defined in the application.yaml file.
- Build a Jar. This project uses the shadow plugin which packages all dependencies into a single Jar for ease of use. Docker images can also be built.
- Run the Jar.
- Create a pull request
- Explain your changes
- Add unit tests
- The GitHub workflow must pass