{"id":15601180,"url":"https://github.com/hacknlove/rpsd","last_synced_at":"2026-06-18T05:31:55.544Z","repository":{"id":200395738,"uuid":"704664211","full_name":"hacknlove/rpsd","owner":"hacknlove","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-05T11:49:44.000Z","size":504,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-20T05:31:15.386Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/hacknlove.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":"2023-10-13T19:07:24.000Z","updated_at":"2024-04-25T03:01:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"fddf76d6-fda0-4721-a61e-0d18fe1cd560","html_url":"https://github.com/hacknlove/rpsd","commit_stats":{"total_commits":46,"total_committers":2,"mean_commits":23.0,"dds":"0.021739130434782594","last_synced_commit":"7c696c29af6e81d506599b25ea476c6076236cb3"},"previous_names":["hacknlove/rpsd"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hacknlove/rpsd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacknlove%2Frpsd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacknlove%2Frpsd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacknlove%2Frpsd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacknlove%2Frpsd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hacknlove","download_url":"https://codeload.github.com/hacknlove/rpsd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacknlove%2Frpsd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34478105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"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-10-03T02:19:23.106Z","updated_at":"2026-06-18T05:31:55.527Z","avatar_url":"https://github.com/hacknlove.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rock Paper Scissors duck\n\n## Description\n\nThis is a massive multiplayer game of rock paper scissors, with ducks.\n\n## How to play\n\nPlayers have 10 seconds to choose between rock, paper, scissors or duck. If they don't choose, they get a duck.\n\nRocks, papers and scissors are played as usual.\n\nBut this is massive multiplayer, so it's very likely that all three options will be played at the same time.\n\nIn that case, the option with fewer players loses. If there's a tie on the less played options, Rock Paper Scissors rules apply to untie.\n\nDucks lose if the amount of ducks is greater or equal to the greatest of all options.\n\n## UX\n\n### Creating a game.\n\nThe user goes to the main page where\n\n- sets a name\n- selects \"rock, paper, scissors ducks\"\n- sets a starting time\n- sets a intro text\n- sets a prize\n- and clicks \"Create game\".\n\nThe user is redirected to the control page, where they can create links to share the game, and where they can find a token to use the API to create links.\n\n### Joining a game\n\nThe user follows a link to the game, sets a name, and clicks \"Join game\".\n\nThe user is redirected to the game page, where they can see the game, and where they can play.\n\n### Playing\n\nThe user selects and option and waits for the round to end.\n\nRounds end automatically after 10 seconds, or when all players have chosen.\n\nThe next round starts automatically.\n\nUsers who have lost become ghosts, and can play but their choice won't count for the game. They just play for fun.\n\nAfter a round ends, the user can see the results of the round, as a label below every option.\n\n### Ending the game\n\nThe game ends when there's only one player left.\n\nThe winner is shown a message, and the game is deleted.\n\n## REST API\n\nWe offer an API to create games and to get links to join games.\n\n### Creating a game\n\nTo create a game, you need to send a POST request to `/api/newMatch` with the following parameters:\n\n```json\n{\n  \"name\": \"The name of the game\",\n  \"intro\": \"The intro text\",\n  \"prizes\": {\n    \"1\": {\n      \"name\": \"The name of the first prize\",\n      \"link\": \"The url of the prize\"\n    },\n    \"2\": {\n      \"name\": \"The name of the second prize\",\n      \"link\": \"The url of the prize\"\n    },\n    \"3\": {\n      \"name\": \"The name of the third prize\",\n      \"link\": \"The url of the prize\"\n    },\n    \"10\": {\n      \"name\": \"The name of the first 10th prize\",\n      \"link\": \"The url of the prize\"\n    }\n  },\n  \"startingTime\": \"The starting time ISO 8601 format\"\n}\n```\n\nThe response is like\n\n```json\n{\n  \"token\": \"The token to use the API\",\n  \"control\": \"The admin panel of the game\",\n  \"joinAll\": \"A link to join the game, that can be used unlimited times\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacknlove%2Frpsd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhacknlove%2Frpsd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacknlove%2Frpsd/lists"}