{"id":39493918,"url":"https://github.com/code-dot-org/protolab","last_synced_at":"2026-01-18T05:39:42.083Z","repository":{"id":239894590,"uuid":"798521555","full_name":"code-dot-org/protolab","owner":"code-dot-org","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-16T09:56:02.000Z","size":916,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-16T23:50:05.952Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code-dot-org.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":"2024-05-10T00:18:14.000Z","updated_at":"2024-05-29T22:18:34.409Z","dependencies_parsed_at":"2024-05-29T22:18:28.687Z","dependency_job_id":"0442c7da-20ad-430e-8569-796ae1d63518","html_url":"https://github.com/code-dot-org/protolab","commit_stats":null,"previous_names":["code-dot-org/protolab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/code-dot-org/protolab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-dot-org%2Fprotolab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-dot-org%2Fprotolab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-dot-org%2Fprotolab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-dot-org%2Fprotolab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code-dot-org","download_url":"https://codeload.github.com/code-dot-org/protolab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-dot-org%2Fprotolab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28531190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"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":[],"created_at":"2026-01-18T05:39:42.028Z","updated_at":"2026-01-18T05:39:42.077Z","avatar_url":"https://github.com/code-dot-org.png","language":"TypeScript","readme":"# Protolab\n\nThe idea behind protolab is you fork this repo, and it provides a scaffold for\nhacking together ideas new lab ideas, initially focusing on block-based labs. You can see what an\nempty protolab looks like here: https://code-dot-org.github.io/protolab/.\n\nCurrently:\n- Vite-based for fast builds, rebuilds, and react refresh\n- A backend-less URL you can share with testers\n- Easy pattern to get started with: see [Lab.tsx](./src/Lab.tsx)\n- Relatively simple to add new blocks: see [blocks.ts](./src/blocks.ts)\n- Includes GitHub Actions that publish changes to github.io whenever you push\n- Includes a GitHub codespace, so you can do quick development without a local clone\n- Saves and loads blockly workspaces to localStorage, \n- When testers access your protolab on its github.io address, their sessions are \"screen recorded\" to highlight.io\n\nPlanned:\n- Baked-in patterns for lab output based on: react, canvas, p5 and babylon.js\n- Local download/restore of blockly saves as a .json file, so they can be shared\n\n## Dev\n\n1. yarn install (not required in codespace)\n1. yarn dev\n1. Open: http://localhost:9001\n\n## Forking a new Protolab\n\nLets say you'd like to prototype a new protolab called `newlab`:\n\n1. **Fork Protolab** to your GitHub account\n   1. Open: https://github.com/code-dot-org/protolab, click the Fork button\n   1. Select yourself as the owner, repository name: `newlab`, click Create Fork\n   1. After the fork completes, you'll be taken to your new GitHub repo: https://github.com/username/newlab\n\n1. **Enable GitHub actions**, to automatically build your repo on push\n  ![Enable Github Actions](./docs/img/enable-github-actions.png)\n\n1. **Enable GitHub Pages**, by setting Deployment Source to Github Actions\n  ![Enable Github Pages](./docs/img/enable-github-pages.png)\n\n1. **Create a codespace** or clone locally\n  ![Create Codespace](./docs/img/create-codespace.png)\n\n1. **Make a source change**\n   1. Edit `src/Lab.tsx` and change `LAB_NAME` to `newlab`\n   1. Commit the change, and push it back to your repo\n   1. GitHub Actions will build on push, you can find active builds at: https://github.com/username/newlab/actions\n   1. About 1 minute later, you can **view your changes** on: https://username.github.io/newlab\n\n1. When you're ready to collaborate with others, **Fork Protolab** back to the code-dot-org organization","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-dot-org%2Fprotolab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-dot-org%2Fprotolab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-dot-org%2Fprotolab/lists"}