💡 Tutorial 101
👋 Welcome
### 👋 Welcome! [This is a tutorial block]
🎓 This tutorial is a *light-code* `module` that demonstrates basic **building blocks**, or just `blocks` :
- ✅ Formatted text
- ✅ Basic blocks (image / text / videos)
- ✅ Interactive maps / proxies
- ✅ Data components (forms / grids / charts)
- ✅ Objects encapsulating data / state / behavior / functions
- ✅ Quizzes
Go ahead, explore, play, learn and have fun! 🎉
### 📖 This block is a text [Blocks can display formatted text, hints and help]
A `text` block is a simple block that displays formatted text.
- ✅ Formatted text **bold** / *italic* / colors
- ✅ Item lists
- ✅ Bouquet 🌹🌸💐🌺🌼🌻
- ✅ Text blocks use hints/helps
- ✅ Actually all blocks use hints/helps
Lightcode relies on **nothing** on the server side. It runs **markdown** files with tiny custom kramdown decorations to bring blocks alive.
### 🐕 This text block has an image [Blocks can also show images]
**Man's best friend** 🐶

Cute, huh — this local dog?
### 📖 Doc [This is documentation about dogs]
Docs about dogs can use **bold** and *italic* text
and also be quite long and boring …
> In the haze of a London fog,
> A riff emerges, cutting like a saw.
> Strumming strings and pounding drums,
> Led Zeppelin, their magic comes.
>
> Amid the mist, a black dog roams,
> Guiding the band to rock and roll thrones.
> Not just a pet, but a symbol, a sign,
> Of music that transcends all time.
>
> Amid the crowd, the thunder roars,
> With every note, the spirit soars.
> From stairways high to oceans deep,
> Their legacy forever to keep.
Read more about [markdown](https://www.markdownguide.org/cheat-sheet/).
🎬 Video
### 🎥 Video [Play Lucky's favourite song]
🎵 Man's best song. Go ahead. Play it!
[▶️ Led Zeppelin — Black Dog](https://youtu.be/6tlSx0jkuLM?si=OHbXv8Vp9NKidh9e)
{: .video height="380" }
🔗 Proxies
### 🐕 Proxy [This is a proxy, including content from another module]
This is a `proxy`, including content from another module.
[Lucky](/_dog)
{: .embed }
### 🐕 Proxy too [Just another proxy to the same module]
Just another `proxy`, including content from the same other module.
[Lucky](/_dog)
{: .embed }
🗺️ Map
### 🗺️ Map [This map is interactive — zoom in to spot parks in Paris]
This `map` is interactive. You can zoom in and out to spot parcs in Paris if you want to walk your dog.
```json
[
{ "lat": 48.8620, "lon": 2.2474, "label": "🌳 Bois de Boulogne" },
{ "lat": 48.8797, "lon": 2.3832, "label": "🌳 Buttes-Chaumont" },
{ "lat": 48.8795, "lon": 2.3090, "label": "🌳 Parc Monceau" },
{ "lat": 48.8462, "lon": 2.3372, "label": "🌳 Jardin du Luxembourg" },
{ "lat": 48.8360, "lon": 2.4414, "label": "🌳 Bois de Vincennes" },
{ "lat": 48.8937, "lon": 2.3938, "label": "🌳 Parc de la Villette" }
]
```
{: .map height="340" zoom="12" }
📊 Dataset, Grid & Chart
One dataset, declared once — the grid is its editable list view, the chart
shows whichever row you select. Data flows dataset → grid → chart
(Shift + Alt-hover any of them to see the pipes).
### 🐕 Grid [Editable — click a cell to change a value, then watch the chart]
Select a row to update the chart → edit a number to refresh it.
```csv
breed,top_speed_kmh,cute
Greyhound,72,70
Saluki,68,72
Vizsla,64,78
Jack Russell,56,85
Border Collie,48,82
German Shepherd,48,80
Labrador,40,92
Beagle,40,88
Corgi,35,95
Pug,15,98
Bulldog,14,90
```
{: .dataset #dog_data }
```csv
```
{: .datagrid bind="dog_data" #dog_grid_tuto title="Dog top speeds & cuteness" height="280" editable="true" }
### 📊 Chart [Updates live when you select or edit a row]
Updates when you select a row in the grid ← edit a value and it refreshes.
[Selected dog](#)
{: .chart type="bar" bound-to="dog_grid_tuto" x="breed" height="280" }
📋 Forms
### 🐕 Lucky [Editable — change any field, it's a live object]
```yaml
name: Lucky
age: 3
breed: Labrador Retriever
colour: Black
weight_kg: 28
top_speed_kmh: 40
adopted: true
favorite_toys:
- tennis ball
- squeaky bone
- old sock
vet:
name: Dr. Patel
phone: "555-0142"
notes: Afraid of vacuum cleaners. Excellent at looking innocent.
```
{: .form editable="true" }
### 🐠 Wanda [Editable — Wanda is a fish, not a dog!]
```yaml
name: Wanda
age: 2
breed: Goldfish
colour: Orange
weight_kg: 0.03
top_speed_kmh: 6
adopted: false
favorite_toys:
- plastic castle
- bubble ring
- flake food
vet:
name: Dr. Patel
phone: "555-0142"
notes: A fish, not a dog! Best friends with Lucky through the bowl glass.
```
{: .form editable="true" }
🎲 Quiz
### 🎲 Your first riddle: Lucky & Wanda
**Q:** What is Lucky's breed?
- [ ] Beagle
- [ ] German Shepherd
- [x] Labrador Retriever
- [ ] Golden Retriever
{: .quiz }
**Q:** According to the grid, which dog runs the fastest?
- [x] Greyhound — 72 km/h
- [ ] Saluki — 68 km/h
- [ ] Border Collie — 48 km/h
- [ ] Labrador — 40 km/h
{: .quiz }
**Q:** Which Paris park is the largest?
- [ ] Parc Monceau
- [ ] Buttes-Chaumont
- [x] Bois de Boulogne — over 800 hectares
- [ ] Jardin du Luxembourg
{: .quiz }
**Q:** Wanda is not a dog. What kind of animal is she?
- [ ] A dog, just like Lucky
- [ ] A cat
- [x] A fish 🐠
- [ ] A bird
{: .quiz }
### ⚙️ Build your own page
Fork the repo and start adding blocks in minutes.
[Start building →](/tutorial102)
### 🧩 Component library
Every block, with live examples and full documentation.
[Browse →](/components/)
### 🏠 Back to home
[Home →](/)