Skip to content

Realtime SSE

Server-sent events — live updates without F5.

  • Entity writes that fan out over SSE
  • Client subscription shape for live lists

Feature entry point: src/feature.ts.

Terminal window
cd samples/recipes/realtime-sse
bun test

The feature entry point — embedded straight from the source file, so the code here is exactly what runs. Multi-file samples keep their remaining files next to it on GitHub (link below):

import {
createEntity,
createTextField,
defineEntityDeleteHandler,
defineFeature,
} from "@cosmicdrift/kumiko-framework/engine";
export const messageEntity = createEntity({
table: "read_sample_messages",
fields: {
channel: createTextField({ required: true }),
text: createTextField({ required: true }),
author: createTextField(),
},
softDelete: true,
});
const userWrite = { access: { roles: ["Admin", "User"] } } as const;
const adminWrite = { access: { roles: ["Admin"] } } as const;
export const chatFeature = defineFeature("chat", (r) => {
r.crud("message", messageEntity, {
write: userWrite,
verbs: { list: false, detail: false, restore: false, delete: false },
});
r.writeHandler(defineEntityDeleteHandler("message", messageEntity, adminWrite));
});

📄 On GitHub: samples/recipes/realtime-sse/src/feature.ts