{"id":31394842,"url":"https://github.com/kenzietechnologies/messaged","last_synced_at":"2025-09-29T07:34:39.318Z","repository":{"id":65564890,"uuid":"543879590","full_name":"kenzietechnologies/messaged","owner":"kenzietechnologies","description":"A gem for quickly and easily implementing Hotwire Turbo chat modules on Ruby on Rails apps.","archived":true,"fork":false,"pushed_at":"2024-11-16T17:58:52.000Z","size":179,"stargazers_count":5,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-15T01:21:41.731Z","etag":null,"topics":["hotwire-turbo","instant-messaging","ruby","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/messaged","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/kenzietechnologies.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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}},"created_at":"2022-10-01T03:50:15.000Z","updated_at":"2025-08-22T16:15:32.000Z","dependencies_parsed_at":"2025-03-29T11:41:08.539Z","dependency_job_id":null,"html_url":"https://github.com/kenzietechnologies/messaged","commit_stats":null,"previous_names":["curiousmarkingsco/messaged","ianrandmckenzie/messaged","kenzietechnologies/messaged"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kenzietechnologies/messaged","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzietechnologies%2Fmessaged","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzietechnologies%2Fmessaged/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzietechnologies%2Fmessaged/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzietechnologies%2Fmessaged/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kenzietechnologies","download_url":"https://codeload.github.com/kenzietechnologies/messaged/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzietechnologies%2Fmessaged/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277483274,"owners_count":25825559,"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":"2025-09-29T02:00:09.175Z","response_time":84,"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":["hotwire-turbo","instant-messaging","ruby","ruby-on-rails"],"created_at":"2025-09-29T07:34:33.972Z","updated_at":"2025-09-29T07:34:39.308Z","avatar_url":"https://github.com/kenzietechnologies.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Messaged\nA Rails Engine for Hotwire Turbo-powered instant messaging.\n\nThe author would personally recommend against using this Gem if your Rails application is not built for Turbo Rails.\n\nAs seen on PalmerTrolls on YouTube! Watch on YouTube:\n\n[![Video of Ben Palmer using `messaged` through a prank website](https://img.youtube.com/vi/5cDe5vkq9cs/0.jpg)](https://www.youtube.com/watch?v=5cDe5vkq9cs)\n\n\n## Installation\nAdd this line to your application's Gemfile:\n\n```ruby\ngem \"messaged\"\n```\n\nAnd then execute:\n```bash\nbundle\n```\n\nOr install it yourself as:\n```bash\ngem install messaged\n```\n\nGenerate the needed migrations and initializer:\n```bash\nrails generate messaged:install\nrails messaged:install:migrations\n```\n\n### Importmap\n\nIf you do not yet have importmap-rails added to your application, be sure to add `config/importmap.rb`:\n```ruby\n# config/importmap.rb\npin \"application\", preload: true\npin \"@hotwired/turbo-rails\", to: \"turbo.min.js\", preload: true\n```\n\n## Usage\nMessages broadcast to the DOM element id `messages`\n```html\n\u003cdiv id=\"messages\"\u003e\u003c/div\u003e\n```\n\nTo get started with a basic HTML structure, run in your terminal: `rails generate messaged:views`\n\nIf you're using this engine or `turbo-rails` for the first time, it is recommended to generate the views to familiarize yourself with how turbo tags are used when turbo streaming.\n\n### Routes\n\nIf you're starting a fresh application, ensure your application has a root path.\n```ruby\n# For example:\nroot to: \"home#index\"\n```\n\nNext, set up your ActionCable routes if you haven't already.\n```ruby \nmount ActionCable.server =\u003e '/cable'\n```\n\nLastly, mount the Messaged engine's paths.\n```ruby\nmount Messaged::Engine =\u003e \"/messaged\"\n```\n\n### Users\nMessaged assumes you have a user model. You may customize the user model name in the initializer. For example, if your user model is called Member:\n```ruby\n# config/initializers/messaged.rb\nMessaged.user_class = 'Member'\nMessaged.current_user_method = :current_member\n```\n\n### Tenants\nMessaged does not assume the application is multi-tenant, but does support it. By default, `Messaged.tenant_class` is set to `nil`.\n```ruby\n# config/initializers/messaged.rb\nMessaged.tenant_class = 'Account'\nMessaged.current_tenant_method = :current_account\n```\n\n## Dependencies\nIt is recommended, particularly for development, to have a websockets compatible web server. This is true for production as well, but puma adds an easy way to support websockets without needing additional infrastructure from external services.\n```ruby\ngem \"puma\"\n```\n\nBy default, Messaged is powered by:\n```ruby\ngem \"rails\", \"\u003e= 7.0.2.3\"\ngem \"importmap-rails\", \"1.1.5\"\ngem \"turbo-rails\", \"1.3.0\"\n```\nIf your application cannot support these gems, it is recommended that you do not use the Messaged engine. Alternatively, feel free to work this engine and add support for your desired setup. Pull requests are welcome, see: [CONTRIBUTING.md](https://github.com/curiousmarkingsco/messaged/blob/main/CONTRIBUTING.md)\n\n## Contributing\nSee [CONTRIBUTING.md](https://github.com/curiousmarkingsco/messaged/blob/main/CONTRIBUTING.md)\n\n## License\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\nSee also: [LICENSE.txt](https://github.com/curiousmarkingsco/messaged/blob/main/LICENSE.txt)\n\n## Other Info\nMessaged is intended to be named through the nomenclature used in [Noticed](https://github.com/excid3/noticed), in part because Collin and I met through the GoRails Discord server (owned by @excid3).\n—Ian\n\n## TODO\n* Complete adding rich_text support\n* Complete multi-tenant support\n* Create and finish the test suite via TestKit\n\n### TODO on `bleeding` pre-merge\n* Add documentation about how to extend messages and rooms\n\t*\tIf not for anyone else, do it for future you\n* Add to docs about how it is up to the dev to determine how messages/rooms are authorized\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenzietechnologies%2Fmessaged","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkenzietechnologies%2Fmessaged","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenzietechnologies%2Fmessaged/lists"}