{"id":35731230,"url":"https://github.com/eventdbx/dbx-plugins","last_synced_at":"2026-01-06T11:04:33.309Z","repository":{"id":320714165,"uuid":"1081432329","full_name":"eventdbx/dbx-plugins","owner":"eventdbx","description":"Collects official and community EventDBX plugins, all sharing a common tooling and build system","archived":false,"fork":false,"pushed_at":"2025-10-26T13:20:34.000Z","size":319,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-11T07:19:48.649Z","etag":null,"topics":["eventdbx","plugins","registry"],"latest_commit_sha":null,"homepage":"https://docs.eventdbx.com/plugins","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eventdbx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-22T19:21:39.000Z","updated_at":"2025-11-11T07:16:16.000Z","dependencies_parsed_at":"2025-10-25T13:09:54.884Z","dependency_job_id":"9573a3c2-89db-4eeb-8b30-6d146b04ec75","html_url":"https://github.com/eventdbx/dbx-plugins","commit_stats":null,"previous_names":["thachp/dbx_plugins","eventdbx/dbx-plugins"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/eventdbx/dbx-plugins","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventdbx%2Fdbx-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventdbx%2Fdbx-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventdbx%2Fdbx-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventdbx%2Fdbx-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eventdbx","download_url":"https://codeload.github.com/eventdbx/dbx-plugins/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventdbx%2Fdbx-plugins/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28225027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-06T02:00:07.049Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eventdbx","plugins","registry"],"created_at":"2026-01-06T11:03:39.207Z","updated_at":"2026-01-06T11:04:33.303Z","avatar_url":"https://github.com/eventdbx.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DBX Plugins Workspace\n\nThis repository collects EventDBX plugins in a single Cargo workspace so each plugin can evolve independently while sharing common tooling.\n\n## Layout\n\n- `Cargo.toml`: workspace definition that lists every plugin crate.\n- `common/plugin_api`: shared transport bindings (Cap'n Proto envelopes and socket API helpers, plus optional gRPC event bindings) and trait contracts used by all plugins.\n- `plugins/\u003cname\u003e/`: individual plugin crates (for example `queue`, `postgres`, `rest`, `grpc`, `graphql`, `search`).\n- `plugins/example`: sample binary that consumes Cap'n Proto envelopes and prints the derived `EventRecord`.\n\n## Control socket client\n\n`common/plugin_api` now ships a lightweight `ControlClient` for talking to the daemon’s socket on port `6363`. The client hides the Cap'n Proto framing and returns typed responses so HTTP/gRPC surface plugins can live entirely outside the core repository.\n\n```rust\nuse dbx_plugin_api::{AppendEventRequest, ControlClient};\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    let mut client = ControlClient::connect(\"127.0.0.1:6363\").await?;\n    let aggregates = client.list_aggregates(0, Some(25)).await?;\n\n    let request = AppendEventRequest {\n        token: std::env::var(\"EVENTDBX_TOKEN\")?,\n        aggregate_type: \"order\".into(),\n        aggregate_id: \"order-123\".into(),\n        event_type: \"OrderCreated\".into(),\n        payload: Some(serde_json::json!({ \"status\": \"pending\" })),\n        ..Default::default()\n    };\n\n    let record = client.append_event(request).await?;\n    println!(\"appended event {}\", record.metadata.event_id);\n    Ok(())\n}\n```\n\n## Plugin Targets\n\n- `plugins/rest_api` – Axum REST surface that proxies to the daemon through `ControlClient`.\n- `plugins/graphql_api` – async-graphql server backed by the control socket.\n- `plugins/grpc_api` – tonic gRPC server implementing the EventDBX `EventService`.\n\nEach plugin exposes CLI flags for the bind address, control endpoint, and paging defaults. Run `cargo run -p \u003cplugin\u003e -- --help` for usage details.\n\n## Getting Started\n\n1. Scaffold plugin crates:\n   ```sh\n   cargo new --lib plugins/queue\n   cargo new --lib plugins/postgres\n   cargo new --lib plugins/rest\n   cargo new --lib plugins/grpc\n   cargo new --lib plugins/graphql\n   cargo new --lib plugins/search\n   ```\n2. Wiring is already in place for `common/plugin_api`; point new plugins at that crate with `dbx_plugin_api = { path = \"../../common/plugin_api\" }`.\n3. Drop any new plugin under `plugins/` and Cargo will auto-discover it via the workspace glob.\n\n## Development Notes\n\n- Decide how EventDBX loads plugins (static libs, `cdylib`, or dynamic discovery) and set each crate type accordingly.\n- Keep per-plugin documentation inside `plugins/\u003cname\u003e/README.md` to capture configuration and integration details.\n- Use integration tests or example binaries to verify plugins against EventDBX APIs before deployment.\n\n## Example\n\nThe `plugins/example` binary demonstrates consuming Cap'n Proto messages from standard input and printing the unified `EventRecord`:\n\n```sh\ncargo run -p example -- --demo\n```\n\nRunning with `--demo` emits a canned envelope so you can see the structured output without wiring EventDBX yet. Omit the flag to have the binary block on stdin and process live envelopes.\n\nTo stream real traffic from an EventDBX socket (replace the address with your endpoint):\n\n```sh\ncargo run -p example -- --socket 127.0.0.1:9000\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventdbx%2Fdbx-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feventdbx%2Fdbx-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventdbx%2Fdbx-plugins/lists"}