{"id":20239492,"url":"https://github.com/realmq/realmq-platform","last_synced_at":"2025-04-10T19:40:29.496Z","repository":{"id":39851044,"uuid":"135281761","full_name":"realmq/realmq-platform","owner":"realmq","description":"RealMQ :rocket: is an open source real-time messaging platform with focus on integrability, privacy, security and performance.","archived":false,"fork":false,"pushed_at":"2023-11-17T20:04:44.000Z","size":2589,"stargazers_count":70,"open_issues_count":14,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-24T17:14:58.305Z","etag":null,"topics":["iot","mqtt","platform","pubsub","real-time","signaling","telecommunication"],"latest_commit_sha":null,"homepage":"https://realmq.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"osl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/realmq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2018-05-29T10:47:23.000Z","updated_at":"2025-03-16T16:11:48.000Z","dependencies_parsed_at":"2023-11-17T21:29:15.790Z","dependency_job_id":"0ff72980-2205-4614-aa04-cf30ad977083","html_url":"https://github.com/realmq/realmq-platform","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realmq%2Frealmq-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realmq%2Frealmq-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realmq%2Frealmq-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realmq%2Frealmq-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/realmq","download_url":"https://codeload.github.com/realmq/realmq-platform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281419,"owners_count":21077423,"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","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":["iot","mqtt","platform","pubsub","real-time","signaling","telecommunication"],"created_at":"2024-11-14T08:39:06.502Z","updated_at":"2025-04-10T19:40:29.472Z","avatar_url":"https://github.com/realmq.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"media/realmq-platform-logo.svg\" alt=\"RealMQ Logo\" /\u003e\n  \u003cbr\u003e\u003cbr\u003e\n\u003c/h1\u003e\n\n![RealMQ Platform Build Status](https://drone.rmq.ovh/api/badges/realmq/realmq-platform/status.svg?ref=refs/heads/main)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Frealmq%2Frealmq-platform.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Frealmq%2Frealmq-platform?ref=badge_shield)\n[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/realmq)\n\n# RealMQ :rocket: Open Source Real-time Messaging Platform\n\n[RealMQ](https://realmq.com) is a free and open source backbone for real-time communication.\nOur core values are **performance** and **integrability**.\nThe platform is built around a convenient REST-API to manage access control, data channels and users/devices.\nMessages, events and data are exchanged via the battle proven MQTT protocol which is lightweight, fast and well established in the world of IoT.\nClients connect to our highly scalable MQTT broker that takes care of delivering messages to all connected subscribers.\nOn top of this slim but flexible core you can build awesome realtime products and services around use-cases like:\n\n* Device to device communication\n* Exchange signals / send and receive realtime events\n* Broadcast messages or events to segmented users\n* Aggregate and dispatch data\n* Emit sensor/IoT Device data\n* Chat\n\n## Features\n### REST API\nWe follow the API first approach, as we see our API as the central component in our architecture.\nOur mission is to build a developer friendly API with industry standard patterns and\ntools like RESTful design principles and an OpenAPI specification.\nIt goes without saying that all requests are TLS encrypted and authentication is backed by security tokens (Bearer authentication).\n\n### Message Persistence\nMessage history can be enabled and fine tuned on channel level.\nOnce enabled, all messages published to the channel will be kept for a configured amount of time.\nPersisted messages can be retrieved via API history resource.\n\n\u003cdetails\u003e\n\u003csummary\u003eExplore code samples\u003c/summary\u003e\n\u003cbr\u003e\n\n[![Using RealMQ via Node SDK](https://badgen.net/badge/-/Node%20SDK/purple?icon=awesome\u0026label \"Using RealMQ via Node SDK\")](https://realmq.com/docs/node-sdk)\n[![Using RealMQ via Web SDK](https://badgen.net/badge/-/Web%20SDK/purple?icon=awesome\u0026label \"Using RealMQ via Web SDK\")](https://realmq.com/docs/web-sdk)\n\n```js\n// Create a new channel that keeps messages for 2 weeks \nconst channel = await realmq.channels.create({\n  history: '2 weeks'\n});\n\n// Retrieve the history (last 20 messages)\nconst history = await realmq.history.query({\n  channel,\n  limit: 20\n});\n\n```\n\n[![Using RealMQ via CURL](https://badgen.net/badge/example/CURL/purple?icon=awesome\u0026label \"Using RealMQ via CURL\")](https://realmq.com/docs/client-api)\n\n```bash\ncurl -X POST -H 'Authorization: Bearer token...' -H 'Content-Type: application/json' \\\n     -d '{\"history\": \"2 weeks\"}' \\\n     https://api.realmq.com/client/v1/channels\n     \ncurl -H 'Authorization: Bearer token...' \\\n     https://api.realmq.com/client/v1/channels/:channelId/history?limit=20\n```\n\n\u003c/details\u003e\n\n### Custom Ids\nIt’s just a little detail that manifests the seamless integration into your stack:\nAll API resources can be operated with optional custom ids.\n[read more](https://realmq.com/docs/knowledge-base/#custom-ids)\n\n\u003cdetails\u003e\n\u003csummary\u003eExplore code samples\u003c/summary\u003e\n\u003cbr\u003e\n\n[![Using RealMQ via Node SDK](https://badgen.net/badge/-/Node%20SDK/purple?icon=awesome\u0026label \"Using RealMQ via Node SDK\")](https://realmq.com/docs/node-sdk)\n[![Using RealMQ via Web SDK](https://badgen.net/badge/-/Web%20SDK/purple?icon=awesome\u0026label \"Using RealMQ via Web SDK\")](https://realmq.com/docs/web-sdk)\n\n```js\n// Create resources with custom ids\nconst channel = await realmq.channels.create({ id: 'custom-channel-id' });\nconsole.log(channel.id); // =\u003e custom-channel-id\n\n// Retrieve resources with custom ids\nconst channel = await realmq.channels.retrieve('custom-channel-id');\n\n// Or get an id auto generated\nconst channel = await realmq.channels.create();\nconsole.log(channel.id) // =\u003e 20f62e87-e689-4a11-bcf3-a78026fffd85\n\n```\n\n[![Using RealMQ via CURL](https://badgen.net/badge/example/CURL/purple?icon=awesome\u0026label \"Using RealMQ via CURL\")](https://realmq.com/docs/client-api/)\n\n```bash\n# Create resources with custom ids\ncurl -X POST -H 'Authorization: Bearer token...' -H 'Content-Type: application/json' \\\n     -d '{\"id\": \"custom-channel-id\"}' \\\n     https://api.realmq.com/client/v1/channels\n\n# Retrieve resources with custom ids\ncurl -H 'Authorization: Bearer token...' /\n     https://api.realmq.com/client/v1/channels/custom-channel-id\n\n# Or get an id auto generated\ncurl -X POST -H 'Authorization: Bearer token...' \\\n     https://api.realmq.com/client/v1/channels\n```\n\n\u003c/details\u003e\n\n### Realms\nThe RealMQ platform comes with built in **multi-tenancy** / project support.\nYou have the ability to operate multiple, **isolated data containers**.\nOur so-called Realms make it a breeze to setup clean separation of different applications and **launch on-the-fly environments** (like prod, test, demo).\nRealms are completely transparent to clients, as we are able to route all RTM and API calls into the correct Realm via auth tokens.\nFor Realm administration and access management you can operate directly against a **dedicated administration api**.\n\n### SDKs\nWe provide SDKs for [NodeJS](https://github.com/realmq/realmq-node-sdk) and the [Browser](https://github.com/realmq/realmq-web-sdk).\nOther major platforms will follow.\nThe SDKs aim for seamless integration and hence provide you with a convenient interface for interacting with our platform and are first class helpers for building reactive realtime apps.\n\n\u003cdetails\u003e\n\u003csummary\u003eExplore code sample\u003c/summary\u003e\n\u003cbr\u003e\n\n[![Using RealMQ via Node SDK](https://badgen.net/badge/-/Node%20SDK/purple?icon=awesome\u0026label \"Using RealMQ via Node SDK\")](https://realmq.com/docs/node-sdk)\n\n```js\nimport RealMQ from '@realmq/node-sdk';\n// Initialize with auth token\nconst realmq = RealMQ('sub_kg2...');\n\n// Publish messages of any format\nrealmq.rtm.publish('some-channel', {\n  status: 'Exited!'\n});\n\n// Subscribe to real-time updates\nrealmq.rtm.subscribe('some-channel', msg =\u003e {\n  console.log('Horay! New message received:', msg);\n});\n\n// Retrieve subscriptions\nconst subscriptions = await realmq.subscriptions.list();\n```\n\n\u003c/details\u003e\n\n### Security \u0026 Encryption\nThe RealMQ platform comes with fine grained access control capabilities, that can be managed via API.\nWe don’t enforce a specific content type for the messages that are sent between clients.\nIt’s totally up to you to decide what the payload contains.\nThis allows for easy integration of any kind of end-to-end encryption for messages.\nOn top of our TLS this establishes an additional security layer. \n\n\n## Roadmap\n:1st_place_medal: Help up prioritize our backlog with your votes and comments on the features you are most exited about.\n\n* **CLI Tool**: Operate the RealMQ platform from the command line. (#86)\n* **Public Cloud Service**: Free developer tier and pay-as-you-go subscriptions. (#87) Reach out to service@realmq.com for beta access.\n* **Dashboard**: A web app for account-, realm management and monitoring. (#88)\n* **Webhooks**: Integrate RealMQ via http/webhook (#85)\n* **Channel Pipes**: Message routing \u0026 enrichment (#89)\n* **Multi-Channel**: SMS, email, push integration (#90)\n\n:+1: And you are more then welcome to start a discussion and [suggest a new feature](https://github.com/realmq/realmq-platform/issues/new).\n\n## Configuration\n\nThe app can be configured via environment variables, that can also be injected via `.env` file.\nFor a complete list of configuration options see [config docs](./src/config/README.md).\n\n## Run\nThe RealMQ platform comes with a docker compose setup aimed for local development.\u003cbr/\u003e\nTo get you started, simply run:\n\n```bash\nnpm run dev\n```\nThis command will:\n- :checkered_flag: setup `.env` file\n- :package: fetch and install all dependencies.\n- :lock: generate TLS certificates and setup local dns for `[api.|rtm.]realmq.local`\n- :robot: launch the mqtt broker on rtm.realmq.local:1883 \n- :whale: launch the app on https://api.realmq.local\n- :fire: code reload - restart app upon code changes\n\n### Setting up TLS certificate\n`npm run dev` generates self-signed certificates. In order to trust them on your machine, import the ROOT CA cert from `certs/dev-ca-root.crt.pem`.\n\n* **Firefox**: Go to \"Preferences \u003e Advanced \u003e Certificates \u003e View Certificates \u003e Authorities \u003e Import\" and select the CA certificate.\n* **Chrome**: Go to \"Settings \u003e Manage Certificates \u003e Authorities \u003e Import\" and select the CA certificate.\n\n## Documentation\n\n* [Knowlage Base](https://realmq.com/docs/knowledge-base/)\n* [Node SDK](https://realmq.com/docs/node-sdk/)\n* [Web SDK](https://realmq.com/docs/web-sdk/)\n* [Client API Browser](https://realmq.com/docs/client-api/)\n* [Architecture](/docs/architecture)\n* [Code Style](/docs/code-style)\n* [Workflows](/docs/workflow)\n* [Specification](/docs/spec)\n\n## License\nCopyright (c) 2018-2023 RealMQ GmbH.\u003cbr/\u003e\nLicensed under the [Open Software License version 3.0](LICENSE)\n\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Frealmq%2Frealmq-platform.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Frealmq%2Frealmq-platform?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealmq%2Frealmq-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frealmq%2Frealmq-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealmq%2Frealmq-platform/lists"}