{"id":16194682,"url":"https://github.com/valentin-laurent/collaborative-2048","last_synced_at":"2026-04-27T20:32:40.516Z","repository":{"id":141327270,"uuid":"368456195","full_name":"Valentin-Laurent/collaborative-2048","owner":"Valentin-Laurent","description":"POC of a collaborative 2048 online game","archived":false,"fork":false,"pushed_at":"2024-03-10T22:55:58.000Z","size":16649,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T15:53:43.441Z","etag":null,"topics":["2048","game","heroku","python","streamlit"],"latest_commit_sha":null,"homepage":"","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/Valentin-Laurent.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-05-18T08:28:30.000Z","updated_at":"2022-04-22T13:46:48.000Z","dependencies_parsed_at":"2024-03-10T23:46:58.533Z","dependency_job_id":null,"html_url":"https://github.com/Valentin-Laurent/collaborative-2048","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Valentin-Laurent/collaborative-2048","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valentin-Laurent%2Fcollaborative-2048","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valentin-Laurent%2Fcollaborative-2048/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valentin-Laurent%2Fcollaborative-2048/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valentin-Laurent%2Fcollaborative-2048/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Valentin-Laurent","download_url":"https://codeload.github.com/Valentin-Laurent/collaborative-2048/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valentin-Laurent%2Fcollaborative-2048/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32354567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["2048","game","heroku","python","streamlit"],"created_at":"2024-10-10T08:24:27.337Z","updated_at":"2026-04-27T20:32:40.500Z","avatar_url":"https://github.com/Valentin-Laurent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\nPOC of an online collaborative 2048 (original game available [here](https://play.google.com/store/apps/details?id=com.ketchapp.play2048\u0026hl=en_US\u0026gl=US)), using Streamlit and Pandas for the graphical rendering, and pure Python for the game engine.\n\nThe result is available [here](https://share.streamlit.io/valentin-laurent/Collaborative-2048/app.py) on Streamlit Cloud. A GitHub workflow is supposed to ping the app every day to keep it up and running, but it doesn't work.\n\nThis package also contains the required config files to deploy the game on Heroku.\n\n# About the code\nI used a hack for the Streamlit part, but I suspect that a much cleaner approach is now possible thanks to Streamlit *Session State* (`app.py` was implemented before its release). This [Streamlit reference repo](https://github.com/gmanchon/streamlit) provides an example [here](https://wagon-data-streamlit.herokuapp.com) of the use of *Session State*.\n\nThe Python game engine is a pretty naive implementation, and was not designed to be computationally efficient. I would now approach this in a quite different way.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalentin-laurent%2Fcollaborative-2048","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalentin-laurent%2Fcollaborative-2048","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalentin-laurent%2Fcollaborative-2048/lists"}