toolDatabase = [
// Protocol Tools
{name: "Protocol Comparison Simulator", path: "../networking-and-communications/fundamentals/animations/protocol-comparison-simulator.qmd",
category: "Protocols", difficulty: "Intermediate", tags: ["comparison", "selection", "protocols"],
description: "Compare up to 4 IoT protocols on range, power, bandwidth, and more",
prerequisites: ["Basic networking concepts"], learnNext: ["Protocol Selection Guide", "Protocol Selector Wizard"]},
{name: "Protocol Selection Guide", path: "../networking-and-communications/fundamentals/animations/protocol-selection-flowchart.qmd",
category: "Protocols", difficulty: "Beginner", tags: ["protocol", "selection", "decision", "flowchart", "guide"],
description: "Step-by-step guided selection of the optimal IoT protocol based on your requirements",
prerequisites: [], learnNext: ["Protocol Comparison Simulator", "LoRaWAN Overview", "MQTT Fundamentals"]},
{name: "MQTT Message Flow", path: "../networking-and-communications/animations/mqtt-pubsub.qmd",
category: "Protocols", difficulty: "Beginner", tags: ["mqtt", "messaging", "pubsub"],
description: "Visualize publish/subscribe messaging patterns",
prerequisites: [], learnNext: ["MQTT Clustering", "CoAP Messages"]},
{name: "LoRaWAN Spreading Factor Simulator", path: "../networking-and-communications/animations/lorawan-sf.qmd",
category: "Protocols", difficulty: "Intermediate", tags: ["lorawan", "lpwan", "wireless"],
description: "Explore how spreading factor affects range and airtime",
prerequisites: ["LoRaWAN basics"], learnNext: ["LoRaWAN ADR", "Path Loss Calculator"]},
{name: "BLE State Machine", path: "../networking-and-communications/animations/ble-connection.qmd",
category: "Protocols", difficulty: "Intermediate", tags: ["bluetooth", "ble", "state-machine"],
description: "Understand BLE connection states and transitions",
prerequisites: ["BLE fundamentals"], learnNext: ["BLE Pairing", "BLE Mesh Relay"]},
{name: "Zigbee Mesh Visualizer", path: "../networking-and-communications/animations/zigbee-mesh.qmd",
category: "Protocols", difficulty: "Intermediate", tags: ["zigbee", "mesh", "routing"],
description: "See how Zigbee mesh networks form and route messages",
prerequisites: ["Mesh networking basics"], learnNext: ["Thread Network", "Z-Wave Routing"]},
// Architecture Tools
{name: "PID Controller Tuner", path: "../architectures/foundations/animations/pid-tuner.qmd",
category: "Control Systems", difficulty: "Advanced", tags: ["pid", "control", "tuning"],
description: "Interactive PID tuning with real-time response visualization",
prerequisites: ["Control theory basics", "Transfer functions"], learnNext: ["Motor Control Simulator"]},
{name: "Sensor Fusion Calculator", path: "../architectures/foundations/animations/sensor-fusion-calculator.qmd",
category: "Sensing", difficulty: "Intermediate", tags: ["sensor-fusion", "kalman", "accuracy"],
description: "Combine multiple sensor readings for improved accuracy",
prerequisites: ["Statistics basics"], learnNext: ["Kalman Filter Simulator"]},
{name: "Multi-Hop Network Simulator", path: "../architectures/foundations/animations/multi-hop-network.qmd",
category: "Networking", difficulty: "Intermediate", tags: ["routing", "mesh", "multi-hop"],
description: "Simulate message routing through multi-hop networks",
prerequisites: ["Network topology"], learnNext: ["Ad-Hoc Routing Visualizer", "RPL DODAG"]},
{name: "Network Topology Simulator", path: "../architectures/foundations/animations/network-topology-simulator.qmd",
category: "Networking", difficulty: "Intermediate", tags: ["topology", "network-design", "star", "mesh", "tree"],
description: "Design and analyze IoT network topologies including star, mesh, tree, ring, and hybrid configurations",
prerequisites: ["Basic networking"], learnNext: ["Multi-Hop Network Simulator", "Ad-Hoc Routing Visualizer"]},
{name: "Reference Architecture Builder", path: "../architectures/foundations/animations/reference-architecture.qmd",
category: "Architecture", difficulty: "Advanced", tags: ["architecture", "design", "planning"],
description: "Design complete IoT system architectures",
prerequisites: ["IoT architecture fundamentals"], learnNext: ["Edge Cloud Decision Tool"]},
{name: "SDN Flow Rule Builder", path: "../architectures/foundations/animations/sdn-flow-builder.qmd",
category: "Networking", difficulty: "Advanced", tags: ["sdn", "networking", "flow-rules"],
description: "Create and visualize software-defined networking rules",
prerequisites: ["SDN concepts", "Network layers"], learnNext: ["Network Segmentation Visualizer"]},
// Data Management Tools
{name: "Database Selection Tool", path: "../data-management-and-analytics/animations/database-selector.qmd",
category: "Data", difficulty: "Intermediate", tags: ["database", "selection", "storage"],
description: "Choose the right database for your IoT data needs",
prerequisites: ["Database basics"], learnNext: ["Query Analyzer", "Big Data Pipeline"]},
{name: "Edge vs Cloud Decision Tool", path: "../data-management-and-analytics/animations/edge-cloud-decision.qmd",
category: "Architecture", difficulty: "Intermediate", tags: ["edge", "cloud", "decision"],
description: "Decide where to process your IoT data",
prerequisites: ["Edge computing concepts"], learnNext: ["Big Data Pipeline", "Reference Architecture"]},
{name: "Kalman Filter Simulator", path: "../data-management-and-analytics/animations/kalman-filter.qmd",
category: "Signal Processing", difficulty: "Advanced", tags: ["kalman", "filtering", "estimation"],
description: "Visualize Kalman filtering for state estimation",
prerequisites: ["Linear algebra", "Probability"], learnNext: ["Sensor Fusion Calculator"]},
{name: "Query Performance Analyzer", path: "../data-management-and-analytics/animations/query-analyzer.qmd",
category: "Data", difficulty: "Advanced", tags: ["query", "performance", "optimization"],
description: "Analyze and optimize time-series queries",
prerequisites: ["SQL basics", "Time-series concepts"], learnNext: ["Database Selection Tool"]},
// Security Tools
{name: "Zero Trust Policy Simulator", path: "../privacy-and-security/animations/zero-trust-simulator.qmd",
category: "Security", difficulty: "Advanced", tags: ["security", "zero-trust", "policy"],
description: "Design and test zero-trust security policies",
prerequisites: ["Security fundamentals"], learnNext: ["Network Segmentation", "Privacy Compliance"]},
{name: "Security Posture Assessment", path: "../privacy-and-security/animations/security-posture-assessment.qmd",
category: "Security", difficulty: "Intermediate", tags: ["security", "assessment", "audit", "compliance"],
description: "Evaluate IoT deployment security across 8 domains with prioritized recommendations",
prerequisites: ["Security basics"], learnNext: ["Zero Trust Simulator", "Threat Model Builder"]},
{name: "Network Segmentation Visualizer", path: "../privacy-and-security/animations/network-segmentation-visualizer.qmd",
category: "Security", difficulty: "Intermediate", tags: ["security", "network", "segmentation"],
description: "Design secure network zones and segments",
prerequisites: ["Network basics"], learnNext: ["Zero Trust Simulator"]},
{name: "Privacy Compliance Checker", path: "../privacy-and-security/animations/privacy-compliance.qmd",
category: "Security", difficulty: "Intermediate", tags: ["privacy", "gdpr", "compliance"],
description: "Check IoT system privacy compliance",
prerequisites: ["Privacy regulations awareness"], learnNext: ["Zero Trust Simulator"]},
// Design Tools
{name: "Power Budget Calculator", path: "../design-strategies-and-prototyping/animations/power-budget.qmd",
category: "Design", difficulty: "Beginner", tags: ["power", "battery", "energy"],
description: "Calculate battery life for IoT devices",
prerequisites: [], learnNext: ["Power Consumption Calculator", "Context-Aware Energy Optimizer"]},
{name: "Power Consumption Calculator", path: "../design-strategies-and-prototyping/animations/power-consumption-calculator.qmd",
category: "Design", difficulty: "Intermediate", tags: ["power", "consumption", "battery-life", "duty-cycle", "optimization"],
description: "Calculate detailed power consumption with duty cycling, estimate battery life, and explore optimization strategies",
prerequisites: ["Basic power concepts"], learnNext: ["Context-Aware Energy Optimizer", "Hardware Selection Optimizer"]},
{name: "Hardware Selection Optimizer", path: "../design-strategies-and-prototyping/animations/hardware-selector.qmd",
category: "Design", difficulty: "Intermediate", tags: ["hardware", "selection", "components"],
description: "Choose the right microcontroller and components",
prerequisites: ["Basic electronics"], learnNext: ["Power Budget Calculator"]},
{name: "Troubleshooting Simulator", path: "../design-strategies-and-prototyping/animations/troubleshooting-simulator.qmd",
category: "Debugging", difficulty: "Intermediate", tags: ["troubleshooting", "debugging", "diagnostics"],
description: "Practice systematic IoT debugging",
prerequisites: ["Basic IoT knowledge"], learnNext: ["Packet Analyzer"]},
// Sensing Tools
{name: "Sensor Calibration Tool", path: "../sensing-and-actuation/animations/sensor-calibration.qmd",
category: "Sensing", difficulty: "Beginner", tags: ["sensors", "calibration", "accuracy"],
description: "Learn sensor calibration techniques",
prerequisites: [], learnNext: ["Sensor Fusion Calculator", "ADC Sampling"]},
{name: "RC Filter Designer", path: "../sensing-and-actuation/animations/rc-filter-designer.qmd",
category: "Signal Processing", difficulty: "Intermediate", tags: ["filter", "analog", "noise"],
description: "Design analog filters for sensor signals",
prerequisites: ["Basic electronics"], learnNext: ["ADC Sampling", "Kalman Filter"]},
{name: "Circuit Analysis Solver", path: "../sensing-and-actuation/animations/circuit-solver.qmd",
category: "Electronics", difficulty: "Intermediate", tags: ["circuits", "analysis", "electronics"],
description: "Analyze basic sensor circuits",
prerequisites: ["Ohm's law"], learnNext: ["RC Filter Designer"]},
// Application Tools
{name: "IoT Use Case Builder", path: "../applications-and-use-cases/animations/use-case-builder.qmd",
category: "Applications", difficulty: "Beginner", tags: ["use-case", "requirements", "planning"],
description: "Define and document IoT use cases",
prerequisites: [], learnNext: ["Business Model Canvas", "Reference Architecture"]},
{name: "Business Model Canvas", path: "../applications-and-use-cases/animations/business-model-canvas.qmd",
category: "Business", difficulty: "Intermediate", tags: ["business", "planning", "strategy"],
description: "Create IoT business models",
prerequisites: ["Use case understanding"], learnNext: ["Industry 4.0 Maturity Assessor"]},
{name: "Industry 4.0 Maturity Assessor", path: "../applications-and-use-cases/animations/industry40-maturity.qmd",
category: "Industrial", difficulty: "Intermediate", tags: ["industry4.0", "maturity", "assessment"],
description: "Assess digital transformation readiness",
prerequisites: ["Industry 4.0 concepts"], learnNext: ["Business Model Canvas"]},
// Human Factors Tools
{name: "UX Design Evaluation Tool", path: "../human-factors-and-interaction/animations/ux-evaluator.qmd",
category: "UX", difficulty: "Intermediate", tags: ["ux", "usability", "design"],
description: "Evaluate IoT interface usability",
prerequisites: ["UX basics"], learnNext: ["Location Selector"]},
{name: "Location Technology Selector", path: "../human-factors-and-interaction/animations/location-selector.qmd",
category: "Location", difficulty: "Intermediate", tags: ["location", "positioning", "gps"],
description: "Choose the right positioning technology",
prerequisites: ["Location concepts"], learnNext: ["UWB TWR", "Path Loss Calculator"]},
// Fundamentals Tools
{name: "Binary & Hex Converter", path: "../fundamentals/animations/binary-hex-converter.qmd",
category: "Fundamentals", difficulty: "Beginner", tags: ["binary", "hex", "conversion", "data"],
description: "Convert between binary, decimal, and hexadecimal with IoT examples",
prerequisites: [], learnNext: ["ADC Resolution Visualizer", "Data Representation"]},
{name: "Sampling Visualizer", path: "../fundamentals/animations/sampling-visualizer.qmd",
category: "Signal Processing", difficulty: "Beginner", tags: ["sampling", "nyquist", "aliasing", "signals"],
description: "Understand Nyquist sampling and aliasing effects",
prerequisites: [], learnNext: ["ADC Resolution Visualizer", "RC Filter Designer"]},
{name: "ADC Resolution Visualizer", path: "../fundamentals/animations/adc-resolution-visualizer.qmd",
category: "Sensing", difficulty: "Beginner", tags: ["adc", "resolution", "quantization", "sensors"],
description: "Visualize how ADC resolution affects sensor measurements",
prerequisites: ["Binary basics"], learnNext: ["Sensor Calibration Tool", "Sampling Visualizer"]},
{name: "Wireless Range Calculator", path: "../fundamentals/animations/wireless-range-calculator.qmd",
category: "Networking", difficulty: "Intermediate", tags: ["wireless", "range", "link-budget", "path-loss"],
description: "Calculate expected wireless range using link budget analysis",
prerequisites: ["Basic RF concepts"], learnNext: ["Path Loss Calculator", "Protocol Comparison"]},
{name: "Protocol State Machine Playground", path: "../networking-and-communications/fundamentals/animations/protocol-state-playground.qmd",
category: "Protocols", difficulty: "Intermediate", tags: ["mqtt", "coap", "ble", "state-machine", "visualization"],
description: "Interactive protocol state machine visualization with step-through scenarios",
prerequisites: ["Protocol basics"], learnNext: ["MQTT Message Flow", "BLE State Machine"]},
{name: "Visual Concept Map", path: "concept-map-visual.qmd",
category: "Learning", difficulty: "Beginner", tags: ["concepts", "learning", "navigation", "overview"],
description: "Interactive graph showing how IoT concepts connect and build on each other",
prerequisites: [], learnNext: ["Knowledge Map", "Learning Path Generator"]},
{name: "Discussion Prompts Hub", path: "discussion-prompts-hub.qmd",
category: "Learning", difficulty: "Beginner", tags: ["discussion", "debate", "collaboration", "peer-learning"],
description: "Structured debate topics and discussion prompts for study groups",
prerequisites: [], learnNext: ["Quiz Hub", "Concept Map"]},
{name: "Quick Reference Cards", path: "quick-reference-cards.qmd",
category: "Reference", difficulty: "Beginner", tags: ["cheatsheet", "reference", "formulas", "quick-guide"],
description: "Condensed protocol cheat sheets, formulas, pin-outs, and code patterns",
prerequisites: [], learnNext: ["Formula Calculator", "Protocol Comparison"]},
{name: "IoT Formula Calculator", path: "../fundamentals/animations/formula-calculator.qmd",
category: "Fundamentals", difficulty: "Beginner", tags: ["calculator", "formulas", "link-budget", "battery", "adc"],
description: "Calculate link budget, battery life, ADC parameters, data rates, and unit conversions",
prerequisites: [], learnNext: ["Wireless Range Calculator", "Power Budget Calculator"]},
{name: "Code Snippet Library", path: "code-snippet-library.qmd",
category: "Reference", difficulty: "Beginner", tags: ["code", "snippets", "examples", "copy-paste", "arduino", "esp32"],
description: "100+ copy-paste ready code snippets for sensors, MQTT, HTTP, BLE, LoRa, and more",
prerequisites: [], learnNext: ["Quick Reference Cards", "Troubleshooting Hub"]},
{name: "Troubleshooting Flowchart", path: "troubleshooting-flowchart.qmd",
category: "Debugging", difficulty: "Beginner", tags: ["debug", "troubleshoot", "wifi", "mqtt", "sensor", "flowchart"],
description: "Interactive decision trees to diagnose Wi-Fi, MQTT, sensor, power, and serial issues",
prerequisites: [], learnNext: ["Code Snippet Library", "Failure Case Studies"]},
{name: "Learning Recommendations", path: "learning-recommendations.qmd",
category: "Learning", difficulty: "Beginner", tags: ["recommendations", "personalized", "progress", "goals", "learning-path"],
description: "Get personalized learning recommendations based on your progress and goals",
prerequisites: [], learnNext: ["Concept Map", "Tool Discovery Hub"]}
]
categories = [...new Set(toolDatabase.map(t => t.category))].sort()
difficulties = ["Beginner", "Intermediate", "Advanced"]
viewof filterCategory = Inputs.select(["All Categories", ...categories], {
label: "Category:",
value: "All Categories"
})
viewof filterDifficulty = Inputs.select(["All Levels", ...difficulties], {
label: "Difficulty:",
value: "All Levels"
})
viewof searchTerm = Inputs.text({
label: "Search:",
placeholder: "e.g., mqtt, power, sensor..."
})