diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a31ad6 --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# B{rew}log + +**B{rew}log** is a self-hosted coffee logging platform for tracking your roasters, roasts, brews, +cafes and brewing gear. + +The application is distributed as a single Rust binary that powers both an HTTP server and a +command-line client for the API. There is a web frontend built with [Tailwind CSS](https://tailwindcss.com/) +that enables client-side reactivity with [Datastar](https://data-star.dev/). + + +> [!INFO] +> This project was built with significant assistance from Github Copilot. I used it as a test-bed +> for trying out newer agentic coding workflows, and to get some basic experience with Datastar, +> which had attracted my attention. + + +## Basic usage + +B{rew}log ships as one executable. You decide whether it acts as a server or a client. + +Start the server: + +```bash +brewlog serve +``` + +Interact with a running instance via the CLI: + +```bash +# Point the CLI at your server (defaults to http://127.0.0.1:3000) +export BREWLOG_URL=http://localhost:3000 + +# Add a roaster +brewlog add-roaster \ + --name "Radical Roasters" \ + --country "UK" \ + --city "Bristol" \ + --homepage "https://radicalroasters.co.uk" + +# Add a roast metadata and tasting notes +brewlog add-roast \ + --roaster-id "deadbeef" \ + --name "Chelbesa Lot 2" \ + --origin "Ethiopia" \ + --region "Gedeo" \ + --producer "Chelbesa Cooperative" \ + --process "Washed" \ + --tasting-notes "Blueberry, Jasmine" +``` + +Every CLI command maps to an HTTP endpoint. You can perform the same operations with `curl`, +Postman, or any HTTP client: + +```bash +curl http://localhost:3000/api/v1/roasters \ + --json '{"name":"Radical Roasters","country":"UK","city":"Bristol","homepage":"https://radicalroasters.co.uk"}' +``` + +Once the server is running, visit `http://localhost:3000` to access the user interface. + +## Installation + +At present, the only way to use `brewlog` is to build it from source: + +```bash +git clone https://github.com/jnsgruk/brewlog.git +cd brewlog +cargo build --release +``` + +The resulting binary lives at `target/release/brewlog`. + +During development you can run directly: + +```bash +cargo run -- serve +```