{"id":25990377,"url":"https://github.com/harshdoesdev/sodacan","last_synced_at":"2026-06-06T11:31:43.281Z","repository":{"id":115536766,"uuid":"505733375","full_name":"harshdoesdev/sodacan","owner":"harshdoesdev","description":"Hypercasual Game Framework","archived":false,"fork":false,"pushed_at":"2022-06-22T06:09:38.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-01-05T05:08:18.312Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harshdoesdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-06-21T07:22:05.000Z","updated_at":"2022-06-21T07:24:25.000Z","dependencies_parsed_at":"2023-07-16T03:47:12.080Z","dependency_job_id":null,"html_url":"https://github.com/harshdoesdev/sodacan","commit_stats":null,"previous_names":["harshdoesdev/sodacan","rare-earth/sodacan"],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshdoesdev%2Fsodacan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshdoesdev%2Fsodacan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshdoesdev%2Fsodacan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshdoesdev%2Fsodacan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harshdoesdev","download_url":"https://codeload.github.com/harshdoesdev/sodacan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242039680,"owners_count":20061925,"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-03-05T13:54:31.680Z","updated_at":"2026-06-06T11:31:43.276Z","avatar_url":"https://github.com/harshdoesdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sodacan\nHypercasual Game Framework\n\n## Installation\n```bash\nnpm i sodacan\n```\n\n## Example\ngame.js\n```javascript\nexport default class Game {\n\n    // called once for initialization\n    init() {\n        this.player = {\n        x: 0,\n        y: 0,\n        width: 50,\n        height: 50\n        };\n\n        console.log('Game Initialized');\n    }\n\n    // called everytime when a key is pressed\n    keyDown(key) {\n        console.log(`Key Pressed: ${key}`);\n    }\n\n    // called everytime when a key is released\n    keyUp(key) {\n        console.log(`Key Released: ${key}`);\n    }\n\n    // called every frame to update the game\n    update(dt) {\n        this.player.x += 50 * dt;\n        this.player.y += 50 * dt;\n    }\n\n    // called every frame to draw the game\n    draw(ctx) {\n        ctx.fillStyle = 'white';\n        ctx.fillRect(this.player.x, this.player.y, this.player.width, this.player.height);\n    }\n\n}\n```\nmain.js\n```javascript\nimport { runGame } from 'sodacan';\nimport Game from './game.js';\n\nconst game = new Game();\n\nconst config = {\n  el: '#app',\n  background: 'black'\n};\n\nrunGame(game, config);\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshdoesdev%2Fsodacan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharshdoesdev%2Fsodacan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshdoesdev%2Fsodacan/lists"}