You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This discussion is deliberately narrower: how should Decaid exchange bean, recipe, grinder, and machine-profile data with Beanconqueror and with roasters that publish preparation data?
Why this is useful
Decaid already has useful local building blocks. Its current workflow can reference a bean batch and grinder while carrying target dose/yield and the selected grinder setting (current WorkflowContext). It also has documented profile create and batch-import operations (profile API documentation).
Beanconqueror already stores much of the corresponding data:
Roasters are starting to publish machine-readable bean data alongside preparation guidance. For example, Kaffeemacher's Apas page links directly to a Beanconqueror import and publishes water, machine, grinder, and grind-setting recommendations.
Proposed ownership model
Decaid and Beanconqueror should remain cooperative peers rather than silently overwriting one another:
Decaid owns the live shot and active workflow used to operate the machine.
Beanconqueror remains independently useful on a phone or tablet.
Import/export is explicit and previewable.
Imported records retain their source, external identifier, source URL, source version/hash, and the time they were imported.
A repeated import updates only fields the user accepts; it does not silently replace local edits.
A small mapping record would likely be needed for provider, entityType, externalId, localId, and source version/hash. The exact persistence/API design should follow agreement on the interchange contract rather than precede it.
Staged integration
1. Explicit import/export
Import Beanconqueror bean-share links or QR codes into an editable Decaid preview.
Support deterministic manual export/import using documented fixtures.
Preserve unknown provider fields so a round trip does not unnecessarily destroy data.
Report unsupported or ambiguous fields instead of guessing.
2. Stable interchange contract
Work with Beanconqueror on a documented, versioned subset covering beans/batches, grinders, brews/shots, tasting notes, and links to recipes or profiles. This should include fixture examples and clear unit/enum mappings.
3. Conflict-safe synchronization
Only design automatic two-way sync after there is a supported Beanconqueror app, LAN, file, or server boundary. Beanconqueror's current optional-server discussion is still a future design and calls out multi-device conflict handling; it should not be treated as an existing sync API.
Decaid also needs durable content-revision semantics for edited shots before incremental sync is reliable; that is already tracked in issue #676.
Roaster-published recommendations
A roaster offer could contain:
bean identity and descriptive data;
batch-independent preparation guidance;
dose, target yield, temperature, water, grinder model, and grinder setting;
a Decaid-compatible machine profile or a link to one;
provenance URL, publication version/hash, and optional validity notes.
The import UI should distinguish facts about the bean from recommendations tied to a particular grinder or machine. A published machine profile must go through Decaid's normal profile parsing/import path, remain visibly attributed to its source, and must not become the active profile or be sent to the machine without an explicit user action.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Several existing discussions already cover adjacent Decaid concepts:
This discussion is deliberately narrower: how should Decaid exchange bean, recipe, grinder, and machine-profile data with Beanconqueror and with roasters that publish preparation data?
Why this is useful
Decaid already has useful local building blocks. Its current workflow can reference a bean batch and grinder while carrying target dose/yield and the selected grinder setting (current
WorkflowContext). It also has documented profile create and batch-import operations (profile API documentation).Beanconqueror already stores much of the corresponding data:
Beanconqueror.jsonRoasters are starting to publish machine-readable bean data alongside preparation guidance. For example, Kaffeemacher's Apas page links directly to a Beanconqueror import and publishes water, machine, grinder, and grind-setting recommendations.
Proposed ownership model
Decaid and Beanconqueror should remain cooperative peers rather than silently overwriting one another:
A small mapping record would likely be needed for
provider,entityType,externalId,localId, and source version/hash. The exact persistence/API design should follow agreement on the interchange contract rather than precede it.Staged integration
1. Explicit import/export
2. Stable interchange contract
Work with Beanconqueror on a documented, versioned subset covering beans/batches, grinders, brews/shots, tasting notes, and links to recipes or profiles. This should include fixture examples and clear unit/enum mappings.
3. Conflict-safe synchronization
Only design automatic two-way sync after there is a supported Beanconqueror app, LAN, file, or server boundary. Beanconqueror's current optional-server discussion is still a future design and calls out multi-device conflict handling; it should not be treated as an existing sync API.
Decaid also needs durable content-revision semantics for edited shots before incremental sync is reliable; that is already tracked in issue #676.
Roaster-published recommendations
A roaster offer could contain:
The import UI should distinguish facts about the bean from recommendations tied to a particular grinder or machine. A published machine profile must go through Decaid's normal profile parsing/import path, remain visibly attributed to its source, and must not become the active profile or be sent to the machine without an explicit user action.
Stable identity matters here, so this also overlaps #40 Stable IDs for profiles.
Questions
Related discussions
All reactions