{"id":19477396,"url":"https://github.com/serknight/guild-messenger","last_synced_at":"2025-10-28T06:18:00.182Z","repository":{"id":30824381,"uuid":"126112167","full_name":"SerKnight/guild-messenger","owner":"SerKnight","description":"chat.it.up.","archived":false,"fork":false,"pushed_at":"2022-12-14T00:43:21.000Z","size":1190,"stargazers_count":1,"open_issues_count":15,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-08T06:42:02.873Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SerKnight.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-21T02:33:50.000Z","updated_at":"2020-09-26T21:03:39.000Z","dependencies_parsed_at":"2023-01-14T17:45:59.748Z","dependency_job_id":null,"html_url":"https://github.com/SerKnight/guild-messenger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerKnight%2Fguild-messenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerKnight%2Fguild-messenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerKnight%2Fguild-messenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SerKnight%2Fguild-messenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SerKnight","download_url":"https://codeload.github.com/SerKnight/guild-messenger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240702702,"owners_count":19843963,"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":[],"created_at":"2024-11-10T19:44:48.158Z","updated_at":"2025-10-28T06:18:00.075Z","avatar_url":"https://github.com/SerKnight.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Guild Messenger\n================\n\n\u003e [Guild Messenger Demo](https://guild-messenger.herokuapp.com/)\n\nTech Project Focus\n================\n\n**It's possible to type a short message and have it sent to another user**\n  * Went with a mimick of the guild's visible organizational structure.. Users, Classrooms, Memberships, Messages\n**It's possible to see messages sent from another user appear reasonably soon after they were sent**\n\t* Decided to finally explore ActionCable / Websocket as this seemed a perfect fit \u0026 chance for me to learn something\n\n**Tests**\n  * Focused on Model \u0026 Feature specs (selenium + chromedriver) to test memberships, classroom management, and conversations w/ messages\n  * If I continued with breaking out the cables/channels would spec out \u0026 learn how each cable sends and receives data\n\n**Usability**\n  * Pulled colors / branding / font patterns from existing Guild site to mimick a live chat\n  * Deployed so Guild Team can play with. Emails / Assets / Websockets configuration needed\n  * Mocked some data \u0026 setup a seed for production to mock a more realistic working application\n\n **Extra**\n \t* Basic analytics \u0026 some production email functionality for inviting someone else to a Classroom's chat\n \t* As a developer it is always nice to actually know when ( \u0026 how ) someone is using the tools you build\n\n\n# TODO\n----\n\u003e Extend Actioncable / Websockets \n\t* To show a live view of members actively connected to a classroom\n\t* Create more dynamic sender / receiver chatroom bubbles in the UI (this was hard.. logic is serialized into the html when a message is created.. Pretty sure I'd need multiple/different sender/receiver cable subscriptions to dynamically display incoming messages )\n\t* Much more to explore about websockets \u0026 their use cases in production.. Very cool!\n\n\u003e Setup background Processing for emails ( \u0026 add notifications ) / and perhaps BG processing of messages to be sent via ActionCable for scale? Need more ActionCable research\n\n\u003e Extend the account page to include profile picture (gathered from fb||google||linked oAuth), categories of interest, management of memberships of classrooms\n\n\u003e Add more elaboration on classroom memberships \u0026 permissions for owners / moderators, other than jsut deleting a channel\n\n\u003e Connect to an internal Guild API and split off chatrooms for users in the same class as one another ( Find a Study Buddy, etc.. )\n\n\u003e Would enable multi-line ( text area ) sending, as well as files \u0026 other rich content, Emoji support is an obvious next step.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserknight%2Fguild-messenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserknight%2Fguild-messenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserknight%2Fguild-messenger/lists"}