SpeakerOps is the shared architecture layer across independent products. Detailed domain language, schemas, workflows, and implementation decisions belong in the repository that owns each product.
System-level decisions that apply across products are captured in ADRs.md. All products in the family should reference and respect these decisions unless specifically unable to do so.
- LiquidVictor owns presentation construction and built-deck identity.
- SlideFed owns Fediverse publication and interaction.
- TalkFolio owns talk concepts and portfolio metadata.
- TalkCircuit owns Conferences, CFPs, Submissions, Bookings, Deliveries, and conference-circuit decision rules.
No product imports another product's internal model. A downstream product holds a plain identity reference to the upstream product:
- TalkFolio holds LiquidVictor
SlideDeck.Idvalues for decks that fulfill a Talk. - TalkCircuit holds TalkFolio Talk identities for Submissions and consumes TalkFolio proposal metadata and PresentationFamily membership.
- TalkCircuit may hold LiquidVictor
SlideDeck.Idvalues for accepted Bookings. - TalkCircuit may hold SlideFed URLs or session identifiers for delivered or published material.
- TalkFolio holds lightweight
RelatedContentreferences to externalRelatedContent Sources. - Any SpeakerOps product may publish task intent to the external
Task Managementdomain.
This keeps each product unaware of the internal models of its collaborators. See each product repository for its owned concepts and integration contract.
Reporting tools may read from multiple products to produce combined views such as a presentation catalog or conference planning report. A composition layer is not a new domain and must not cause one product to absorb another's schema.
All product repos in the family should use the following review gate for any PR that affects cross-product contracts, identities, shared vocabulary, storage boundaries, or integration behavior:
## Cross-product contract review
* [ ] This change does not import or depend on another product's internal model.
* [ ] Any cross-product reference uses stable identity only and does not treat file paths, titles, URLs, or storage layout as authoritative identity.
* [ ] Shared vocabulary values remain controlled and documented; any new tag/category/audience values are intentionally added and versioned if needed.
* [ ] Storage, file layout, and repository-local implementation details remain behind repository abstractions.
* [ ] If this changes a shared contract, the relevant system ADRs and product integration docs have been updated.
* [ ] Backward compatibility or migration notes are included when cross-product contracts change.
* [ ] The owning product and at least one consuming product have reviewed the impact.
* [ ] No new monolith-like ownership or bounded-context assumptions were introduced.This keeps the system-level ADRs enforceable in practice instead of leaving them as documentation-only guidance.
CfpPrep is historical prior art for TalkCircuit. Its Conference/CFP schema and workflow ideas are documented and evaluated in the TalkCircuit repository, not maintained as SpeakerOps domain detail.