This repository holds 36 independent projects, one per
project/<name> git branch. Every push to any project branch (or to
master) rebuilds a static portal and publishes it to GitHub Pages —
no server, no tokens, nothing to install.
➡️ https://emircanerkul.github.io/other/ — the portal. One card per project:
- 🌐 Open site — static projects, served as-is
- 🐘 Run in browser — PHP projects execute fully client-side via WebAssembly PHP (php-wasm). No backend anywhere; even the Symfony API Platform app runs, including JWT login and its SQLite database.
- 🦀 Run in browser — Rust learning examples compiled to
wasm32-unknown-emscripten, each runnable individually in the Rust Playground. - GitHub ↗ — every card links the project's source branch.
master— portal tooling.scratch/aggregate.mjsreadsscratch/sites.json(the project registry), extracts everyproject/*branch, builds static sites / wasm playgrounds / the PHP playground bundle, and publishes the result.project/<name>— one branch per project, each with its own.github/workflows/relay-sync.ymlthat calls the shared aggregate workflow onmaster.- Deploys land on the
gh-pagesbranch; GitHub Pages serves it. - A packed PHP app (like the weather API) ships its
vendor/tree and seeded SQLite database as a single zip the browser runtime extracts on first use — lazy-loaded and cached by the service worker.
npm install
node scratch/aggregate.mjs --with-builds --with-php # full bundle → sites/
npx serve sites # or any static serverRust example builds additionally need rustup target add wasm32-unknown-emscripten + the emsdk toolchain.
If you are an LLM/agent working in this repository, read this first:
- Source code lives on the
toolingbranch — switch there before editing anything:git checkout tooling. Themasterbranch you are looking at contains ONLY the generated bundle and is overwritten by every deploy; never commit source changes here. - Skill to use:
.skills/add-project-branch/SKILL.mdon thetoolingbranch — follow it when adding a new project branch or changing the portal registry. - After editing on
tooling, push it: CI rebuilds and re-deploys this bundle tomasterautomatically. Do not edit generated files onmasterby hand.
Generated by scratch/aggregate.mjs — do not edit this file by hand; it is regenerated on every deploy.