{"id":19362438,"url":"https://github.com/steciuk/card-game","last_synced_at":"2025-12-30T21:07:33.088Z","repository":{"id":78909761,"uuid":"399928014","full_name":"steciuk/card-game","owner":"steciuk","description":"Bachelor's degree thesis project in Computer Science at Warsaw University of Technology","archived":false,"fork":false,"pushed_at":"2024-05-21T21:41:02.000Z","size":9315,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T12:54:09.924Z","etag":null,"topics":["angular","cardgame","express","jwt","mongodb","multiplayer-browser-game","spa","websocket"],"latest_commit_sha":null,"homepage":"https://cardgame.steciuk.dev/","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/steciuk.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":"2021-08-25T19:00:02.000Z","updated_at":"2024-05-21T21:42:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"da906001-b354-4d8f-a8bf-cacd85a515c9","html_url":"https://github.com/steciuk/card-game","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/steciuk/card-game","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steciuk%2Fcard-game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steciuk%2Fcard-game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steciuk%2Fcard-game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steciuk%2Fcard-game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steciuk","download_url":"https://codeload.github.com/steciuk/card-game/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steciuk%2Fcard-game/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281356565,"owners_count":26487173,"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-10-27T02:00:05.855Z","response_time":61,"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":["angular","cardgame","express","jwt","mongodb","multiplayer-browser-game","spa","websocket"],"created_at":"2024-11-10T07:28:20.965Z","updated_at":"2025-10-27T23:13:47.594Z","avatar_url":"https://github.com/steciuk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multiplayer card game in a web browser\n\nThis project was created as a bachelor's degree thesis in Computer Science (Computer Information System Engineering) at Warsaw University of Technology.\n\nDeployed application available at [CardGame](https://cardgame.steciuk.dev/).\n\n⚠️ **The backend of this app is currently taking a well-deserved nap, courtesy of Heroku's new pricing. Maybe one day, when I find some time and a free hosting alternative, I will revive it. Until then, the app is not functional.** ⚠️\n\n## Structure of the repository\n\nFrontend is located in the [client](client) directory.\n\nBackend is located in the [server](server) directory.\n\n## How to run\n\nInstall [Node.js](https://nodejs.org/en/).\n\nCheck respective READMEs:\n\n-   [Frontend](client/README.md)\n-   [Backend](server/README.md)\n\n## Thesis abstract\n\nThe paper presents the vision, design, and implementation of a website that allows users to play multiplayer card games directly in a web browser. The application features registering and logging in to the website while maintaining modern security standards. User sessions are maintained using JSON Web Token. Users can create new game rooms (public and password-protected) and join existing ones with ease. The website is legible, visually appealing, and designed with a modern approach to reacting to interactions with the user in mind. The frontend part of the project, thanks to the single-page application of the Angular framework, maintains the latest standards of efficiency and responsiveness. Consistency of the game state was ensured using WebSocket technology, whereas data persistence was preserved using the non-relational MongoDB database. The backend server was created utilizing the Express framework and runs in the Node.js runtime environment.\n\nThe application's source code uses mainly HTML, CSS, and the TypeScript programming language.\n\nAlso discussed in the paper are the technologies used in the implementation of the application, as well as design patterns, which allow the project to be easily scalable and developed in the future.\n\nThe finished solution has been publicly deployed to the Internet using services such as Firebase and Heroku.\n\nKeywords: Angular, website, TypeScript, HTML, CSS, SPA, JWT, multiplayer card game, Express, Node.js, WebSocket, MongoDB, Firebase, Heroku.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteciuk%2Fcard-game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteciuk%2Fcard-game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteciuk%2Fcard-game/lists"}