| Crates.io | buru |
| lib.rs | buru |
| version | 0.6.7 |
| created_at | 2025-05-12 03:13:28.715561+00 |
| updated_at | 2025-09-13 04:02:03.357164+00 |
| description | A Rust application with both CLI and Web interface for data/image processing |
| homepage | https://github.com/zen-en-tonal/buru |
| repository | https://github.com/zen-en-tonal/buru |
| max_upload_size | |
| id | 1669956 |
| size | 270,200 |
buru is a Rust application that lets you archive and tag images either from the command line or through a small web API. It stores image metadata in a database and exposes convenient tools for managing that data.
Clone the repository and build the project:
git clone https://github.com/zen-en-tonal/buru.git
cd buru
cargo build --release
Run the CLI to archive images:
cargo run --bin cli -- archive --path /path/to/image.jpg --tags "nature sunset"
Start the web server (listens on port 3000 by default):
cargo run --bin web
A docker-compose.yml file is provided. To build and start all services:
docker-compose build
docker-compose up
The web server exposes a small REST-style API that returns JSON. Endpoints are
listed below using the default port 3000.
GET /imagesList images. Query parameters:
tags – space separated tag querypage – page number (default 1)limit – results per page (default 20)GET /images/{id}Retrieve metadata for a single image by numeric identifier.
POST /imagesUpload a new image using multipart/form-data with these fields:
file – binary file contents (required)tags – space separated tags (optional)source – original source URL (optional)PUT /images/{id}/tagsReplace all tags for the image identified by id. Supply new tags via the
tags query parameter (e.g. ?tags=cute+cat).
DELETE /images/{id}Remove an image and its metadata.
GET /tagsList tags. Supports the following query parameters:
search[name_comma] – comma separated tag names to matchpage and limit – pagination controlsGET /tags/suggestSuggest tags by prefix. Use search[query] to supply the prefix and limit to
cap results.
PUT /refresh/tag_countsRecompute stored counts for all tags.
GET /files/{vari}/{hash}Fetch an image file. The {vari} segment is one of the generated variants
(original, sample, 180x180, etc.) and {hash} is the image file path.
This project is licensed under the MIT OR Apache-2.0 license. See the LICENSE file for details.