Example · all examples

Family vacation

This Roadbook represents a four-day family trip to Normandy: two adults, a teenager and a seven-year-old in surprise mode (future days hidden for her), a rented gîte with rooms and their occupants, real-looking tickets (QR and Code 128 payloads, per-traveler memberId, timed slots), wind and rain alternatives, a day-level plan B, outfit hints and a packing checklist.

file family-vacation.roadbook.json format 1.2 days 4 items 14 bookings 5 validates ✓ schema + reference validator

⤓ Download family-vacation.roadbook.json View raw JSON Validate Preview

What this example shows#

It shows how a leisure trip with kids uses the traveler model: surpriseMode: "day" on a child member, dietary on an adult, memberIds on an item that concerns everyone explicitly, and a deposit payment on the stay. Ticket payloads here are obviously fictional (…EXAMPLE) — in a real file they are the exact string encoded in the barcode.

Features demonstrated#

Manifest tags: children surpriseMode rooms tickets qr code128 memberId alternatives wind planB outfit checklist dietary — see examples/index.json.

Excerpt#

Abridged — the full file is the reference.

{
  "members": [
    {
      "id": "m3",
      "name": "Noa",
      "role": "viewer",
      "kind": "teen",
      "age": 14
    },
    {
      "id": "m4",
      "name": "Lila",
      "role": "viewer",
      "kind": "child",
      "age": 7,
      "surpriseMode": "day"
    }
  ],
  "bookings": [
    {
      "id": "b-gite",
      "type": "stay",
      "status": "confirmed",
      "title": "Gîte du Bessin",
      "dates": "3 nights, Apr 10–13",
      "checkin": "17:00",
      "checkout": "10:00",
      "breakfastIncluded": false,
      "rooms": [
        {
          "label": "Parents",
          "memberIds": [
            "m1",
            "m2"
          ]
        },
        {
          "label": "Kids",
          "memberIds": [
            "m3",
            "m4"
          ]
        }
      ],
      "address": "Route d'Arromanches, Bayeux",
      "instructions": "Key box next to the blue door — code sent by SMS the day before.",
      "price": 420,
      "payment": {
        "status": "deposit",
        "deposit": 120,
        "note": "Balance in cash on arrival"
      },
      "refs": [
        {
          "label": "Booking",
          "value": "GITE-EXAMPLE-42",
          "sensitive": true
        }
      ]
    },
    {
      "id": "b-abbey",
      "type": "activity",
      "status": "confirmed",
      "title": "Abbey of Mont-Saint-Michel — timed entry",
      "price": 26,
      "tickets": [
        {
          "id": "t2",
          "label": "Adult",
          "code": "ABB-1001",
          "memberId": "m1",
          "payload": "ABB1001EXAMPLE",
          "format": "code128",
          "date": "2027-04-12",
          "time": "10:30"
        },
        {
          "id": "t3",
          "label": "Adult",
          "code": "ABB-1002",
          "memberId": "m2",
          "payload": "ABB1002EXAMPLE",
          "format": "code128",
          "date": "2027-04-12",
          "time": "10:30"
        }
      ]
    }
  ]
}

Use it#