{
  "version": 1,
  "exportedAt": "2026-10-13T02:38:28.322Z",
  "sheets": [
    {
      "id": 1,
      "title": "Git",
      "description": "Everyday Git commands — branches, stashing, history surgery.",
      "category": "CLI Tools",
      "icon": "🌿",
      "position": 0,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 1,
          "sheetId": 1,
          "heading": "Stash",
          "position": 0,
          "items": [
            {
              "id": 1,
              "sectionId": 1,
              "title": "git stash",
              "code": "git stash",
              "language": "bash",
              "note": "Stash tracked changes",
              "position": 0
            },
            {
              "id": 2,
              "sectionId": 1,
              "title": "git stash pop",
              "code": "git stash pop",
              "language": "bash",
              "note": "Apply + drop the newest stash",
              "position": 1
            },
            {
              "id": 3,
              "sectionId": 1,
              "title": "git stash list",
              "code": "git stash list",
              "language": "bash",
              "note": "List all stashes",
              "position": 2
            },
            {
              "id": 4,
              "sectionId": 1,
              "title": "git stash apply",
              "code": "git stash apply stash@{2}",
              "language": "bash",
              "note": "Apply a specific stash without dropping it",
              "position": 3
            }
          ]
        },
        {
          "id": 2,
          "sheetId": 1,
          "heading": "Branching",
          "position": 1,
          "items": [
            {
              "id": 5,
              "sectionId": 2,
              "title": "New branch + switch",
              "code": "git switch -c feature/login",
              "language": "bash",
              "note": "Create and switch in one step (Git 2.23+)",
              "position": 0
            },
            {
              "id": 6,
              "sectionId": 2,
              "title": "Delete a branch",
              "code": "git branch -d feature/login",
              "language": "bash",
              "note": "-D forces delete of unmerged branches",
              "position": 1
            },
            {
              "id": 7,
              "sectionId": 2,
              "title": "Rename current branch",
              "code": "git branch -m new-name",
              "language": "bash",
              "note": null,
              "position": 2
            }
          ]
        },
        {
          "id": 3,
          "sheetId": 1,
          "heading": "History",
          "position": 2,
          "items": [
            {
              "id": 8,
              "sectionId": 3,
              "title": "Pretty log",
              "code": "git log --oneline --graph --decorate --all",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 9,
              "sectionId": 3,
              "title": "Undo last commit, keep changes",
              "code": "git reset --soft HEAD~1",
              "language": "bash",
              "note": null,
              "position": 1
            },
            {
              "id": 10,
              "sectionId": 3,
              "title": "Amend commit message",
              "code": "git commit --amend -m 'better message'",
              "language": "bash",
              "note": "Never amend pushed commits",
              "position": 2
            }
          ]
        }
      ]
    },
    {
      "id": 2,
      "title": "Docker",
      "description": "Containers, images, compose — the daily drivers.",
      "category": "DevOps",
      "icon": "🐳",
      "position": 1,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 4,
          "sheetId": 2,
          "heading": "Containers",
          "position": 0,
          "items": [
            {
              "id": 11,
              "sectionId": 4,
              "title": "Run with publish + env",
              "code": "docker run -d --name db -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres:16",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 12,
              "sectionId": 4,
              "title": "Shell into a container",
              "code": "docker exec -it db bash",
              "language": "bash",
              "note": null,
              "position": 1
            },
            {
              "id": 13,
              "sectionId": 4,
              "title": "Follow logs",
              "code": "docker logs -f db",
              "language": "bash",
              "note": null,
              "position": 2
            },
            {
              "id": 14,
              "sectionId": 4,
              "title": "Stop + remove all",
              "code": "docker rm -f $(docker ps -aq)",
              "language": "bash",
              "note": "Nuclear — removes every container",
              "position": 3
            }
          ]
        },
        {
          "id": 5,
          "sheetId": 2,
          "heading": "Images",
          "position": 1,
          "items": [
            {
              "id": 15,
              "sectionId": 5,
              "title": "Build with tag",
              "code": "docker build -t myapp:1.0 .",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 16,
              "sectionId": 5,
              "title": "Prune dangling images",
              "code": "docker image prune -f",
              "language": "bash",
              "note": null,
              "position": 1
            },
            {
              "id": 17,
              "sectionId": 5,
              "title": "Save / load",
              "code": "docker save myapp:1.0 | gzip > myapp.tar.gz\ndocker load < myapp.tar.gz",
              "language": "bash",
              "note": null,
              "position": 2
            }
          ]
        },
        {
          "id": 6,
          "sheetId": 2,
          "heading": "Compose",
          "position": 2,
          "items": [
            {
              "id": 18,
              "sectionId": 6,
              "title": "Minimal compose file",
              "code": "services:\n  web:\n    build: .\n    ports:\n      - '3000:3000'\n  db:\n    image: postgres:16\n    environment:\n      POSTGRES_PASSWORD: secret",
              "language": "yaml",
              "note": null,
              "position": 0
            },
            {
              "id": 19,
              "sectionId": 6,
              "title": "Rebuild + restart",
              "code": "docker compose up -d --build",
              "language": "bash",
              "note": null,
              "position": 1
            }
          ]
        }
      ]
    },
    {
      "id": 3,
      "title": "PostgreSQL",
      "description": "Queries, psql meta-commands, and maintenance.",
      "category": "Databases",
      "icon": "🐘",
      "position": 2,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 7,
          "sheetId": 3,
          "heading": "psql meta-commands",
          "position": 0,
          "items": [
            {
              "id": 20,
              "sectionId": 7,
              "title": "List databases / tables",
              "code": "\\l\n\\dt",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 21,
              "sectionId": 7,
              "title": "Describe table",
              "code": "\\d users",
              "language": "bash",
              "note": null,
              "position": 1
            },
            {
              "id": 22,
              "sectionId": 7,
              "title": "Timing + expanded output",
              "code": "\\timing on\n\\x",
              "language": "bash",
              "note": null,
              "position": 2
            }
          ]
        },
        {
          "id": 8,
          "sheetId": 3,
          "heading": "Queries",
          "position": 1,
          "items": [
            {
              "id": 23,
              "sectionId": 8,
              "title": "Upsert",
              "code": "INSERT INTO tags (name) VALUES ('go')\nON CONFLICT (name) DO UPDATE SET updated_at = now();",
              "language": "sql",
              "note": null,
              "position": 0
            },
            {
              "id": 24,
              "sectionId": 8,
              "title": "Find duplicates",
              "code": "SELECT email, COUNT(*)\nFROM users\nGROUP BY email\nHAVING COUNT(*) > 1;",
              "language": "sql",
              "note": null,
              "position": 1
            },
            {
              "id": 25,
              "sectionId": 8,
              "title": "Paging with keyset",
              "code": "SELECT * FROM posts\nWHERE (created_at, id) < ($1, $2)\nORDER BY created_at DESC, id DESC\nLIMIT 20;",
              "language": "sql",
              "note": "Stable under inserts vs OFFSET",
              "position": 2
            }
          ]
        },
        {
          "id": 9,
          "sheetId": 3,
          "heading": "Maintenance",
          "position": 2,
          "items": [
            {
              "id": 26,
              "sectionId": 9,
              "title": "Table + index size",
              "code": "SELECT relname, pg_size_pretty(pg_total_relation_size(oid))\nFROM pg_class\nWHERE relkind = 'r'\nORDER BY pg_total_relation_size(oid) DESC\nLIMIT 10;",
              "language": "sql",
              "note": null,
              "position": 0
            },
            {
              "id": 27,
              "sectionId": 9,
              "title": "Long-running queries",
              "code": "SELECT pid, now() - query_start AS runtime, query\nFROM pg_stat_activity\nWHERE state = 'active'\nORDER BY runtime DESC;",
              "language": "sql",
              "note": null,
              "position": 1
            }
          ]
        }
      ]
    },
    {
      "id": 4,
      "title": "curl",
      "description": "API wrangling from the terminal.",
      "category": "CLI Tools",
      "icon": "🌐",
      "position": 3,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 10,
          "sheetId": 4,
          "heading": "Basics",
          "position": 0,
          "items": [
            {
              "id": 28,
              "sectionId": 10,
              "title": "GET with headers shown",
              "code": "curl -v https://api.example.com/users/1",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 29,
              "sectionId": 10,
              "title": "POST JSON",
              "code": "curl -X POST https://api.example.com/users \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"ada\"}'",
              "language": "bash",
              "note": null,
              "position": 1
            },
            {
              "id": 30,
              "sectionId": 10,
              "title": "Bearer auth",
              "code": "curl -H 'Authorization: Bearer $TOKEN' https://api.example.com/me",
              "language": "bash",
              "note": null,
              "position": 2
            }
          ]
        },
        {
          "id": 11,
          "sheetId": 4,
          "heading": "Debugging",
          "position": 1,
          "items": [
            {
              "id": 31,
              "sectionId": 11,
              "title": "Timing breakdown",
              "code": "curl -o /dev/null -s -w 'dns:%{time_namelookup} connect:%{time_connect} total:%{time_total}\\n' https://example.com",
              "language": "bash",
              "note": null,
              "position": 0
            },
            {
              "id": 32,
              "sectionId": 11,
              "title": "Follow redirects + fail on HTTP errors",
              "code": "curl -sSfL https://example.com",
              "language": "bash",
              "note": "-f makes 4xx/5xx exit non-zero",
              "position": 1
            },
            {
              "id": 33,
              "sectionId": 11,
              "title": "Only response headers",
              "code": "curl -sI https://example.com",
              "language": "bash",
              "note": null,
              "position": 2
            }
          ]
        }
      ]
    },
    {
      "id": 5,
      "title": "React Hooks",
      "description": "Modern React 19 hook patterns.",
      "category": "Frameworks",
      "icon": "⚛️",
      "position": 4,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 12,
          "sheetId": 5,
          "heading": "State & effects",
          "position": 0,
          "items": [
            {
              "id": 34,
              "sectionId": 12,
              "title": "Lazy initial state",
              "code": "const [data, setData] = useState(() => expensiveInit());",
              "language": "tsx",
              "note": null,
              "position": 0
            },
            {
              "id": 35,
              "sectionId": 12,
              "title": "Effect with cleanup",
              "code": "useEffect(() => {\n  const ctrl = new AbortController();\n  fetch('/api/items', { signal: ctrl.signal })\n    .then((r) => r.json())\n    .then(setItems);\n  return () => ctrl.abort();\n}, []);",
              "language": "tsx",
              "note": null,
              "position": 1
            },
            {
              "id": 36,
              "sectionId": 12,
              "title": "Derived state — don't useState it",
              "code": "const total = items.reduce((n, i) => n + i.price, 0);",
              "language": "tsx",
              "note": "Compute during render; no effect needed",
              "position": 2
            }
          ]
        },
        {
          "id": 13,
          "sheetId": 5,
          "heading": "React 19",
          "position": 1,
          "items": [
            {
              "id": 37,
              "sectionId": 13,
              "title": "useActionState",
              "code": "const [state, formAction, pending] = useActionState(\n  async (prev, formData) => save(formData),\n  null,\n);",
              "language": "tsx",
              "note": null,
              "position": 0
            },
            {
              "id": 38,
              "sectionId": 13,
              "title": "Ref as a prop",
              "code": "<Dialog ref={dialogRef} />",
              "language": "tsx",
              "note": "ref no longer needs forwardRef",
              "position": 1
            },
            {
              "id": 39,
              "sectionId": 13,
              "title": "useOptimistic",
              "code": "const [optimistic, addOptimistic] = useOptimistic(items, (cur, item) => [...cur, item]);",
              "language": "tsx",
              "note": null,
              "position": 2
            }
          ]
        }
      ]
    },
    {
      "id": 6,
      "title": "Tailwind CSS",
      "description": "v4 utilities and config patterns worth memorizing.",
      "category": "Frameworks",
      "icon": "🎨",
      "position": 5,
      "createdAt": "2026-09-29T16:02:16.554Z",
      "updatedAt": "2026-09-29T16:02:16.554Z",
      "sections": [
        {
          "id": 14,
          "sheetId": 6,
          "heading": "Layout",
          "position": 0,
          "items": [
            {
              "id": 40,
              "sectionId": 14,
              "title": "Responsive grid",
              "code": "<div class=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">{cards}</div>",
              "language": "html",
              "note": null,
              "position": 0
            },
            {
              "id": 41,
              "sectionId": 14,
              "title": "Perfect centering",
              "code": "<div class=\"flex min-h-screen items-center justify-center\">…</div>",
              "language": "html",
              "note": null,
              "position": 1
            },
            {
              "id": 42,
              "sectionId": 14,
              "title": "Truncate with title",
              "code": "<p class=\"truncate\" title={text}>{text}</p>",
              "language": "html",
              "note": null,
              "position": 2
            }
          ]
        },
        {
          "id": 15,
          "sheetId": 6,
          "heading": "v4 theme tokens",
          "position": 1,
          "items": [
            {
              "id": 43,
              "sectionId": 15,
              "title": "CSS-first config",
              "code": "@import \"tailwindcss\";\n\n@theme {\n  --color-brand: oklch(0.6 0.2 260);\n  --font-display: \"Inter\", sans-serif;\n}",
              "language": "css",
              "note": "No tailwind.config.js needed in v4",
              "position": 0
            },
            {
              "id": 44,
              "sectionId": 15,
              "title": "Use a token",
              "code": "<button class=\"bg-brand font-display text-white\">Go</button>",
              "language": "html",
              "note": null,
              "position": 1
            }
          ]
        }
      ]
    }
  ]
}