{"id":25044991,"url":"https://github.com/ihasq/weblocal","last_synced_at":"2026-02-19T16:02:33.203Z","repository":{"id":275701447,"uuid":"926616714","full_name":"ihasq/weblocal","owner":"ihasq","description":"Instant, Isolated Localhost Environment in your web","archived":false,"fork":false,"pushed_at":"2025-08-29T10:50:29.000Z","size":171,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-13T13:17:53.881Z","etag":null,"topics":["codesandbox","glitch","stackblitz"],"latest_commit_sha":null,"homepage":"https://weblocal.dev","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/ihasq.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-02-03T15:17:56.000Z","updated_at":"2025-11-21T03:37:30.000Z","dependencies_parsed_at":"2025-03-09T09:19:10.005Z","dependency_job_id":"eada832e-1f84-475e-ab5d-890df1cf80a0","html_url":"https://github.com/ihasq/weblocal","commit_stats":null,"previous_names":["ihasq/weblocal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ihasq/weblocal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihasq%2Fweblocal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihasq%2Fweblocal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihasq%2Fweblocal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihasq%2Fweblocal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ihasq","download_url":"https://codeload.github.com/ihasq/weblocal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihasq%2Fweblocal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29621899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["codesandbox","glitch","stackblitz"],"created_at":"2025-02-06T05:30:10.833Z","updated_at":"2026-02-19T16:02:33.198Z","avatar_url":"https://github.com/ihasq.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [🔌 WebLocal](https://weblocal.dev) - Instant, Isolated localhost environment in your web\n\n### [About](#about) | [Example](#example) | [Motivation](#motivation)\n\n## About\n\nOpen source implemention of StackBlitz and CodeSandBox's ServiceWorker-based loopback emulator (iframe only).\n\n## Example\n\n**[Simple web server](#simple-web-server)** | **[Hono in browser](#hono-in-browser)**\n### Simple web server\n```javascript\n// From Client JavaScript!\n\nimport { serve } from \"weblocal\";\n\nconst server = await serve(() =\u003e new Response(\"\u003ch1\u003eHello!\u003c/h1\u003e\", { headers: { \"Content-Type\": \"text/html\" } }));\n\npreviewFrame.src = server.url // directly put into in-context iframe\n```\n\n### Hono in browser\n```javascript\nimport { Hono } from \"hono\";\nimport { serve } from \"weblocal\";\n\nconst app = new Hono();\n\napp.get(\"/\", c =\u003e c.text(\"Hello Hono!\"));\n\nconst server = await serve(app.fetch);\n```\n\n## Usage\n```sh\nnpm i weblocal\n```\n\n## Motivation\nDevelopers have long used object URLs and data URLs to display user-defined documentation in serverless environments.\nThis is the basic technique used by major technical sites such as MDN to display example implementations and has been used in all demos for a long time.\nUnfortunately, however, this technique does not allow the use of HTTPS-specific APIs, making it impossible to demonstrate the most advanced web technologies (WebGPU, IndexedDB, HTTP/3, etc.).\n\nTo run user-defined documents in an HTTPS environment, leading online IDEs StackBlitz and CodeSandBox have incorporated a “bypass” system into their own services using ServiceWorker and MessageChannel.\nThis technique is memory efficient and has less overhead than using Object URLs. Despite its convenience, due to the competitive nature of the online IDE market, companies are keeping their sources private.\n\nSo, as an individual web developer, I reinvented the wheel as an open source low-level implementation, using CloudFlare's stunning CDN and edge computing system.\n\n## License\n\nWebLocal is [MIT licensed](./LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihasq%2Fweblocal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fihasq%2Fweblocal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihasq%2Fweblocal/lists"}