ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Youth-led environmental education connecting climate, nature and all 17 Sustainable Development Goals.
Translation pending
EducationJavaScript · CSSGitHub @fundor-coderOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
A bilingual, youth-led environmental information platform for students with an interactive mission lab, graphical impact cockpit, topic explorers, global map models, a quiz, structured article data, an article-based CYRI assistant, a protected publishing backend and responsive Apple-inspired styling. CYRI publishes educational content and does not conduct original research.
Run npm start and open http://localhost:5173/ to view the site with the backend enabled.Read the full README ↗A bilingual, youth-led environmental information platform for students with an interactive mission lab, graphical impact cockpit, topic explorers, global map models, a quiz, structured article data, an article-based CYRI assistant, a protected publishing backend and responsive Apple-inspired styling. CYRI publishes educational content and does not conduct original research.
Run npm start and open http://localhost:5173/ to view the site with the backend enabled.
The site is deployed as a Cloudflare Worker with static assets; see CLOUDFLARE.md for deployment, secrets and the storage differences from the self-hosted backends.
Funding notice:
Student info experience:
Explore page puts interactive missions, models and environmental facts before passive reading.Explore page instead of appearing as a separate navigation item.content/articles.json; the ten-topic 2026 expansion is in
content/articles-2026-expansion.json.Backend routes:
GET backend.php?route=/articles returns published articles from data/articles.json.POST backend.php?route=/auth/publish checks the publish password and returns a temporary session token.POST backend.php?route=/translate translates German article fields into English with OpenAI.POST backend.php?route=/research answers questions using published CYRI articles as the only content basis.POST backend.php?route=/uploads stores an optimized custom article photo in data/uploads.POST backend.php?route=/articles stores a new article immediately or with a future publishAt time./api/... paths also work on Node and through the root Apache rewrite.Deployment:
npm start, and point the domain to the Node app. Set CYRI_DATA_DIR to a persistent server directory when the host uses ephemeral deployments.backend.php. Make sure the data folder is writable; runtime JSON files are created automatically. CYRI_DATA_DIR can point to storage outside the deployment folder.Private-file protection:
assets/, the two public article corpora and
generated public article routes.404 response..htaccess. The Docker build context excludes
private documents, local environment files, internal notes, tests and funding-application files.Google search setup:
/de/lernen,
/en/learn and one URL per published article. Legacy hash links are upgraded in the browser.https://cyri.online/sitemap.xml includes every public language route and every currently
published article. Submit this URL in Google Search Console after deployment.cyri.online domain property in Search Console and request indexing for the home,
learning and article overview pages after major content updates. Keep publishing useful,
sourced environmental education content; technical metadata alone cannot guarantee rankings.Scheduled publishing:
Schedule for later in the protected publishing editor and choose a local date and time.AI translation:
OPENAI_API_KEY in the server environment. Never put the key in app.js, index.html or Git.gpt-5.4-mini. Override it with OPENAI_TRANSLATION_MODEL if needed.Contact:
[email protected], shown on the
About page and in the footer, so no message data is processed by the site at all.CYRI assistant:
OPENAI_API_KEY in the server environment. The key stays in the Node or PHP backend and is never sent to visitors.gpt-5.4-mini. Override it with OPENAI_RESEARCH_MODEL if needed.Docker / Node server:
docker build -t cyri-website ..docker run -d --name cyri -p 5173:5173 -v cyri-data:/app/data --env-file .env cyri-website.CYRI_PUBLISH_PASSWORD or a SHA-256 CYRI_PUBLISH_PASSWORD_HASH is configured. Never commit the production secret.docker compose up -d --build; compose.yaml automatically mounts the named cyri-data volume.http://localhost:5173/. Published articles and uploaded photos are stored in the cyri-data volume.cyri-data volume during updates. docker compose down keeps it; docker compose down -v deletes it.Persistent storage:
articles.json; uploaded photos are stored in uploads..bak file.For production, set CYRI_PUBLISH_PASSWORD or CYRI_PUBLISH_PASSWORD_HASH in the server environment. Publishing is disabled when neither value is configured.
Third-party frontend code:
0.185.1 is vendored in assets/vendor/three under the MIT License. The original license text is included beside the module.SDG icon assets:
assets/sdg/ are official United Nations communications materials
sourced from sdgs.un.org/goals.Photo sources:
assets/photos/sponge-city-rain-garden-hd.jpg: Jeremy Jeziorski / Oregon Convention Center via Wikimedia Commons, CC BY 2.0; resized for web delivery.assets/photos/seagrass-meadow-zostera-hd.jpg: Olivier Dugornay / Ifremer via Wikimedia Commons, CC BY 4.0; resized for web delivery.assets/photos/coral-bleaching-florida-2023-hd.jpg: Dan Eidsmoe / Symbiosis via Wikimedia Commons, CC BY 2.0; resized for web delivery.assets/photos/coral-reef-bleaching-hd.jpg: Jay Galvin via Wikimedia Commons, CC BY 2.0.assets/photos/ocean-plastic-hd.jpg: Kevin Krejci via Wikimedia Commons, CC BY 2.0.assets/photos/mangrove-forest-hd.jpg: Emonjnu via Wikimedia Commons, CC BY-SA 4.0.assets/photos/aletsch-glacier-hd.jpg: Gzzz via Wikimedia Commons, CC BY-SA 4.0.assets/photos/offshore-wind-hd.jpg: U.S. Department of Energy via Wikimedia Commons, public domain.