{
  "kind": "free-shelf-feed",
  "version": "0.2",
  "spec": "see PROTOCOL.md",
  "updated": "2026-09-25",
  "owner": {
    "name": "Yann Hoffmann",
    "location": { "text": "Limpertsberg, Luxembourg", "lat": 49.6227272, "lon": 6.1227265, "radius_km": 5 },
    "contact": "mailto:yann.hoffmaaann@gmail.com",
    "site": "https://yannhoffmann.com",
    "fediverse": "@yann@mastodon.lu"
  },
  "categories": [
    { "id": "plants",      "label": "🌱 Plants & cuttings",       "policy": "Free. Take a cutting." },
    { "id": "fabrication", "label": "🖨️ 3D prints & fabrication",  "policy": "You pay the filament — about €20/kg. Nothing else." },
    { "id": "kits",        "label": "🥬 Grow-your-own kits",       "policy": "Parts at cost." },
    { "id": "electronics", "label": "🎸 Electronics",             "policy": "Parts at cost. Cheaper as a group order." },
    { "id": "tools",       "label": "🧰 Tools",                    "policy": "Loan. Borrow it, bring it back." },
    { "id": "compute",     "label": "🖥️ Compute",                  "policy": "Pay the electricity. User-first, and no crypto mining." },
    { "id": "lessons",     "label": "🎓 Lessons",                  "policy": "Costs you time, not money." },
    { "id": "bits",        "label": "📂 Software & designs",       "policy": "Free download." }
  ],
  "items": [
    {
      "id": "spider-plant", "category": "plants", "type": "plant", "price": "Free", "status": "available",
      "title": "Spider-plant babies", "emoji": "🕷️🌿",
      "images": ["assets/plant-spider.jpg"],
      "tagline": "Rooted plantlets, endlessly self-replenishing.",
      "desc": "My spider plant (Chlorophytum comosum) throws off more plantlets than I could ever pot. They're near-unkillable, purify air, and love neglect — a perfect first plant for someone. Take a rooted baby or a whole runner of them.",
      "specs": [["Type", "Live plant / cutting"], ["Care", "Very easy"], ["Light", "Anything but full dark"], ["Supply", "Basically infinite"]],
      "claim": "Claim a baby"
    },
    {
      "id": "herb-seedlings", "category": "plants", "type": "plant", "price": "Free", "status": "available",
      "title": "Hydroponic herb seedlings", "emoji": "🌿",
      "images": ["assets/basil-cutting.jpg"],
      "tagline": "Cress, basil, chives — starts from the indoor garden.",
      "desc": "I run an indoor hydroponic garden (basil, chives, cress, dill, parsley, coriander). Germination always overshoots, so there are spare seedlings and sponge-starts going free. Say what you'd like to grow and I'll set some aside.",
      "specs": [["Type", "Live seedlings"], ["Varieties", "Basil · cress · chives · dill"], ["Format", "Sponge start or potted"], ["Season", "Whenever it's growing"]],
      "claim": "Ask for a start"
    },
    {
      "id": "print-anything", "category": "fabrication", "type": "service", "price": "€20/kg (filament)", "status": "available",
      "title": "Anything off my 3D printer", "emoji": "🖨️",
      "images": ["assets/printer-artillery.jpg"],
      "tagline": "My printer sits idle half the time — put it to work.",
      "desc": "I've got an Artillery Sidewinder X2 that's idle more often than not. Got something you want printed — a bracket, a replacement part, a little gift, something you found on Printables? Send me the STL (or just describe it) and I'll print it and hand it over. You pay for the plastic, nothing else.",
      "specs": [["Printer", "Artillery Sidewinder X2"], ["Build vol", "~300×300×400mm"], ["Materials", "PLA · PETG"], ["Bring", "An STL or an idea"]],
      "claim": "Send me something to print"
    },
    {
      "id": "shelf-connectors", "category": "fabrication", "type": "design", "price": "€20/kg + €0.20/rod", "status": "available",
      "title": "Modular rod-connector set", "emoji": "🧩",
      "images": ["assets/connectors-batch.png", "assets/connectors-L.png", "assets/connectors-T.png"],
      "tagline": "3D-printed joints that turn bamboo rods into shelves & frames.",
      "desc": "A family of press-fit connectors — L-joints, T-passes, clamps, ball joints, feet — that wedge onto 7.5mm bamboo rods to build shelving and frames. The tapered-socket trick I worked out absorbs print tolerance, so fit is reliable (~95%+ vs a coin-flip with straight bores). Tell me your rod size and what you want to build; I'll print a set.",
      "specs": [["Rod Ø", "7.5mm (tunable)"], ["Types", "L · T · clamp · ball · foot"], ["Fit", "Tapered press-fit"], ["Material", "PETG / PLA"]],
      "claim": "Ask me to make a set",
      "note": "Or grab the source files under Software & designs and print your own — then it's just filament."
    },
    {
      "id": "hydro-stand", "category": "fabrication", "type": "design", "price": "€20/kg + €0.20/rod", "status": "available",
      "title": "Plant stand — object #1", "emoji": "🪵",
      "images": ["assets/object-hydro-stand.jpg"],
      "tagline": "One thing the connector grammar can build.",
      "desc": "A little stand I made from the rod connectors and wooden dowels — I use it to park my hydroponic plants somewhere while I change the water. Really it's an example: the connector set is a grammar, so what you can build with it is basically infinite. This is object #1. Tell me what shape you need and we can work it out together.",
      "specs": [["Built from", "Dowels + printed joints"], ["Use", "Parking plants / small shelf"], ["One of", "∞ possible builds"], ["Custom", "Design your own shape"]],
      "claim": "Ask about a build"
    },
    {
      "id": "kratky-lettuce-kit", "category": "kits", "type": "kit", "price": "€15 vase + filament", "status": "available",
      "title": "Kratky lettuce kit", "emoji": "🥬",
      "images": ["assets/kratky-lettuce.jpg"],
      "tagline": "A whole head of lettuce on your windowsill — no pump, no soil.",
      "desc": "A complete passive-hydroponic (Kratky) kit: a vase, a lid I print to fit it, a net-basket sponge, and a pinch of lettuce seeds. Drop the seed in, fill once with water + nutrient, and walk away — the plant drinks the level down as it grows. A few weeks later you're cutting a full head of leaf lettuce straight off the windowsill. Zero pumps, zero electricity, near-zero effort.",
      "specs": [["Includes", "Vase · printed lid · sponge · seeds"], ["Method", "Passive Kratky (no pump)"], ["Grows", "Leaf lettuce (~4–6 wks)"], ["Upkeep", "Fill once, then harvest"]],
      "claim": "Ask for a kit",
      "note": "The vase is a cheap Hornbach buy — that's the only real cost.",
      "tiers": [
        "🎁 The full kit — vase, printed lid, sponge and seeds, ready to fill",
        "🖨️ Middle ground — I print the lid, you grab the vase (I'll point you to the right one at Hornbach)",
        "📂 Just the files — the lid STL plus a shopping list; source and print it all yourself"
      ]
    },
    {
      "id": "guitar-led", "category": "electronics", "type": "electronics", "price": "Group buy — cheaper together", "status": "available",
      "title": "Classical-guitar LED trainer", "emoji": "🎸",
      "images": ["assets/guitar-real.jpg", "assets/guitar-pcb-top.png", "assets/guitar-flex-layout.png"],
      "tagline": "A flex-PCB fretboard of 114 RGB LEDs to learn faster.",
      "desc": "A custom-fit flexible PCB carrying 114 addressable RGB LEDs — one per fret position across all 6 strings × 19 frets — that lays over your fretboard and lights up where your fingers should go (that's the real board on my own guitar in the first photo). Parametrically generated, so I size it to your exact guitar geometry. Great for drilling scales, chords and pieces with real-time visual feedback.",
      "specs": [["LEDs", "114 × WS2812B-2020"], ["Layout", "6 strings × 19 frets"], ["Scale length", "Fit to yours (~650mm)"], ["Build", "Custom flex PCB + mount"]],
      "claim": "Ask me to make one",
      "note": "PCB fab has fixed setup costs that split across a batch — so the more of us order together, the cheaper each board. Group buys welcome.",
      "tiers": [
        "🎁 The finished trainer — flex PCB built and fitted to your guitar",
        "📂 Just the design — KiCad source, gerbers and the parametric generator, so you can order and build your own"
      ]
    },
    {
      "id": "optical-pickup", "category": "electronics", "type": "electronics", "price": "€20", "status": "available",
      "title": "Optical guitar pickup", "emoji": "🎶",
      "images": ["assets/optical-pickup.jpg"],
      "tagline": "Fork light-barriers that 'hear' the strings with low noise.",
      "desc": "An optical pickup for classical/nylon guitar based on the open-hardware KlimperLux design: six fork light-barriers sense string vibration and generate a clean, low-noise audio signal — great for silent practice or unusual processing. KiCad + printed mount. A fun build I can put together for you.",
      "specs": [["Sensing", "6× optical fork barriers"], ["Signal", "Clean, low thermal noise"], ["Basis", "KlimperLux (open HW)"], ["Includes", "Board + printed mount"]],
      "claim": "Ask me to make one"
    },
    {
      "id": "tool-soldering-iron", "category": "tools", "type": "tool", "price": "Free — just return it", "status": "available",
      "title": "Soldering iron", "emoji": "🔌",
      "images": [],
      "tagline": "Temperature-controlled iron for small electronics work.",
      "desc": "A soldering iron for anyone with a board to fix or a project to build. Borrow it, use it, bring it back. Happy to throw in solder and show you the basics if you've never done it.",
      "specs": [["For", "Electronics / repairs"], ["Terms", "Borrow & return"], ["Extras", "Solder + a quick lesson"]],
      "claim": "Ask to borrow it"
    },
    {
      "id": "tool-heat-gun", "category": "tools", "type": "tool", "price": "Free — just return it", "status": "available",
      "title": "Heat gun", "emoji": "♨️",
      "images": [],
      "tagline": "For heat-shrink, stripping, bending, drying.",
      "desc": "A heat gun — heat-shrink tubing, softening plastic, stripping old paint or finish, speeding glue. Borrow & return.",
      "specs": [["For", "Heat-shrink · stripping · bending"], ["Terms", "Borrow & return"]],
      "claim": "Ask to borrow it"
    },
    {
      "id": "tool-glue-gun", "category": "tools", "type": "tool", "price": "Free — just return it", "status": "available",
      "title": "Glue gun", "emoji": "🔫",
      "images": [],
      "tagline": "Hot-melt glue gun for quick fixes and crafts.",
      "desc": "A hot-glue gun for crafts, mounts, quick repairs. Borrow it with a few glue sticks; bring it back.",
      "specs": [["For", "Crafts · mounts · quick repairs"], ["Terms", "Borrow & return"]],
      "claim": "Ask to borrow it"
    },
    {
      "id": "tool-screwdrivers", "category": "tools", "type": "tool", "price": "Free — just return it", "status": "available",
      "title": "Universal screwdriver set", "emoji": "🪛",
      "images": [],
      "tagline": "Every bit you'll need, including the weird ones.",
      "desc": "A universal screwdriver / bit set — Phillips, flat, Torx, hex, the tiny ones for electronics and glasses. For that one screw you don't have the driver for. Borrow & return.",
      "specs": [["For", "Anything with a screw"], ["Bits", "Phillips · flat · Torx · hex · precision"], ["Terms", "Borrow & return"]],
      "claim": "Ask to borrow it"
    },
    {
      "id": "tool-drill", "category": "tools", "type": "tool", "price": "Free — just return it", "status": "available",
      "title": "Heavy-duty electric drill", "emoji": "🛠️",
      "images": [],
      "tagline": "For when the little cordless won't cut it.",
      "desc": "A heavy-duty electric drill for masonry, hardwood, big holes — the jobs a small cordless can't handle. Borrow it for the afternoon; bring it back.",
      "specs": [["For", "Masonry · hardwood · big holes"], ["Terms", "Borrow & return"]],
      "claim": "Ask to borrow it"
    },
    {
      "id": "tool-lab-bench", "category": "tools", "type": "tool", "price": "Free — use it at mine", "status": "available",
      "title": "Lab bench (come use it)", "emoji": "🧪",
      "images": [],
      "tagline": "A proper workbench with tools — work here.",
      "desc": "A set-up electronics/maker bench: good light, the tools above within reach, space to spread out. Some things you can't lend, but you can come and use them. Drop by and build your thing here.",
      "specs": [["For", "Electronics / maker work"], ["Terms", "Use it at my place"], ["Comes with", "The tools, the light, the space"]],
      "claim": "Ask to come by"
    },
    {
      "id": "gpu-compute", "category": "compute", "type": "compute", "price": "Electricity only", "status": "available",
      "title": "GPU compute", "emoji": "🖥️",
      "images": [],
      "tagline": "Spare GPU cycles for training, rendering, inference.",
      "desc": "I have a GPU that sits idle a lot. Need to train a small model, run a batch of inference, render something? You can borrow the cycles. It runs user-first — my own jobs can preempt yours — you cover the electricity, and there's exactly one hard rule: no crypto mining. Everything else is fair game.",
      "specs": [["For", "Training · inference · rendering"], ["Priority", "User-first (owner preempts)"], ["Cost", "Electricity only"], ["Hard rule", "No crypto mining 🚫⛏️"]],
      "claim": "Ask about compute",
      "note": "Bring your job and a rough runtime estimate; we'll schedule it around idle time."
    },
    {
      "id": "class-ai-anything", "category": "lessons", "type": "lesson", "price": "2h", "status": "available",
      "title": "\"How to do anything with AI\" — a class", "emoji": "🤖", "images": [],
      "tagline": "Build apps, sites, PCBs, ML pipelines — and bend your OS to your will.",
      "desc": "A hands-on class in using AI to actually make things. We go wherever you want: building web apps and websites, designing electronics and PCBs, wrangling machine-learning and data-processing models, or ricing your whole operating system — the full i3 / Obsidian / Arch Linux stack I run daily. Bring a project you care about and you'll leave able to push it yourself. This whole Free Shelf, feed and all, was built exactly this way.",
      "specs": [["Covers", "Apps · sites · PCBs · ML · OS mods"], ["My stack", "i3 · Obsidian · Arch Linux"], ["Format", "Hands-on, your project"], ["Cost", "Free"]],
      "claim": "Ask for a class"
    },
    {
      "id": "scad-gallery", "category": "bits", "type": "design", "price": "Free", "status": "available",
      "title": "The SCAD connector gallery", "emoji": "🧩",
      "images": ["assets/gallery-scad.png", "assets/connectors-batch.png"],
      "tagline": "Browse & download the whole parametric connector family — ~20 joints.",
      "desc": "The full library behind the rod-connector set — every joint as a parametric OpenSCAD source plus rendered STLs, browsable in a little gallery I built. Take whatever you need, change the parameters, print. This is the project that first captured the whole spirit of this shelf: here's what I do anyway, have it.",
      "specs": [["Format", "OpenSCAD + STL"], ["License", "Free to use & remix"], ["Parts", "Dozens of joints & feet"], ["Tool", "Web SCAD gallery"]],
      "claim": "Get the files"
    },
    {
      "id": "guitar-games", "category": "bits", "type": "software", "price": "Free", "status": "available",
      "title": "Guitar fretboard training games", "emoji": "🎮",
      "images": [],
      "tagline": "A pile of little browser games for learning the fretboard.",
      "desc": "A set of small web games I built to drill guitar theory on the fretboard — note-finding, chord shapes, closest voicings, scale inversions, melody and progression practice. All browser-based, nothing to install. Happy to share the whole lot; just ask.",
      "specs": [["Format", "Browser games (HTML/JS)"], ["Covers", "Notes · chords · voicings · scales"], ["Install", "None — just open"], ["License", "Free to use & remix"]],
      "claim": "Ask for the games"
    },
    {
      "id": "sleep-study", "category": "bits", "type": "software", "price": "Free", "status": "available",
      "title": "Sleep-position analysis rig", "emoji": "🛏️",
      "images": [],
      "tagline": "An overhead camera + software that scores how you sleep.",
      "desc": "A system I built: an overhead IP camera watches the bed overnight and software runs pose/blob detection over the frames to work out your sleeping position through the night. It's a full harness — capture, storage, throttling, and a comparison of detectors. Very shareable; I'm still figuring out the cleanest way to hand software over, so ask and we'll sort it.",
      "specs": [["Camera", "Overhead IP (IR)"], ["Analysis", "Pose + blob detection"], ["Stack", "Python harness + web UI"], ["Output", "Position over the night"]],
      "claim": "Ask about the software"
    }
  ]
}
