OpenObserve Showcase¶
The testApp module is the practical demo for Scribe. It turns the current library API into a guided UI and ships a local OpenObserve setup under testApp/openobserve/ so you can see events land in a real observability tool.
What The Showcase Demonstrates¶
The app covers the current public runtime features of Scribe:
note(...)newScroll(...)with generated and custom IDs- direct
Scrollmap writes (scroll["field"] = ...) - map read/remove operations
seal(...)with success and failure outcomesMarginEntrySaver- channel overflow behavior via
Channel(..., onBufferOverflow = DROP_OLDEST) - saver error callback through
hire(onSaver = ... ) retire()and runtime re-hire- safe
onIgnitionwiring
Single Stream Design¶
The showcase uses one OpenObserve stream named scribe_demo.
That stream intentionally allows sparse fields. Every uploaded record includes:
event_kinddemo_nameplatformapp_versionsaver_type
Notes then contribute fields such as tag, message, level, and note_timestamp.
Scrolls contribute scroll_id, success, and fields from SealedScroll.data.
The single-stream design makes it easy to search everything in one place while still filtering by event_kind.
Local OpenObserve Setup¶
The OpenObserve stack lives under testApp/openobserve/:
testApp/openobserve/
compose.yaml
.env.example
data/
start-openobserve.sh
stop-openobserve.sh
reset-openobserve.sh
data/ is bind-mounted into the container and acts as the local persisted database for the demo.
Start it with:
Then run the demo app:
or:
Suggested Experiments¶
- Run
Checkout flowand inspect the wide-event payload inscribe_demo. - Run
Map read/removeto inspect map mutation behavior before sealing. - Run
Margins + seal(failure)and verify timing fields plussuccess = false. - Run
JSON object serializationto validate nested payload fields in OpenObserve. - Run
String template messageto inspect message rendering in themessagefield. - Run
EntrySaver mixed flowto send a note and a scroll through one saver path. - Run
Overflow demoand confirm a burst can be trimmed byDROP_OLDESTunder pressure. - Run
Saver failure demoand observe thatonSaverreports the injected failure while delivery continues. - Compare
retire() (light queue)withretire() with backlogin the in-app timeline.
Querying In OpenObserve¶
Examples:
UI checks that matter:
- Open
http://localhost:5080/web/, not just the root URL - Select the
scribe_demostream in the logs UI - Keep the organization as
default - Widen the time picker if the stream looks empty after a successful upload
- Filter by
event_kindordemo_namefirst, because the single-stream demo intentionally has sparse fields
For setup details and exact run commands, see testApp/README.md in the repository root.