Skip to content

fgrzl/streamkit

Repository files navigation

CI Publish

Streamkit

High-throughput, hierarchical event streaming for Go. Organize data in stores, spaces, and segments; consume with strict per-segment ordering or timestamp-merged space views; plug in PebbleDB or Azure Table Storage and in-process or WebSocket transport.

Production-ready — used in live services. See docs/production.md for deployment guidance and docs/limitations.md for operational contracts (delivery semantics, cursors, subscriptions).

Documentation

Full documentation: docs/

Topic Guide
Production docs/production.md
Concepts (store / space / segment) docs/concepts.md
Architecture and packages docs/architecture.md
Getting started docs/getting-started.md
Client SDK docs/client-guide.md
Server embedding docs/server-guide.md
Storage backends docs/storage.md
Transport (in-proc / WebSocket) docs/transport.md
Event sourcing (eskit) docs/event-sourcing.md
Operations docs/operations.md

Quick example

import (
    "context"
    "github.com/fgrzl/enumerators"
    "github.com/fgrzl/streamkit/pkg/client"
    "github.com/fgrzl/streamkit/pkg/server"
    "github.com/fgrzl/streamkit/pkg/storage/pebblekit"
    "github.com/fgrzl/streamkit/pkg/transport/inprockit"
    "github.com/google/uuid"
)

func main() {
    ctx := context.Background()
    factory, _ := pebblekit.NewStoreFactory(&pebblekit.PebbleStoreOptions{Path: "./data"})
    nm := server.NewNodeManager(server.WithStoreFactory(factory))
    provider := inprockit.NewInProcBidiStreamProvider(ctx, nm)
    c := client.NewClient(provider)
    defer c.Close()

    storeID := uuid.New()
    records := enumerators.Slice([]*client.Record{{Sequence: 1, Payload: []byte("hello")}})
    _, _ = enumerators.ToSlice(c.Produce(ctx, storeID, "demo", "events", records))
}

See Getting started for a complete produce/consume walkthrough. For WebSocket + JWT production wiring, see Transport.

Contributing

See CONTRIBUTING.md and docs/test_guidelines.md. Changelog: CHANGELOG.md.

License

See LICENSE.

About

High-throughput hierarchical event streaming for Go with Pebble or Azure backends

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages