Documentation | Desktop App | Server | Button Box
Client and server for Tomato Radio Automation software. Tomato is easy to use, and hard to screw up playout software written for the specific use case of Burning Man Information Radio.
The backend server is written in Python's Django web framework, heavily leveraging its automatic admin interface.
The desktop app is a native, cross-platform Svelte + Electron app. It communicates with the backend via a websocket and supports intermittent connectivity loss.
Detailed instructions on how to install the server in both development and production environments can be found here in the docs.
Download a development preview build here or run the client's code locally following the instruction here
To run the documentation locally, install Python 3.9 or higher. Then in your terminal,
# Install Poetry (for Python dependencies) if you don't already have it.
curl -sSL https://install.python-poetry.org | python3 -
# Clone the repo
git clone https://github.com/dtcooper/tomato.git
# Enter the docs code
cd tomato/docs
# Install dependencies and run
poetry install
poetry run mkdocs serve
Head over to http://localhost:8888/ in your web browser.
- Client — JavaScript (Node.js)
- Electron, Svelte, Tailwind CSS, daisyUI, and esbuild.
- Server — Python
- Libraries: Django, huey, Constance, and Starlette
- Tools, Databases, and Containers: PostgreSQL, docker-nginx-certbot, and Dozzle.
- MIDI Controller Button Box —
Raspberry Pi Pico
(or similar) and CircuitPython
- See
controller/README.md
for firmware/setup instructions
- See
- Documentation
Tomato's UX and UI was designed in part by Miranda Kay. Testing and feedback was provided by the entire Burning Man Information Radio (BMIR) team.
See TODO list.
This project is licensed under the MIT License — see the LICENSE file for details.