https://github.com/dtcooper/tomato
🍅 Tomato Radio Automation. Dead simple radio ads.
https://github.com/dtcooper/tomato
circuitpython daisyui django django-admin docker electron esbuild mkdocs svelte tailwindcss
Last synced: 4 months ago
JSON representation
🍅 Tomato Radio Automation. Dead simple radio ads.
- Host: GitHub
- URL: https://github.com/dtcooper/tomato
- Owner: dtcooper
- License: mit
- Created: 2022-09-08T22:36:29.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-30T20:19:59.000Z (5 months ago)
- Last Synced: 2025-01-31T20:53:21.858Z (5 months ago)
- Topics: circuitpython, daisyui, django, django-admin, docker, electron, esbuild, mkdocs, svelte, tailwindcss
- Language: Python
- Homepage: https://dtcooper.github.io/tomato/
- Size: 11.2 MB
- Stars: 26
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Tomato Radio Automation
Documentation |
Desktop App |
Server |
Button Box[](https://github.com/dtcooper/tomato/actions/workflows/build-client.yml) [](https://github.com/dtcooper/tomato/actions/workflows/build-deploy-on-push.yml) [](https://github.com/dtcooper/tomato/actions/workflows/docs.yml)
[](https://github.com/dtcooper/tomato/releases/latest) [](https://github.com/dtcooper/tomato/blob/main/LICENSE) [](https://github.com/dtcooper/tomato/stargazers) [](https://github.com/dtcooper/tomato/issues) [](https://github.com/dtcooper/tomato/commits/)
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](https://bmir.org).
![]()
The backend server is written in [Python](https://www.python.org/)'s
[Django web framework](https://www.djangoproject.com/), heavily leveraging its
[automatic admin interface](https://docs.djangoproject.com/en/4.1/ref/contrib/admin/).The desktop app is a native, cross-platform [Svelte](https://svelte.dev/) +
[Electron](https://www.electronjs.org/) app. It communicates with the backend
via a websocket and supports intermittent connectivity loss.## Running the Code
### Server
Detailed instructions on how to install the server in both development and
production environments
[can be found here in the docs](https://dtcooper.github.io/tomato/server/installation/).### Client (Desktop App)
Download a
[development preview build here](https://github.com/dtcooper/tomato/releases/tag/preview-build)
or run the client's code locally
[following the instruction here](https://dtcooper.github.io/tomato/client/#run-development-code)### Documentation
To run the documentation locally, install [Python 3.9](https://www.python.org/)
or higher. Then in your terminal,```bash
# 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 in your web browser.
## Stack
* Client — JavaScript ([Node.js](https://nodejs.org/en/))
* [Electron](https://electronjs.org/), [Svelte](https://svelte.dev/),
[Tailwind CSS](https://tailwindcss.com/), [daisyUI](https://daisyui.com/),
and [esbuild](https://esbuild.github.io/).
* Server — [Python](https://www.python.org/)
* Libraries: [Django](https://www.djangoproject.com/), [huey](https://huey.readthedocs.io/en/latest/),
[Constance](https://django-constance.readthedocs.io/en/latest/), and [Starlette](https://www.starlette.io/)
* Tools, Databases, and Containers: [PostgreSQL](https://www.postgresql.org/),
[docker-nginx-certbot](https://github.com/JonasAlfredsson/docker-nginx-certbot),
and [Dozzle](https://dozzle.dev/).
* MIDI Controller Button Box —
[Raspberry Pi Pico](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html)
(or similar) and [CircuitPython](https://circuitpython.org/)
* See [`controller/README.md`](controller/README.md) for firmware/setup instructions
* Documentation
* [MkDocs](https://www.mkdocs.org/) and [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)## Acknowledgements
Tomato's UX and UI was designed in part by
[Miranda Kay](mailto:[email protected]). Testing and feedback was provided
by the entire [Burning Man Information Radio (BMIR)](https://bmir.org) team.## TODO List
_See [TODO](TODO.md) list._
## License
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT)
— see the [LICENSE](https://github.com/dtcooper/tomato/blob/main/LICENSE)
file for details.