Presenter note:
Start by framing the demo as a complete, reusable CRUD pattern:
one domain object, one contract, several clients, and a working console.
Presenter note:
This is a reference implementation for a real CRUD feature:
small enough to explain, complete enough to show how the stack fits together.
Presenter note:
Walk through the runtime stack from API to database, then to clients and console.
Emphasize this is not just backend-only work.
Presenter note:
Explain the contract first.
The important design decision is that the public model is stable and intentionally different from the database entity.
Presenter note:
Use this example to show the actual JSON response and call out the immutable code value and timestamp semantics.
Presenter note:
This is the main API surface.
Highlight that seed and import are operational shortcuts, while the CRUD endpoints expose the standard model lifecycle.
Presenter note:
Reinforce the architectural boundary:
public domain model vs persistence model.
This keeps the API honest and prevents leaking JPA details.
Presenter note:
Mention the demo database setup and the known caveat that the old table is not auto-dropped, so a full volume reset is the cleanest way to start fresh.
Presenter note:
End on the operational path:
start the stack, open API, console, docs, and show that the repo is designed for quick local validation.
Presenter note:
The container serves the interactive Bespoke deck plus the exported PDF and PPTX built at image build time.