{"id":20080683,"url":"https://github.com/cloud8421/rps","last_synced_at":"2025-07-24T12:32:56.469Z","repository":{"id":139444236,"uuid":"132860504","full_name":"cloud8421/rps","owner":"cloud8421","description":"Example application to explore GenServer","archived":false,"fork":false,"pushed_at":"2018-05-18T13:52:29.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"starter","last_synced_at":"2025-03-02T13:26:24.562Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elixir","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/cloud8421.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":"2018-05-10T06:50:06.000Z","updated_at":"2021-05-05T17:43:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"85aac3a2-f155-43f2-b46e-5c0d4c7417b1","html_url":"https://github.com/cloud8421/rps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cloud8421/rps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Frps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Frps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Frps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Frps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloud8421","download_url":"https://codeload.github.com/cloud8421/rps/tar.gz/refs/heads/starter","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloud8421%2Frps/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266844021,"owners_count":23993961,"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-07-24T02:00:09.469Z","response_time":99,"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":[],"created_at":"2024-11-13T15:29:37.502Z","updated_at":"2025-07-24T12:32:56.445Z","avatar_url":"https://github.com/cloud8421.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rps\n\n# GenServer under the microscope\n\n## Intro\n\nThe aim of this tutorial is to show some day to day techniques that can be used when working with generic servers.\nThe codebase we will be working on is written in Elixir, but techniques can be applied to other BEAM languages as well.\n\nThe project requires Elixir \u003e= 1.6.0.\n\nAfter cloning the repository, we can checkout the `starter` branch and run:\n\n`mix do deps.get, compile`\n\nA basic integration test is included, which can be run with `mix test`.\n\n## Example application\n\nThe application represents the core engine for a game of rock, paper, scissors. If you've never played this game, please refer to [the relevant Wikipedia page](https://en.wikipedia.org/wiki/Rock%E2%80%93paper%E2%80%93scissors).\n\n## Features\n\n- Create game sessions\n- Players can join a session\n- After playing, the winner takes 1 point\n- Score is recorded in-memory for ephemeral glory\n- Playable via an IEx console\n\n## Structure\n\n- Each game session is represented by a process, implemented as a [GenServer](https://hexdocs.pm/elixir/GenServer.html). See [Rps.Game.Session](https://github.com/cloud8421/rps/blob/starter/lib/rps/game/session.ex).\n- Games are managed via a [DynamicSupervisor](https://hexdocs.pm/elixir/DynamicSupervisor.html). See [Rps.Game.Supervisor](https://github.com/cloud8421/rps/blob/starter/lib/rps/game/supervisor.ex).\n- Score is recorded in a ETS table. See [Rps.Score](https://github.com/cloud8421/rps/blob/starter/lib/rps/score.ex).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud8421%2Frps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloud8421%2Frps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloud8421%2Frps/lists"}