ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Games, the On AIR podcast, and physical fabrication work from Anthony's minor: AI, Games & Digitale geletterdheid.
EducationJavaScript · HTMLGitHub @Anthony-AIR-03OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Website for the minor "AI, Games & Digitale geletterdheid": the main layout plus browser games. Live at minor.anthony-air.nl
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Work from my minor, collected on one small site: educational browser games, reports and other pieces.
A plain HTML/CSS/JavaScript site, no framework or build step, for the work I make during the minor
AI, Games & Digitale geletterdheid. Every game is registered in games/games.json; the home page
and the skill tree at /games/ both read it.Read the full README ↗Work from my minor, collected on one small site: educational browser games, reports and other pieces.
🌐 Live site · 🎮 Game skill tree · 💼 Portfolio
A plain HTML/CSS/JavaScript site, no framework or build step, for the work I make during the minor
AI, Games & Digitale geletterdheid. The home page has one track per part of the minor:
Computational thinking (the game skill tree), Internet & multimedia (the ON AIR podcast) and
Digitale fabricatie (things I made with a 3D printer, a laser cutter and micro:bits). The site is in
Dutch, with a light, dark and system theme. Every game is registered in games/games.json; the home
page and the skill tree at /games/ both read it.
/games/ is the heart of the site: eight games on one route, from recognising your
first HTML tag to building a small website on your own. Every game trains one level of Bloom's taxonomy
(remember, understand, apply, analyse, evaluate, create), and passing a game unlocks the next one. After
Build the DOM the route splits: Style Lab and Layout Builder open together, and Bug Hunter waits until
both are passed.
GAME_COMPLETED and GAME_EXIT messages.All eight games are playable: the route runs from recognising your first tag in HTML Hunter to launching your own website in Website Challenge.
All games are in Dutch.
/podcast/ is the Internet & multimedia part of the minor: ON AIR, a Dutch
series about what AI does to us as people. It alternates podcast conversations with a guest and videos where an AI is
the other voice. The series page holds the main question, target audience and story arc;
every worked-out episode has its own page in podcast/aflevering-<n>/ with its question, doelgroep, structure, the
research analysis and the script, plus the filled-in podcast template (episode 1) or the shotlist (episode 2).
The Digitale fabricatie track collects the physical side of the minor. Each piece has its own page in
fabricatie/<name>/ with photos, how it was made and the source files:
.hex
files and the MakeCode program are on the page.Photos live in images/fabricatie/.
Put the game in games/<name>/ with an index.html. When the player passes, the game sends one
message to the page around it:
window.parent.postMessage({ type: "GAME_COMPLETED", gameId, score, maxScore }, location.origin).
Add it to games/games.json (schemaVersion 1, same format as the course's basisskilltree):
{
"id": "build-the-dom",
"title": "Build the DOM",
"learningGoal": "Ontdek hoe HTML-elementen samen de structuur van een webpagina vormen.",
"path": "/games/build-the-dom/",
"requires": [{ "gameId": "html-hunter", "type": "completed" }]
}
id is exactly the gameId the game sends; never rename it.requires: [] opens it at once; {"gameId": "…", "type": "completed"} needs that game passed;
{"gameId": "…", "type": "minPercent", "value": 80} needs at least that percentage. All conditions must hold./games/
and that entry is left out.Give it a place on the route in the GAMES list in games/index.html (Bloom level, key question, position),
and an emblem in games/emblems/<id>.svg.
Give it a share preview: a 1200×630 image in og/<id>.png in the game's own style, plus the favicon links and
the og: and twitter: tags in the head of its index.html (copy them from another game). The Dockerfile
copies og/ into the image.
Players save progress under a made-up player code on /games/: the page opens the game in a dialog,
receives GAME_COMPLETED and stores {pseudonym, gameId, score, maxScore} through api.php, then reads
the progress back. Free play opens every game and saves nothing.
Open index.html through any static file server, for example:
npx serve .
That serves every page and game, and free play works. Saving progress with a player ID needs api.php
and its database, so it only works in the full stack.
In production compose.yml runs the full stack behind a reverse proxy: the site as an nginx:alpine
container (Dockerfile), api.php on PHP-FPM (Dockerfile.php), MariaDB for the progress, and
phpMyAdmin for managing it, reachable only on the local network. The database credentials are kept in
private/, outside git. A push to main deploys automatically with GitHub Actions.
Made by Anthony Inocencio Ramos · anthony-air.nl · LinkedIn