{
  "slug": "persist/quickstart",
  "title": "Persist Quickstart",
  "description": "Install the Persist SDK and create your first store in under a minute.",
  "url": "https://cuitty.com/docs/persist/quickstart",
  "markdown_url": "https://cuitty.com/docs/persist/quickstart.md",
  "json_url": "https://cuitty.com/docs/persist/quickstart.json",
  "frontmatter": {
    "title": "Persist Quickstart",
    "description": "Install the Persist SDK and create your first store in under a minute.",
    "order": 1,
    "section": "Persist",
    "updatedAt": "2026-05-12"
  },
  "headings": [
    {
      "depth": 1,
      "slug": "persist-quickstart",
      "text": "Persist Quickstart"
    },
    {
      "depth": 2,
      "slug": "install",
      "text": "Install"
    },
    {
      "depth": 2,
      "slug": "create-a-store",
      "text": "Create a store"
    },
    {
      "depth": 2,
      "slug": "basic-crud",
      "text": "Basic CRUD"
    },
    {
      "depth": 2,
      "slug": "enable-sync",
      "text": "Enable sync"
    },
    {
      "depth": 2,
      "slug": "enable-encryption",
      "text": "Enable encryption"
    }
  ],
  "body_markdown": "# Persist Quickstart\n\n## Install\n\n```bash\n# npm\nnpm install @cuitty/persist\n\n# bun\nbun add @cuitty/persist\n\n# pnpm\npnpm add @cuitty/persist\n```\n\n## Create a store\n\n```ts\nimport { createStore } from \"@cuitty/persist\";\n\nconst store = await createStore({\n  name: \"my-app\",\n  adapter: \"sqlite\",\n  path: \"./data/my-app.db\",\n});\n```\n\n## Basic CRUD\n\n```ts\n// Put a record\nawait store.records.put(\"users/alice\", {\n  name: \"Alice\",\n  role: \"admin\",\n});\n\n// Get a record\nconst alice = await store.records.get(\"users/alice\");\n\n// List records by prefix\nconst users = await store.records.list(\"users/\");\n\n// Delete a record\nawait store.records.delete(\"users/alice\");\n```\n\n## Enable sync\n\nAdd a `sync` block to push local writes to a remote backend automatically. Writes never block -- sync runs in the background.\n\n```ts\nconst store = await createStore({\n  name: \"my-app\",\n  adapter: \"sqlite\",\n  path: \"./data/my-app.db\",\n  sync: {\n    remote: \"postgres\",\n    strategy: \"last-write-wins\",\n  },\n});\n```\n\nSee [Sync & Conflict Resolution](/docs/persist/sync) for strategies and conflict handling.\n\n## Enable encryption\n\nSet `encrypt: true` to encrypt all data before it leaves the device. The sync server never sees plaintext.\n\n```ts\nconst store = await createStore({\n  name: \"my-app\",\n  adapter: \"sqlite\",\n  path: \"./data/my-app.db\",\n  encrypt: true,\n  sync: {\n    remote: \"postgres\",\n    strategy: \"last-write-wins\",\n  },\n});\n```\n\nSee [End-to-End Encryption](/docs/persist/encryption) for key management and zero-knowledge architecture.",
  "body_html": "<h1 id=\"persist-quickstart\">Persist Quickstart</h1>\n<h2 id=\"install\">Install</h2>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\"><code><span class=\"line\"><span style=\"color:#6A737D\"># npm</span></span>\n<span class=\"line\"><span style=\"color:#B392F0\">npm</span><span style=\"color:#9ECBFF\"> install</span><span style=\"color:#9ECBFF\"> @cuitty/persist</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6A737D\"># bun</span></span>\n<span class=\"line\"><span style=\"color:#B392F0\">bun</span><span style=\"color:#9ECBFF\"> add</span><span style=\"color:#9ECBFF\"> @cuitty/persist</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6A737D\"># pnpm</span></span>\n<span class=\"line\"><span style=\"color:#B392F0\">pnpm</span><span style=\"color:#9ECBFF\"> add</span><span style=\"color:#9ECBFF\"> @cuitty/persist</span></span></code></pre>\n<h2 id=\"create-a-store\">Create a store</h2>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\"><code><span class=\"line\"><span style=\"color:#F97583\">import</span><span style=\"color:#E1E4E8\"> { createStore } </span><span style=\"color:#F97583\">from</span><span style=\"color:#9ECBFF\"> \"@cuitty/persist\"</span><span style=\"color:#E1E4E8\">;</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#F97583\">const</span><span style=\"color:#79B8FF\"> store</span><span style=\"color:#F97583\"> =</span><span style=\"color:#F97583\"> await</span><span style=\"color:#B392F0\"> createStore</span><span style=\"color:#E1E4E8\">({</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  name: </span><span style=\"color:#9ECBFF\">\"my-app\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  adapter: </span><span style=\"color:#9ECBFF\">\"sqlite\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  path: </span><span style=\"color:#9ECBFF\">\"./data/my-app.db\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">});</span></span></code></pre>\n<h2 id=\"basic-crud\">Basic CRUD</h2>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\"><code><span class=\"line\"><span style=\"color:#6A737D\">// Put a record</span></span>\n<span class=\"line\"><span style=\"color:#F97583\">await</span><span style=\"color:#E1E4E8\"> store.records.</span><span style=\"color:#B392F0\">put</span><span style=\"color:#E1E4E8\">(</span><span style=\"color:#9ECBFF\">\"users/alice\"</span><span style=\"color:#E1E4E8\">, {</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  name: </span><span style=\"color:#9ECBFF\">\"Alice\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  role: </span><span style=\"color:#9ECBFF\">\"admin\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">});</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6A737D\">// Get a record</span></span>\n<span class=\"line\"><span style=\"color:#F97583\">const</span><span style=\"color:#79B8FF\"> alice</span><span style=\"color:#F97583\"> =</span><span style=\"color:#F97583\"> await</span><span style=\"color:#E1E4E8\"> store.records.</span><span style=\"color:#B392F0\">get</span><span style=\"color:#E1E4E8\">(</span><span style=\"color:#9ECBFF\">\"users/alice\"</span><span style=\"color:#E1E4E8\">);</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6A737D\">// List records by prefix</span></span>\n<span class=\"line\"><span style=\"color:#F97583\">const</span><span style=\"color:#79B8FF\"> users</span><span style=\"color:#F97583\"> =</span><span style=\"color:#F97583\"> await</span><span style=\"color:#E1E4E8\"> store.records.</span><span style=\"color:#B392F0\">list</span><span style=\"color:#E1E4E8\">(</span><span style=\"color:#9ECBFF\">\"users/\"</span><span style=\"color:#E1E4E8\">);</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6A737D\">// Delete a record</span></span>\n<span class=\"line\"><span style=\"color:#F97583\">await</span><span style=\"color:#E1E4E8\"> store.records.</span><span style=\"color:#B392F0\">delete</span><span style=\"color:#E1E4E8\">(</span><span style=\"color:#9ECBFF\">\"users/alice\"</span><span style=\"color:#E1E4E8\">);</span></span></code></pre>\n<h2 id=\"enable-sync\">Enable sync</h2>\n<p>Add a <code>sync</code> block to push local writes to a remote backend automatically. Writes never block — sync runs in the background.</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\"><code><span class=\"line\"><span style=\"color:#F97583\">const</span><span style=\"color:#79B8FF\"> store</span><span style=\"color:#F97583\"> =</span><span style=\"color:#F97583\"> await</span><span style=\"color:#B392F0\"> createStore</span><span style=\"color:#E1E4E8\">({</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  name: </span><span style=\"color:#9ECBFF\">\"my-app\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  adapter: </span><span style=\"color:#9ECBFF\">\"sqlite\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  path: </span><span style=\"color:#9ECBFF\">\"./data/my-app.db\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  sync: {</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    remote: </span><span style=\"color:#9ECBFF\">\"postgres\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    strategy: </span><span style=\"color:#9ECBFF\">\"last-write-wins\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  },</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">});</span></span></code></pre>\n<p>See <a href=\"/docs/persist/sync\">Sync &#x26; Conflict Resolution</a> for strategies and conflict handling.</p>\n<h2 id=\"enable-encryption\">Enable encryption</h2>\n<p>Set <code>encrypt: true</code> to encrypt all data before it leaves the device. The sync server never sees plaintext.</p>\n<pre class=\"astro-code github-dark\" style=\"background-color:#24292e;color:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"ts\"><code><span class=\"line\"><span style=\"color:#F97583\">const</span><span style=\"color:#79B8FF\"> store</span><span style=\"color:#F97583\"> =</span><span style=\"color:#F97583\"> await</span><span style=\"color:#B392F0\"> createStore</span><span style=\"color:#E1E4E8\">({</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  name: </span><span style=\"color:#9ECBFF\">\"my-app\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  adapter: </span><span style=\"color:#9ECBFF\">\"sqlite\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  path: </span><span style=\"color:#9ECBFF\">\"./data/my-app.db\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  encrypt: </span><span style=\"color:#79B8FF\">true</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  sync: {</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    remote: </span><span style=\"color:#9ECBFF\">\"postgres\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    strategy: </span><span style=\"color:#9ECBFF\">\"last-write-wins\"</span><span style=\"color:#E1E4E8\">,</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">  },</span></span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">});</span></span></code></pre>\n<p>See <a href=\"/docs/persist/encryption\">End-to-End Encryption</a> for key management and zero-knowledge architecture.</p>",
  "links_out": [
    "/docs/persist/sync",
    "/docs/persist/encryption"
  ]
}