{"id":17844080,"url":"https://github.com/ginglis13/cli-typeracer","last_synced_at":"2025-10-18T01:46:54.721Z","repository":{"id":104555773,"uuid":"242261009","full_name":"ginglis13/cli-typeracer","owner":"ginglis13","description":":keyboard: typeracer client and server for the command line","archived":false,"fork":false,"pushed_at":"2021-03-29T16:39:16.000Z","size":58,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-29T16:45:58.848Z","etag":null,"topics":["go","golang","hacktoberfest","typeracer","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/ginglis13.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":"2020-02-22T01:33:36.000Z","updated_at":"2022-03-13T21:27:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"b028b896-0e4b-4aa3-8152-130a8e68cc59","html_url":"https://github.com/ginglis13/cli-typeracer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginglis13%2Fcli-typeracer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginglis13%2Fcli-typeracer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginglis13%2Fcli-typeracer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginglis13%2Fcli-typeracer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ginglis13","download_url":"https://codeload.github.com/ginglis13/cli-typeracer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232032088,"owners_count":18462969,"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":["go","golang","hacktoberfest","typeracer","websockets"],"created_at":"2024-10-27T21:27:57.869Z","updated_at":"2025-10-18T01:46:54.632Z","avatar_url":"https://github.com/ginglis13.png","language":"Go","readme":"# cli-typeracer\n\ncli for playing typeracer, and a server to host games on.\n\n![](https://yld.me/raw/dM1J.png)\n\n### Goal of the Project\n\nThe goal of this project was to be my first \\~real\\~ project in Go. I have messed around with Go on and off\nfor the past year, and made a small go program that was a copy of the tree linux utility. However, this is\nthe first \"real\" practical application I've made in Go. It makes use of Websockets, Goroutines, mutexes, etc.\nI've learned a lot about websockets and goroutines from doing this project, and my prior knowledge of using\nmutexes helped during development. I ended up using this project for  [Hacker in the Bazaar Project 2.](https://www3.nd.edu/~pbui/teaching/cse.40842.sp21/project02.html). Another goal of this project was to simply make a clone of typeracer. When I had first thought of this\nidea, I had been brainstorming applications that I could turn into CLI programs, and typeracer just so happened to be one of them.\nGo works well for this project due to the simplicity with which you can develop concurrent programs.\n\n### Unique Go Features in this Project\n\n- Goroutines\n  * used on the Client side for sending and receiving JSON messages from the Server\n  * used on the Server side for sending and receiving JSON messages from the Client\n  * used to place keyboard input in the background\n### Installing Sauce\n\nFirst, install dependencies for the client:\n```\n\tgo get -u github.com/eiannone/keyboard\n\tgo get -u github.com/fatih/color\n\tgo get -u github.com/ginglis13/cli-typeracer/models\n```\n\nRun the client with `go run client.go` and the server with `go run server.go` to view options\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginglis13%2Fcli-typeracer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fginglis13%2Fcli-typeracer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginglis13%2Fcli-typeracer/lists"}