{
  "version": 2,
  "siblings": [
    {
      "slug": "logic",
      "path": "/logic/",
      "url": "https://logic.solves.ca/",
      "title": "logic",
      "tagline": "Boolean logic explorer with truth tables, K-maps, and SAT/SMT via Z3.",
      "category": "solver",
      "accent": "#d9a35a",
      "tier": 1,
      "shipped": true,
      "promotedUrl": "https://logic.solves.ca/",
      "promoted": true
    },
    {
      "slug": "cellular",
      "path": "/cellular/",
      "url": "https://cellular.solves.ca/",
      "title": "cellular",
      "tagline": "Every Wolfram elementary cellular automaton, with each complexity metric tied to the pixel that produced it.",
      "category": "solver",
      "accent": "#0f766e",
      "tier": 1,
      "shipped": true,
      "promotedUrl": "https://cellular.solves.ca/",
      "promoted": true
    },
    {
      "slug": "regex",
      "path": "/regex/",
      "url": "https://solves.ca/regex/",
      "title": "regex",
      "tagline": "Regex sandbox with token explanations and match-span highlighting.",
      "category": "tool",
      "accent": "#84cc16",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "anagram",
      "path": "/anagram/",
      "url": "https://solves.ca/anagram/",
      "title": "anagram",
      "tagline": "Find words and phrases hidden in a string. Must-contain hints, scored ranking.",
      "category": "game",
      "accent": "#a855f7",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "sudoku",
      "path": "/sudoku/",
      "url": "https://solves.ca/sudoku/",
      "title": "sudoku",
      "tagline": "Solve, hint, or generate — with named techniques and a step-by-step trace.",
      "category": "game",
      "accent": "#22c55e",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "seating",
      "path": "/seating/",
      "url": "https://solves.ca/seating/",
      "title": "seating",
      "tagline": "Optimise event seating against constraints. Deterministic with a seed.",
      "category": "solver",
      "accent": "#f97316",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "wordle",
      "path": "/wordle/",
      "url": "https://solves.ca/wordle/",
      "title": "wordle",
      "tagline": "Wordle / quordle solver and next-guess ranker, information-theory scored.",
      "category": "game",
      "accent": "#eab308",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "nonogram",
      "path": "/nonogram/",
      "url": "https://solves.ca/nonogram/",
      "title": "nonogram",
      "tagline": "Nonogram / picross solver and creator. Line-DP with full explanations.",
      "category": "game",
      "accent": "#6366f1",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "minesweeper",
      "path": "/minesweeper/",
      "url": "https://solves.ca/minesweeper/",
      "title": "minesweeper",
      "tagline": "Probability-based assistant — safe squares, mine likelihoods, best next click.",
      "category": "game",
      "accent": "#ef4444",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "kakuro",
      "path": "/kakuro/",
      "url": "https://solves.ca/kakuro/",
      "title": "kakuro",
      "tagline": "Kakuro solver with named sum-partition techniques and step-by-step trace.",
      "category": "game",
      "accent": "#14b8a6",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "schedule",
      "path": "/schedule/",
      "url": "https://solves.ca/schedule/",
      "title": "schedule",
      "tagline": "Round-robin and timetable generator, deterministic with seed.",
      "category": "solver",
      "accent": "#ec4899",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "packing",
      "path": "/packing/",
      "url": "https://solves.ca/packing/",
      "title": "packing",
      "tagline": "Bin-packing and knapsack visualizer. FFD + exact for small instances.",
      "category": "solver",
      "accent": "#78716c",
      "tier": 1,
      "shipped": true
    },
    {
      "slug": "equation",
      "path": "/equation/",
      "url": "https://solves.ca/equation/",
      "title": "equation",
      "tagline": "Symbolic and numeric equation solver with algebraic steps.",
      "category": "solver",
      "accent": "#0891b2",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "slitherlink",
      "path": "/slitherlink/",
      "url": "https://solves.ca/slitherlink/",
      "title": "slitherlink",
      "tagline": "Slitherlink loop solver with edge-state grid and contradiction trace.",
      "category": "game",
      "accent": "#0ea5e9",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "graph",
      "path": "/graph/",
      "url": "https://solves.ca/graph/",
      "title": "graph",
      "tagline": "Shortest paths, colouring, flow, and graph algorithm visualizers.",
      "category": "solver",
      "accent": "#2563eb",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "routing",
      "path": "/routing/",
      "url": "https://solves.ca/routing/",
      "title": "routing",
      "tagline": "TSP and small routing optimizer with seeded layouts and tour scoring.",
      "category": "solver",
      "accent": "#16a34a",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "lineup",
      "path": "/lineup/",
      "url": "https://solves.ca/lineup/",
      "title": "lineup",
      "tagline": "Arrange players, singers, or speakers against balance and adjacency rules.",
      "category": "solver",
      "accent": "#db2777",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "constraint",
      "path": "/constraint/",
      "url": "https://solves.ca/constraint/",
      "title": "constraint",
      "tagline": "Generic finite-domain CSP playground: variables, domains, constraints, search.",
      "category": "solver",
      "accent": "#7c3aed",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "crossword",
      "path": "/crossword/",
      "url": "https://solves.ca/crossword/",
      "title": "crossword",
      "tagline": "Crossword clue helper and grid filler with candidate intersections.",
      "category": "game",
      "accent": "#ca8a04",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "cryptic",
      "path": "/cryptic/",
      "url": "https://solves.ca/cryptic/",
      "title": "cryptic",
      "tagline": "Cryptic clue parser for definitions, anagrams, containers, reversals, and charades.",
      "category": "game",
      "accent": "#be123c",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "cube",
      "path": "/cube/",
      "url": "https://solves.ca/cube/",
      "title": "cube",
      "tagline": "Rubik-style cube notation, state checker, and beginner-method solve trace.",
      "category": "game",
      "accent": "#ea580c",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "chess",
      "path": "/chess/",
      "url": "https://solves.ca/chess/",
      "title": "chess",
      "tagline": "Chess tactics and endgame explorer with legal-move validation.",
      "category": "game",
      "accent": "#475569",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "tangram",
      "path": "/tangram/",
      "url": "https://solves.ca/tangram/",
      "title": "tangram",
      "tagline": "Tangram silhouette solver with transform search and SVG placement.",
      "category": "game",
      "accent": "#0d9488",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "sat",
      "path": "/sat/",
      "url": "https://solves.ca/sat/",
      "title": "sat",
      "tagline": "DIMACS-first SAT playground focused on clauses, models, and unsat cores.",
      "category": "solver",
      "accent": "#9333ea",
      "tier": 3,
      "shipped": true
    },
    {
      "slug": "units",
      "path": "/units/",
      "url": "https://solves.ca/units/",
      "title": "units",
      "tagline": "Unit conversion and dimensional sanity across length, mass, volume, time, and more.",
      "category": "tool",
      "accent": "#f59e0b",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "datetime",
      "path": "/datetime/",
      "url": "https://solves.ca/datetime/",
      "title": "datetime",
      "tagline": "Time zones, durations, business days, and date arithmetic.",
      "category": "tool",
      "accent": "#06b6d4",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "finance",
      "path": "/finance/",
      "url": "https://solves.ca/finance/",
      "title": "finance",
      "tagline": "Loans, compound interest, rule of 72, and break-even calculations.",
      "category": "tool",
      "accent": "#059669",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "stats",
      "path": "/stats/",
      "url": "https://solves.ca/stats/",
      "title": "stats",
      "tagline": "Descriptive statistics, percentiles, and linear regression.",
      "category": "tool",
      "accent": "#4f46e5",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "materials",
      "path": "/materials/",
      "url": "https://solves.ca/materials/",
      "title": "materials",
      "tagline": "Maker and material calculators including board-feet and stock sizing.",
      "category": "tool",
      "accent": "#b45309",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "dice",
      "path": "/dice/",
      "url": "https://solves.ca/dice/",
      "title": "dice",
      "tagline": "Dice probability distributions, expected value, and roll statistics.",
      "category": "tool",
      "accent": "#d946ef",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "music",
      "path": "/music/",
      "url": "https://solves.ca/music/",
      "title": "music",
      "tagline": "Scales, chords, transposition, and Nashville number notation.",
      "category": "tool",
      "accent": "#f43f5e",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "colour",
      "path": "/colour/",
      "url": "https://solves.ca/colour/",
      "title": "colour",
      "tagline": "Contrast ratios, accessibility palette checks, and best text colour picks.",
      "category": "tool",
      "accent": "#8b5cf6",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "layout",
      "path": "/layout/",
      "url": "https://solves.ca/layout/",
      "title": "layout",
      "tagline": "Ratios, modular scale, spacing helpers, and fluid clamp expressions.",
      "category": "tool",
      "accent": "#64748b",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "probability",
      "path": "/probability/",
      "url": "https://solves.ca/probability/",
      "title": "probability",
      "tagline": "Binomial, hypergeometric, odds conversion, and common probability helpers.",
      "category": "tool",
      "accent": "#10b981",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "network",
      "path": "/network/",
      "url": "https://solves.ca/network/",
      "title": "network",
      "tagline": "CIDR, subnetting, IP range and membership helpers.",
      "category": "tool",
      "accent": "#3b82f6",
      "tier": 2,
      "shipped": true
    },
    {
      "slug": "chem",
      "path": "/chem/",
      "url": "https://solves.ca/chem/",
      "title": "chem",
      "tagline": "Molar mass, dilution, stoichiometry, and grams-to-moles basics.",
      "category": "tool",
      "accent": "#65a30d",
      "tier": 2,
      "shipped": true
    }
  ],
  "categories": [
    {
      "id": "game",
      "title": "Games",
      "description": "Playable puzzles and puzzle assistants."
    },
    {
      "id": "tool",
      "title": "Tools",
      "description": "Practical calculators and checkers."
    },
    {
      "id": "solver",
      "title": "Solvers",
      "description": "Constraint, search, and optimisation engines."
    }
  ]
}
