An interactive tutorial platform designed to help high school students and teachers learn IoT concepts through hands-on projects, code exploration, and engaging media.
Layer | Technology |
---|---|
Frontend Framework | Svelte |
Build Tool | Vite |
Markdown Parsing | markdown-it |
Code Editor | CodeMirror 6 |
Hosting | GitHub Pages |
/public
ββ fonts/
ββ tutorials/
β ββ example.md
ββ Images
/src
ββ components/
β ββ Subcomponents/
| | ββ Themeswitch.svelte
| ββ TutorialContainer.svelte
β ββ Header.svelte
ββ lib/
| ββ store.svelte.js
β ββ markdownParser.ts
ββ App.svelte
ββ App.css
ββ main.js
npm install
npm run dev
Visit http://localhost:5173
in your browser.
Each tutorial is written as a Markdown file inside /public/tutorials/
. It supports:
---
title: "Blink an LED with ESP32"
level: Beginner
estimated_time: 20 minutes
---
# Step 1: Connect the LED
:::left
Connect the LED to pin D2 of the ESP32 board. Use a 220-ohm resistor in series.
:::
:::right
::media
image: /images/led_connection.jpg
::
:::
---
# Step 2: Upload the Code
:::left
Use this Arduino code:
```cpp
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
}
:::
:::right ::media code :: :::
---
### π‘ Tags Reference
- `:::left` β Places content in the left pane
- `:::right` β Places content in the right pane (e.g., image, video, code runner)
- `::media` blocks inside `:::right` control how media is rendered
#### Example `::media` blocks:
```md
::media
image: /images/sensor_setup.jpg
::
::media
video: https://www.youtube.com/embed/abc123
::
::media
code
::
We use a tag-based deploy system to publish the latest version to GitHub Pages.
dist/
is already built and committed in your main
branchnpm install
npm run build
git add dist
git commit -m "Build: update dist for deploy"
git tag v1.0.0 # Use semantic versioning
git push origin v1.0.0
This triggers a GitHub Action that copies
/dist
to thegh-pages
branch and adds.nojekyll
prefers-color-scheme
support..md
files.::media
block handling:::left
and :::right
support for two-pane tutorial renderingprefers-color-scheme
detectiongit checkout -b feature/my-feature
)In Consideration to make it openSource!
Letβs make IoT education hands-on, accessible, and fun!