{"id":42156772,"url":"https://github.com/attaradev/jetstream_bridge","last_synced_at":"2026-02-13T17:14:16.187Z","repository":{"id":309823412,"uuid":"1037661765","full_name":"attaradev/jetstream_bridge","owner":"attaradev","description":"Production-ready NATS JetStream bridge for Ruby/Rails with outbox, inbox, DLQ, and overlap-safe stream provisioning.","archived":false,"fork":false,"pushed_at":"2026-01-30T00:48:22.000Z","size":772,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-30T07:49:45.415Z","etag":null,"topics":["dlq","event-driven","eventbus","jetstream","nats","nats-streaming","natsio","ruby","ruby-gem","ruby-on-rails","rubygem"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/attaradev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":null,"dco":null,"cla":null}},"created_at":"2025-08-13T23:35:21.000Z","updated_at":"2026-01-30T00:48:27.000Z","dependencies_parsed_at":"2025-08-14T02:42:17.266Z","dependency_job_id":null,"html_url":"https://github.com/attaradev/jetstream_bridge","commit_stats":null,"previous_names":["attaradev/jetstream_bridge"],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/attaradev/jetstream_bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attaradev%2Fjetstream_bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attaradev%2Fjetstream_bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attaradev%2Fjetstream_bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attaradev%2Fjetstream_bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/attaradev","download_url":"https://codeload.github.com/attaradev/jetstream_bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/attaradev%2Fjetstream_bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28952586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dlq","event-driven","eventbus","jetstream","nats","nats-streaming","natsio","ruby","ruby-gem","ruby-on-rails","rubygem"],"created_at":"2026-01-26T19:29:24.805Z","updated_at":"2026-02-13T17:14:16.178Z","avatar_url":"https://github.com/attaradev.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.svg\" alt=\"JetStream Bridge Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/attaradev/jetstream_bridge/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/attaradev/jetstream_bridge/actions/workflows/ci.yml/badge.svg\" alt=\"CI Status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/attaradev/jetstream_bridge\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/attaradev/jetstream_bridge/branch/main/graph/badge.svg\" alt=\"Coverage Status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://rubygems.org/gems/jetstream_bridge\"\u003e\n    \u003cimg src=\"https://img.shields.io/gem/v/jetstream_bridge.svg\" alt=\"Gem Version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://rubygems.org/gems/jetstream_bridge\"\u003e\n    \u003cimg src=\"https://img.shields.io/gem/dt/jetstream_bridge.svg\" alt=\"Downloads\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n Production-ready NATS JetStream bridge for Ruby/Rails with outbox, inbox, DLQ, and overlap-safe stream provisioning.\n\n## Highlights\n\n- Transactional outbox and idempotent inbox (optional) for exactly-once pipelines.\n- Durable pull (default) or push consumers with retries, backoff, and DLQ routing.\n- Auto stream provisioning with overlap protection; consumers auto-created on subscription.\n- Rails-native: generators, migrations, health check, and eager-loading safety.\n- Least-privilege friendly: run with `auto_provision=false` (stream must exist; consumers are auto-created).\n- Mock NATS for fast, no-infra testing.\n\n## Quick Start\n\n```ruby\n# Gemfile\ngem \"jetstream_bridge\", \"~\u003e 7.1\"\n```\n\n```bash\nbundle install\nbin/rails g jetstream_bridge:install\nbin/rails db:migrate\n```\n\nThe install generator creates the initializer, migrations, and optional health check scaffold. For full configuration options and non-Rails boot flows, see [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md).\n\nPublish:\n\n```ruby\nJetstreamBridge.publish(event_type: \"user.created\", resource_type: \"user\", payload: { id: 1 })\n```\n\nConsume:\n\n```ruby\nconsumer = JetstreamBridge::Consumer.new do |event|\n  User.upsert({ id: event.payload[\"id\"] })\nend\nconsumer.run!\n```\n\n## Documentation\n\n- [Getting Started](docs/GETTING_STARTED.md) - Setup, configuration, and basic usage\n- [API Reference](docs/API.md) - Complete API documentation for all public methods\n- [Architecture \u0026 Topology](docs/ARCHITECTURE.md) - Internal architecture, message flow, and patterns\n- [Production Guide](docs/PRODUCTION.md) - Production deployment and monitoring\n- [Restricted Permissions \u0026 Provisioning](docs/RESTRICTED_PERMISSIONS.md) - Manual provisioning and security\n- [Testing with Mock NATS](docs/TESTING.md) - Fast, no-infra testing\n- [Reference Examples (Rails 7)](examples/README.md) - Non-restrictive and restrictive Dockerized examples with E2E tests\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattaradev%2Fjetstream_bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fattaradev%2Fjetstream_bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fattaradev%2Fjetstream_bridge/lists"}