{"id":24522737,"url":"https://github.com/gbzarelli/gophertalk","last_synced_at":"2025-03-15T13:22:53.182Z","repository":{"id":64307624,"uuid":"443632965","full_name":"gbzarelli/gophertalk","owner":"gbzarelli","description":"GopherTalk is a multi-user chat powered by GO to explore its standard  library and features like sockets, goroutines, channels  and sync package.","archived":false,"fork":false,"pushed_at":"2022-01-11T00:34:07.000Z","size":445,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-22T03:35:20.690Z","etag":null,"topics":["chat","go","gochat","golang","goroutines","multiuser","socket"],"latest_commit_sha":null,"homepage":"","language":"Go","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/gbzarelli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-01T22:08:44.000Z","updated_at":"2023-05-04T01:31:47.000Z","dependencies_parsed_at":"2023-01-15T11:00:45.280Z","dependency_job_id":null,"html_url":"https://github.com/gbzarelli/gophertalk","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbzarelli%2Fgophertalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbzarelli%2Fgophertalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbzarelli%2Fgophertalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbzarelli%2Fgophertalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbzarelli","download_url":"https://codeload.github.com/gbzarelli/gophertalk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243733643,"owners_count":20339087,"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","go","gochat","golang","goroutines","multiuser","socket"],"created_at":"2025-01-22T03:35:22.682Z","updated_at":"2025-03-15T13:22:53.162Z","avatar_url":"https://github.com/gbzarelli.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GopherTalk\n\n![](./images/gophertalk.png)\n\nGopherTalk is a multi-user chat powered by GO to explore its standard \nlibrary and features like sockets, goroutines, channels \nand sync package.\n\n---\n\n## The Project\n\nThe project was two binaries, the [server](./cmd/server.go) located in {project-dir}/cmd/server.go and the [client](./cmd/client.go) in {project-dir}/cmd/client.go\n\n![Alt Text](./images/show.gif)\n\n### Server\n\nThe server is responsible to maintain the channels with your clients open, and, redirect the messages to them.\n\nThe traffic between client-server-client is done by payloads in JSON formats established in the package internal / dto\n\nWas use pure Socket channel to accept new clients. No specific protocol was used for communication.\n\n### Client\n\nThe client just connect in the server (informed when start) and login with an uniq username, there is no authentication. \nIf the username was exists in the server, its reject and asked to reconnect.\n\nThe client can talk with all people in the server or a specific user defined by command\n\n#### Commands:\n\n- `/help`         : to show the help message\n- `/users`        : for list connected users\n- `/to {user}`    : to define the user to send the message\n- `/all`          : to define all people to send the message\n\n# Run\n\nBuild the project\n\n```shell\n\u003emake build\n```\n\nRun the server at port 8080:\n\n```shell\n\u003emake run-server\n```\n\nRun client:\n\n```shell\n\u003emake run-client\n```\n\nEnjoy!\n\n# Contribute\n\nPull Requests are welcome. For important changes, open an 'issue' first to discuss what you would like to change. Be sure to update tests as appropriate.\n\n# Developer\n\nGuilherme Biff Zarelli\n\n- Blog/Site - https://helpdev.com.br\n- LinkedIn - https://linkedin.com/in/gbzarelli/\n- GitHub - https://github.com/gbzarelli\n- Medium - https://medium.com/@guilherme.zarelli\n- Email - gbzarelli@helpdev.com.br\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbzarelli%2Fgophertalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbzarelli%2Fgophertalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbzarelli%2Fgophertalk/lists"}