# mule-sidecar Auxiliary service that handles operations PhotoPrism's REST API does not expose. ## Why this exists Per the merge plan at `/home/dtoro/.claude/plans/i-want-you-to-twinkly-galaxy.md`, a Go + Gin + GORM service (matching PhotoPrism's stack) will eventually own: - Per-user heap sharing with pending invitations - Folder mutations under `originals/` (create / rename / delete / move) - **File rename** on disk (PhotoPrism's `OriginalName` is a display-only rename) The plan picks Go for stack consistency and the option to upstream features. ## What ships today A **Node.js prototype** (`server.mjs`) covering only the **file rename** endpoint. The decision to ship Node first is pragmatic — Go isn't installed on this dev box and `sudo dnf install golang` needs a password. Node is already on PATH for the SvelteKit dev server, so a single-file Node service unblocks the feature without changing the host setup. The endpoint contract is stable: when M4 lands the proper Go service, the SvelteKit client keeps calling the same paths. ## Endpoints - `POST /api/sidecar/files/:photoUid/rename` `{ "newName": "newfile.png" }` Renames the primary file of the photo on disk under `${ORIGINALS_ROOT}`, then triggers a PhotoPrism reindex of the parent path. ## Run ``` ORIGINALS_ROOT=/home/dtoro/projects/mule-image/photos-sample \ PHOTOPRISM_BASE_URL=http://localhost:2342 \ SIDECAR_PORT=8000 \ node server.mjs ``` The SvelteKit dev server proxies `/api/sidecar/*` to `http://localhost:8000`.