BaryoDev / BaryoDev/barakoCMS

barista: generic resource verbs with validation and dry run in the API, and settle barako vs barista as the CLI name

Open
#892 0 comments 0 reactions 0 assignees View on GitHub
core design
Dominant language
C#
Stars
6
Forks
7
Avg merge
4h 21m
Merged PRs (30d)
307

Description

The CLI plan in #801 is one command per barakoBrew screen: `barako site theme set` repeats the shape checks barakoBrew's Theme screen makes (BaryoDev/barakoBrew#134), and every write promises `--dry-run`. The API has a server dry run for only a few things: workflows (`barakoCMS/Features/Workflows/DryRunWorkflow/Endpoint.cs:59`), requests (`barakoCMS/Features/Requests/Endpoints.cs:332`) and redirect import (`barakoCMS/Features/Redirects/ImportEndpoint.cs:15`). Everywhere else the CLI would have to guess, or reimplement validation that barakoBrew already has. The CLI also has two names: `barako` in #801 and #345, `barista` in #843, #844 and #851.

### Why it is too specific

A command per screen means every new module (a clinic's booking, a school's attendance) needs hand-written commands in the CLI, its checks copied a third time, and its dry run faked on the client. barakoBrew, the MCP server (#582) and the VS Code extension (#843) would each need the same copies.

### The general concept

Generic resource verbs (`get`, `list`, `create`, `update`, `delete`, and `apply` from #345) over the generated client slices (#182, #183), so a module's resources appear in the CLI when its slice does. Validation and dry run live in the API: every write endpoint accepts an optional dry run that runs the validators and returns what would change, without saving. barakoBrew, the CLI, MCP and VS Code all call the same thing. And one name for the CLI, settled before a tool is published.

### Where it lives

Core: dry run on write endpoints. CLI: the verbs on the generated slices.

### Compatibility

A dry run flag is an optional request field, which is not a breaking change to the HTTP surface. The CLI is not published under either name yet, so settling the name now costs an edit to the plans. If a name has been used in docs, the other ships as an alias command for one major. #801, #345 and #851 are amended once this is decided.

### Done when

- The CLI name is decided and written on this issue.
- Content type and entry writes accept a dry run that returns the validation result and the diff without saving, with a test that nothing is stored.
- One resource from a module slice is reachable through the generic verbs with no command written for it.

Found in the too specific sweep of 15 September 2026.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing dry-run implementations in Features/Workflows/DryRunWorkflow/Endpoint.cs, Features/Requests/Endpoints.cs, and Features/Redirects/ImportEndpoint.cs, then inspect the generated client slices. Settle the CLI name, add dry-run coverage for content type and entry writes that verifies nothing is stored, and expose one slice resource through the generic verbs.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
api, backend-api-design, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.