{"id":24518770,"url":"https://github.com/jyapayne/coding-assignment-iam","last_synced_at":"2025-03-15T11:20:47.740Z","repository":{"id":149541614,"uuid":"537810820","full_name":"jyapayne/coding-assignment-iam","owner":"jyapayne","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-18T23:08:51.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T01:46:46.376Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/jyapayne.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":"2022-09-17T13:04:26.000Z","updated_at":"2022-09-18T22:12:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"f999b972-067f-4cd3-bb3e-0ce70b4d83e4","html_url":"https://github.com/jyapayne/coding-assignment-iam","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/jyapayne%2Fcoding-assignment-iam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyapayne%2Fcoding-assignment-iam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyapayne%2Fcoding-assignment-iam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyapayne%2Fcoding-assignment-iam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jyapayne","download_url":"https://codeload.github.com/jyapayne/coding-assignment-iam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243720097,"owners_count":20336749,"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":[],"created_at":"2025-01-22T01:46:57.921Z","updated_at":"2025-03-15T11:20:47.720Z","avatar_url":"https://github.com/jyapayne.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rock Paper Scissors Game\n\n## Instructions\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\nuvicorn app.main:app --host 0.0.0.0 --port 8080\n```\n\n## Stack\n\nI used uvicorn + FastAPI for the backend, and simple JS + HTML + Bulma\nCSS for the frontend.\n\n## Accomplished\n\nI was able to get the backend mostly done and added the initial page for\nthe frontend. A game is able to be created, saved, and loaded. A basic\ngame page exists, but just notifies the player of who is playing. If the\nplayer 2 field is left blank, a player named CPUPlayer is created.\n\n## Further Improvements\n\nIf given more time, I would have liked to explore creating the full game\nUI and revise my design as needed. The main game would have been played\non the frontend, with just the score being tracked on the backend. This\nis the design I went with, so no game logic actually exists.\n\nI thought it would have been cool to use websockets and allow a player\nto use a game code from a separate window or computer on the same\nnetwork to make a simple online multiplayer version. This would be more\nfun since the second player wouldn't be able to see the other's screen.\n\nThe saving mechanism could be improved with an actual SQL/Mongo or\nequivalent server. Pickle is generally unsafe because it can cause\nremote code execution vulnerabilities, but it was used to save time.\n\nIt was my first time using FastAPI, so there are likely multiple style\nand usability improvements that could be utilized with more time.\n\nBetter UI outline and arrangement could also be done, but is limited by\nmy design skills. I would probably enlist a designer to help with that.\n\nI could have added a one time public/private keypair for signing and \nvalidating the post requests so that you can't just increase your own\nscore by using fabricated post requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjyapayne%2Fcoding-assignment-iam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjyapayne%2Fcoding-assignment-iam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjyapayne%2Fcoding-assignment-iam/lists"}