https://github.com/molybdenumsoftware/conveyorbelt
A based web dev workflow; stack-agnostic, hand-coded, 🦀
https://github.com/molybdenumsoftware/conveyorbelt
Last synced: 10 days ago
JSON representation
A based web dev workflow; stack-agnostic, hand-coded, 🦀
- Host: GitHub
- URL: https://github.com/molybdenumsoftware/conveyorbelt
- Owner: molybdenumsoftware
- License: mit
- Created: 2025-12-12T12:42:25.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-06-06T09:04:03.000Z (12 days ago)
- Last Synced: 2026-06-06T09:05:44.335Z (12 days ago)
- Language: Rust
- Homepage:
- Size: 123 KB
- Stars: 7
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# conveyorbelt
A based web dev workflow; stack-agnostic, hand-coded, 🦀
A CLI daemon that can:
- watch source
- invoke arbitrary build command
- statically serve
- laungh browser
- trigger page reload
- politely report what it's doing
> [!CAUTION]
> This software is not yet ready for use
## Usage
### Invocation
```
$ conveyorbelt
```
### Behavior summary
A temporary directory *serve path* is created
and its contents statically served at `http://localhost:/`.
A chromium browser is launched with that URL.
On file changes the `` is invoked.
The *build process* receives the *serve path* via the environment variable `SERVE_PATH`.
When the *build process* exits successfully, the page reloads.
## Prior art
- [tapio/live-server](https://github.com/tapio/live-server)
- [lomirus/live-server](https://github.com/lomirus/live-server)
Both suffer the same design problem; they watch the same directory that they serve.
That results in the browser being instructed to reload on each file change,
without regard to whether a build process had completed or merely made its first change.
That design also lacks the convenience of automatic build command invocation.
Another difference is that conveyorbelt controls the browser
using [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/)
while the projects mentioned above use a WebSocket and JavaScript that is injected into the served page.