{"id":19015761,"url":"https://github.com/pieetrus/score-board","last_synced_at":"2025-08-13T19:21:41.127Z","repository":{"id":238987225,"uuid":"798163931","full_name":"pieetrus/score-board","owner":"pieetrus","description":"Sample project written using TDD","archived":false,"fork":false,"pushed_at":"2024-05-09T18:13:42.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T17:48:06.274Z","etag":null,"topics":["bdd","csharp","tdd"],"latest_commit_sha":null,"homepage":"","language":"C#","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/pieetrus.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":"2024-05-09T08:11:50.000Z","updated_at":"2024-09-07T08:14:14.000Z","dependencies_parsed_at":"2024-05-09T10:28:31.860Z","dependency_job_id":"29242046-0246-44af-a346-96169b8e1c70","html_url":"https://github.com/pieetrus/score-board","commit_stats":null,"previous_names":["pieetrus/score-board"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pieetrus/score-board","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieetrus%2Fscore-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieetrus%2Fscore-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieetrus%2Fscore-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieetrus%2Fscore-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pieetrus","download_url":"https://codeload.github.com/pieetrus/score-board/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pieetrus%2Fscore-board/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268638819,"owners_count":24282637,"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-08-03T02:00:12.545Z","response_time":2577,"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":["bdd","csharp","tdd"],"created_at":"2024-11-08T19:39:31.558Z","updated_at":"2025-08-04T01:42:50.469Z","avatar_url":"https://github.com/pieetrus.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Live Football World Cup Scoreboard Library\n\n## Overview\n\nThe Live Football World Cup Scoreboard is a simple library designed to manage football matches during the World Cup. It provides functionalities to start a new match, update scores, finish a match, and retrieve a summary of ongoing matches based on the total score and most recent activity.\n\n## Getting Started\n\n### Prerequisites\n\n- .NET 8\n- Any preferred IDE that supports C# (e.g., Visual Studio, VSCode)\n\n### Installation\n\nClone the repository to your local machine:\n\n```\ngit clone https://github.com/pieetrus/score-board\n```\n\n### Usage\n\nTo use the scoreboard in your project, reference the library and follow the example below to manipulate match data:\n\n```\nvar scoreboardService = new ScoreboardService(new MatchRepository());\n\n// Starting a match\nscoreboardService.StartMatch(\"HomeTeamName\", \"AwayTeamName\");\n\n// Updating scores\nscoreboardService.UpdateScores(\"HomeTeamName\", \"AwayTeamName\", 2, 3);\n\n// Finishing a match\nscoreboardService.FinishMatch(\"HomeTeamName\", \"AwayTeamName\");\n\n// Getting summary of matches\nvar summary = scoreboardService.GetSummary();\n\n```\n\n### Assumptions\n\n1. Matches that was finished does not need to be stored.\n2. Only one match of teams with the same name could be ongoing.\n3. No UI for interaction with library is required.\n4. Summary doesn't have to be returned in format provided as example in documentation.\n\n### Potential improvements\n\n#### Data Persistence\n\nDatabase Integration: Transition from an in-memory store to a database to ensure data persistence across system restarts and crashes, which would also support more complex queries and long-term data storage.\n\n#### Domain Driven Design\n\n- Use factory for Match creation and Score update - for now it could break SRP principle\n- Use ValueObjects\n- Add identifier to Match - now they are diffrentiate based on home and away team names\n- Use Events - for better testing\n\n#### Add more abstractions\n\nAbstraction could be added from repository for easier database or other storage implementation\n\n#### Asynchronous operations\n\nI did not add it due to in-memory storage solution was used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpieetrus%2Fscore-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpieetrus%2Fscore-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpieetrus%2Fscore-board/lists"}