{"id":15591247,"url":"https://github.com/zhashkevych/goutalk","last_synced_at":"2025-04-24T05:37:40.095Z","repository":{"id":118975411,"uuid":"191781198","full_name":"zhashkevych/goutalk","owner":"zhashkevych","description":"Simple chat server developed within \"Backend Challenge Hackathon\" \u0026 Chat Bot based on Dialogflow NLU System","archived":false,"fork":false,"pushed_at":"2019-07-13T12:47:06.000Z","size":926,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2023-03-06T20:10:25.614Z","etag":null,"topics":["chat","chat-application","demo-app","docker","docker-compose","go","golang","mongodb","websockets"],"latest_commit_sha":null,"homepage":"","language":"Go","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/zhashkevych.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-13T14:43:21.000Z","updated_at":"2024-06-19T08:54:44.785Z","dependencies_parsed_at":null,"dependency_job_id":"a0b2f622-a1fe-41a0-b3fe-1d63a41b867c","html_url":"https://github.com/zhashkevych/goutalk","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhashkevych%2Fgoutalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhashkevych%2Fgoutalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhashkevych%2Fgoutalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhashkevych%2Fgoutalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhashkevych","download_url":"https://codeload.github.com/zhashkevych/goutalk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":220952487,"owners_count":16728059,"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":["chat","chat-application","demo-app","docker","docker-compose","go","golang","mongodb","websockets"],"created_at":"2024-10-02T23:40:42.288Z","updated_at":"2024-10-21T10:41:00.442Z","avatar_url":"https://github.com/zhashkevych.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GouTalk\nSimple chat server written in Go (demo project for \"Backend Challenge Hackathon\") \n\n## Requirements\n- docker\n- docker-compose\n\n## Build and Run\n\nTo run the project locally all you have to do is run:\n\n```docker-compose up server```\n\n## Key Concept and Endpoints description\n\n### POST /login\n\nRequires no auth, creates new user if not exists, or sings in existent user by generating JWT Token \n\n##### Example Input: \n```\n{\n\t\"user_name\": \"conorMcGregor\",\n\t\"password\": \"illbeatyoass\"\n} \n```\n\n##### Example Response:\n```\n{\n    \"id\": \"5d091716db8212e1a2efb33a\",\n    \"user_name\": \"conorMcGregor\",\n    \"credentials\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjA5NjMyMjUsImlhdCI6MTU2MDg3NjgyNSwidXNlcl9pZCI6IjVkMDkxNzE2ZGI4MjEyZTFhMmVmYjMzYSIsInVzZXJuYW1lIjoibmV3dXNlciIsInBhc3N3b3JkIjoiXHVmZmZkXHVmZmZkJ1x1MDAxMlx1ZmZmZFx1ZmZmZEBcdWZmZmRcdTAwMTJRXHVmZmZkXHVmZmZkYdWt3qVv25oifQ.eruNfiyxFSm3H1s4uleY9Cuxw-D6qbjukjwI1kTwn70\"\n}\n```\n\n##### *Note: All other endpoints requires Bearer token authentication\n\n### GET /users\n\nReturns a list of existing users\n\n##### Example Response:\n```\n{\n    \"users\": [\n        {\n            \"user_id\": \"5d061d45c73985d0b598b0a5\",\n            \"user_name\": \"nagibator\"\n        },\n        {\n            \"user_id\": \"5d091e4ddb8212e1a2efb33c\",\n            \"user_name\": \"conorMcGregor\"\n        }\n    ]\n}\n```\n\n### GET /users/\u003cUSER_ID\u003e\n\nReturns info for specific user\n\n##### Example Response:\n```\n{\n    \"user_id\": \"5d091e4ddb8212e1a2efb33c\",\n    \"user_name\": \"conorMcGregor\"\n}\n```\n\n### GET /rooms\n\nReturns a list of rooms available\n\n##### Example Response:\n```\n[\n    {\n        \"room_id\": \"5d07348c594a0972c8010faf\",\n        \"room_name\": \"memes\",\n        \"creator_id\": \"5d062c9120f31443e4cdd449\",\n        \"created_at\": \"2019-06-17T06:34:52.504Z\",\n        \"members\": [\n            {\n                \"user_id\": \"5d091e4ddb8212e1a2efb33c\",\n                \"user_name\": \"conorMcGregor\"\n            }\n        ]\n    },\n    {\n        \"room_id\": \"5d07388c32749f0d3885cb04\",\n        \"room_name\": \"morememes\",\n        \"creator_id\": \"5d062c9120f31443e4cdd449\",\n        \"created_at\": \"2019-06-17T06:51:56.005Z\",\n        \"members\": []\n    }\n]\n```\n\n### GET /rooms/\u003cROOM_ID\u003e\n\nReturns info for a given room\n\n##### Example Response:\n```\n {\n    \"room_id\": \"5d07348c594a0972c8010faf\",\n    \"room_name\": \"memes\",\n    \"creator_id\": \"5d062c9120f31443e4cdd449\",\n    \"created_at\": \"2019-06-17T06:34:52.504Z\",\n    \"members\": [\n        {\n            \"user_id\": \"5d091e4ddb8212e1a2efb33c\",\n            \"user_name\": \"conorMcGregor\"\n        }\n    ]\n}\n```\n\n### POST /rooms\n\nAdds a new chat room\n\n##### Example Input: \n```\n{\n\t\"name\": \"bestoftinder\"\n}\n```\n\n##### Example Response:\n```\n{\n    \"room_id\": \"5d092005db8212e1a2efb33d\",\n    \"room_name\": \"bestoftinder\",\n    \"creator_id\": \"5d091716db8212e1a2efb33a\",\n    \"created_at\": \"2019-06-18T17:31:49.428210839Z\",\n    \"members\": []\n}\n```\n\n### DELETE /rooms/\u003cROOM_ID\u003e\n\nRemoves specific chat room (by room creator)\n\n##### Example Response:\n```\n{\n    \"message\": \"room removed successfully\"\n}\n```\n\n### POST /rooms/\u003cROOM_ID\u003e/join\n\nAdds current user to a given chatroom\n\n##### Example Response:\n```\n{\n    “result”:  “user successfully joined the room”\n}\n```\n\n\n### POST /rooms/\u003cROOM_ID\u003e/leave\n\nRemoves current user from a given chatroom\n\n##### Example Response:\n```\n{\n    “result”:  “user successfully left the room”\n}\n```\n\n### POST /message\n\nSends message to all connected via Websockets clients\n##### *Websoket connection is established on ws://hostname:1030/\n\n##### Example Input: \n```\n{\n\t\"room_id\": \"5d07348c594a0972c8010faf\",\n\t\"message\": \"I’m going to the stars and then past them.\"\n}\n```\n\n##### Example Response:\n```\n{\n    \"result\": \"message successfully sent\" \n}\n```\n\n##### *Clients connected via Websocket recieves payload like this:\n```\n{\n   \"user_id\": \"5d092005db8212e1a2efb33d\", \n   \"room_id\": \"5d07348c594a0972c8010faf\",\n   \"message\": \"I’m going to the stars and then past them.\"\n}\n```\n\n# GouTalk Chat Bot\nChat Bot is an app that listens on websocket connection, and replies to messages that starts with **@bot** mention \n\nBot uses Dialogflow as NLU Service for speach generation\n\n## Build and Run\n\nTo run the project locally all you have to do is run:\n\n```docker-compose up chatbot```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhashkevych%2Fgoutalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhashkevych%2Fgoutalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhashkevych%2Fgoutalk/lists"}