{"id":34808295,"url":"https://github.com/elgopher/piweb","last_synced_at":"2025-12-25T12:11:23.558Z","repository":{"id":307786146,"uuid":"1030426864","full_name":"elgopher/piweb","owner":"elgopher","description":"Modern Pi backend for the web","archived":false,"fork":false,"pushed_at":"2025-10-05T11:48:40.000Z","size":58,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-14T10:17:54.013Z","etag":null,"topics":["pi"],"latest_commit_sha":null,"homepage":"","language":"Go","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/elgopher.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-01T16:08:55.000Z","updated_at":"2025-09-30T18:13:08.000Z","dependencies_parsed_at":"2025-08-02T09:00:32.770Z","dependency_job_id":null,"html_url":"https://github.com/elgopher/piweb","commit_stats":null,"previous_names":["elgopher/piweb"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/elgopher/piweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgopher%2Fpiweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgopher%2Fpiweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgopher%2Fpiweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgopher%2Fpiweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elgopher","download_url":"https://codeload.github.com/elgopher/piweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgopher%2Fpiweb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28028986,"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-12-25T02:00:05.988Z","response_time":58,"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":["pi"],"created_at":"2025-12-25T12:11:22.122Z","updated_at":"2025-12-25T12:11:23.548Z","avatar_url":"https://github.com/elgopher.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# piweb\n\n**Pi backend for web browsers.**\n\nA replacement for [piebiten](https://github.com/elgopher/pi/tree/master/piebiten) and [Ebitengine](https://ebitengine.org/).\n\n[![Play the Snake game in the browser](docs/screenshot-snake.png)](https://elgopher.itch.io/snake)\n\n---\n\n## 🎯 Project Goals\n\nThe aim of this project is to create a new backend for [Pi](https://github.com/elgopher/pi) games that runs efficiently in modern web browsers and offers significant improvements over the standard [piebiten](https://github.com/elgopher/pi/tree/master/piebiten) backend:\n\n### 📦 Smaller Binary Size\n\n* At least **2× smaller** `.wasm` output\n\n### 🔊 Better Audio\n\n* **Minimal latency** — as low as **20 ms** (compared to 60 ms in piebiten)\n* **Glitch-free playback** — thanks to audio processing in a high-priority, separate audio thread\n\n---\n\n## 🧪 How It Works\n\nThese improvements are possible thanks to:\n\n* **Audio Worklet API** – the browser-native API for real-time, low-latency audio processing\n* **SharedArrayBuffer** - a high-performance way to exchange data between the main thread and audio processor in the browser.\n* Writing the code directly in **JavaScript**\n* Reducing the number of dependencies\n\n---\n\n## 🚧 Status\n\nThe project is ready to use. Most features are ready. Some platforms are not supported yet though:\n\n* [x] graphics rendering using Canvas2D\n* [x] keyboard support\n* [x] gamepad support\n* [x] mouse support\n* [x] debug mode support\n* [x] desktop web browsers - Chrome, Firefox, Edge, Safari etc.\n* [ ] mobile web browsers - virtual keyboard and gamepad support\n* [x] audio support \n* [x] 3x smaller WASM binary - Snake game is 3 MB (0.9 MB after gzip) instead of 10 MB\n* [x] customizable template - developer can change all static files - HTML, CSS, JS etc.\n* [x] works on itch.io and newgrounds.com\n* [x] embedded HTTP server for rapid development\n* [x] ability to release ZIP file \n  * [x] with embedded HTTP server\n  * [ ] with CLI\n* [ ] documentation\n* [ ] automated tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgopher%2Fpiweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felgopher%2Fpiweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgopher%2Fpiweb/lists"}