{"id":15818848,"url":"https://github.com/fmalcher/nobodysperfect-frontend","last_synced_at":"2025-09-01T09:32:21.178Z","repository":{"id":77295948,"uuid":"252865175","full_name":"fmalcher/nobodysperfect-frontend","owner":"fmalcher","description":null,"archived":false,"fork":false,"pushed_at":"2020-05-07T09:54:53.000Z","size":1799,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-06T06:20:14.008Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/fmalcher.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-04-03T23:32:06.000Z","updated_at":"2020-05-07T09:53:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2b8c158-0619-459e-95a1-563afb1bb986","html_url":"https://github.com/fmalcher/nobodysperfect-frontend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fmalcher/nobodysperfect-frontend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmalcher%2Fnobodysperfect-frontend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmalcher%2Fnobodysperfect-frontend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmalcher%2Fnobodysperfect-frontend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmalcher%2Fnobodysperfect-frontend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fmalcher","download_url":"https://codeload.github.com/fmalcher/nobodysperfect-frontend/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmalcher%2Fnobodysperfect-frontend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273100030,"owners_count":25045697,"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-09-01T02:00:09.058Z","response_time":120,"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-05T06:20:27.023Z","updated_at":"2025-09-01T09:32:21.085Z","avatar_url":"https://github.com/fmalcher.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nobody is Perfect Frontend Application\n\nFrontend for the board game [\"Nobody is perfect\"](https://www.ravensburger.de/produkte/spiele/erwachsenenspiele/nobody-is-perfect-27225/index.html) to make it virtually playable via video conference.\nBe aware that this is a rather hacky solution that's supposed to \"just work\" and nothing more.\n\n## Installation and run\n\n* Clone this repo.\n* Install and run an instance of the [backend server](https://github.com/fmalcher/nobodysperfect-backend).\n* Configure your backend host and port in the environment files in `src/environments`.\n\n```\nnpm i\nng serve\n```\n\nOpen your browser: http://localhost:4200\n\n\n## Deployment\n\nBuild and deployment have to be done manually, there is no CI involved at the moment.\nTo publish to GitHub Pages:\n\n```\nnpm run deploy\n```\n\nIt will do a prod build and push to the `ghpages` branch of the repo.\n\n## Architecture\n\nFor the sake of simplicity, data transfer between backend and frontend works with polling.\nThe server persists all state in a static JSON file `data.json`.\nThe frontend can poll this JSON file to get the current data.\nAll calls from frontend to backend are HTTP POST calls that change data on the server.\n\nWe are aware of the limitations of this approach, however with HTTP caching it should be quite tolerable to use polling.\n\n## Game States\n\nThe phases of the game are determined by a state index.\n\n| State  | Description | Player | Moderator |\n|---|---|---|---|\n| `0` | `idle` |  | enter question |\n| `1` | `giveAnswer` | enter answer |  |\n| `2` | `waitForResults` |  | edit answers |\n| `3` | `chooseAnswer` | choose answer |  |\n| `4` | `resultsFull` | see results anonymized |  |\n| `5` | `resultsFullWithAuthor` | see results and round score full |  |\n| `6` | `showFullScore` | see full score |  |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmalcher%2Fnobodysperfect-frontend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffmalcher%2Fnobodysperfect-frontend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmalcher%2Fnobodysperfect-frontend/lists"}