<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://stack.convex.dev</id>
    <title>Stack</title>
    <updated>2026-04-06T23:33:35.718Z</updated>
    <generator>Feed for Node.js</generator>
    <author>
        <name>Stack</name>
        <uri>https://stack.convex.dev/</uri>
    </author>
    <link rel="alternate" href="https://stack.convex.dev"/>
    <link rel="self" href="https://stack.convex.dev/rss/atom.xml"/>
    <subtitle>Latest posts from Stack</subtitle>
    <logo>https://stack.convex.dev/logos/stack-dark@3x.png</logo>
    <icon>https://stack.convex.dev/favicon.ico</icon>
    <rights>©2026 Convex, Inc.</rights>
    <entry>
        <title type="html"><![CDATA[Site Up. Costs Down: Optimizing OpenClaw’s 1M Weekly Active Users ]]></title>
        <id>https://stack.convex.dev/optimizing-openclaw</id>
        <link href="https://stack.convex.dev/optimizing-openclaw"/>
        <updated>2026-03-20T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[ClawHub scaled from 0 to 1M visitors a week in just over a month. Here's how to the vibe-code went from "good enough for PMF" to "viral scale" by using good engineering practices.]]></summary>
        <content type="html"><![CDATA[ClawHub scaled from 0 to 1M visitors a week in just over a month. Here's how to the vibe-code went from "good enough for PMF" to "viral scale" by using good engineering practices.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[When to and when not to use return validators]]></title>
        <id>https://stack.convex.dev/when-to-and-when-not-to-use-return-validators</id>
        <link href="https://stack.convex.dev/when-to-and-when-not-to-use-return-validators"/>
        <updated>2026-02-27T05:25:57.467Z</updated>
        <summary type="html"><![CDATA[We're changing our guidance for LLMs on Returns Validators.]]></summary>
        <content type="html"><![CDATA[We're changing our guidance for LLMs on Returns Validators.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="TypeScript"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[I don't care about your database benchmarks (and neither should you)]]></title>
        <id>https://stack.convex.dev/on-competitive-benchmarks</id>
        <link href="https://stack.convex.dev/on-competitive-benchmarks"/>
        <updated>2026-02-25T16:50:00.000Z</updated>
        <summary type="html"><![CDATA[Consider this our declaration of permanent disengagement from “bar chart wars.” It’s good dev marketing, but it’s a waste of time.]]></summary>
        <content type="html"><![CDATA[Consider this our declaration of permanent disengagement from “bar chart wars.” It’s good dev marketing, but it’s a waste of time.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Convex Marketing Journey 2022-2026]]></title>
        <id>https://stack.convex.dev/marketing-journey</id>
        <link href="https://stack.convex.dev/marketing-journey"/>
        <updated>2026-02-23T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[So how did our marketing messaging get to where it is today? Let's go over all of the different things that we tried and the main lessons we took away from each iteration of Convex's messaging and design.]]></summary>
        <content type="html"><![CDATA[So how did our marketing messaging get to where it is today? Let's go over all of the different things that we tried and the main lessons we took away from each iteration of Convex's messaging and design.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Marketing"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to connect Convex to RunPod for serverless GPU workloads]]></title>
        <id>https://stack.convex.dev/convex-gpu-runpod-workflows</id>
        <link href="https://stack.convex.dev/convex-gpu-runpod-workflows"/>
        <updated>2026-02-09T22:33:22.983Z</updated>
        <summary type="html"><![CDATA[Every GPU task I've run from a backend has the same problem: you fire off the job, then poll for results or wire up webhooks to know when it's done. This walkthrough shows a different approach. Convex triggers a GPU job on RunPod, and the RunPod worker calls mutations directly on Convex using the Python client. The frontend stays in sync through live queries. No polling, no webhook infrastructure. I'll walk through the full implementation using video background removal as the example, but the pattern works for any GPU workload — compression, transcription, object detection, whatever you need.]]></summary>
        <content type="html"><![CDATA[Every GPU task I've run from a backend has the same problem: you fire off the job, then poll for results or wire up webhooks to know when it's done. This walkthrough shows a different approach. Convex triggers a GPU job on RunPod, and the RunPod worker calls mutations directly on Convex using the Python client. The frontend stays in sync through live queries. No polling, no webhook infrastructure. I'll walk through the full implementation using video background removal as the example, but the pattern works for any GPU workload — compression, transcription, object detection, whatever you need.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a 70-Module Convex Backend: Web, Mobile & API in One Deployment]]></title>
        <id>https://stack.convex.dev/tables-convex-modules-rest-apis</id>
        <link href="https://stack.convex.dev/tables-convex-modules-rest-apis"/>
        <updated>2026-01-12T23:35:54.619Z</updated>
        <summary type="html"><![CDATA[Hamza, shares a year-long build from 10 tables to 70+ Convex modules serving web, mobile, and REST APIs through a single deployment with one backend handling everything.]]></summary>
        <content type="html"><![CDATA[Hamza, shares a year-long build from 10 tables to 70+ Convex modules serving web, mobile, and REST APIs through a single deployment with one backend handling everything.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Efficient COUNT, SUM, MAX with the Aggregate Component ]]></title>
        <id>https://stack.convex.dev/efficient-count-sum-max-with-the-aggregate-component</id>
        <link href="https://stack.convex.dev/efficient-count-sum-max-with-the-aggregate-component"/>
        <updated>2025-08-16T05:46:00.000Z</updated>
        <summary type="html"><![CDATA[Convex omits built-in aggregates because full-table scans don’t scale; the video shows how @convex-dev/aggregate (B-Tree powered) enables fast pagination, ranking, per-user stats, and randomization with fully reactive queries. It also covers keeping aggregates in sync via triggers/custom functions, backfilling with migrations, and the trade-offs that hint at possible platform-level support.]]></summary>
        <content type="html"><![CDATA[Convex omits built-in aggregates because full-table scans don’t scale; the video shows how @convex-dev/aggregate (B-Tree powered) enables fast pagination, ranking, per-user stats, and randomization with fully reactive queries. It also covers keeping aggregates in sync via triggers/custom functions, backfilling with migrations, and the trade-offs that hint at possible platform-level support.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Build Streaming Chat Apps with Convex's Plug-and-Play Components]]></title>
        <id>https://stack.convex.dev/build-streaming-chat-app-with-persistent-text-streaming-component</id>
        <link href="https://stack.convex.dev/build-streaming-chat-app-with-persistent-text-streaming-component"/>
        <updated>2025-08-15T14:51:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how Convex Components simplify building ChatGPT-style streaming chat by eliminating WebSocket complexity through plug-and-play, reusable backend modules and React hooks.]]></summary>
        <content type="html"><![CDATA[Learn how Convex Components simplify building ChatGPT-style streaming chat by eliminating WebSocket complexity through plug-and-play, reusable backend modules and React hooks.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Authorization In Practice]]></title>
        <id>https://stack.convex.dev/authorization</id>
        <link href="https://stack.convex.dev/authorization"/>
        <updated>2025-08-07T23:32:20.998Z</updated>
        <summary type="html"><![CDATA[How to think about and implement authorization in your app. Think through each layers: clients, middleware, RBAC, RLS, and more. All with the power of code and abstractions.]]></summary>
        <content type="html"><![CDATA[How to think about and implement authorization in your app. Think through each layers: clients, middleware, RBAC, RLS, and more. All with the power of code and abstractions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Authentication"/>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How hard is it to migrate AWAY from Convex?]]></title>
        <id>https://stack.convex.dev/how-hard-is-it-to-migrate-away-from-convex</id>
        <link href="https://stack.convex.dev/how-hard-is-it-to-migrate-away-from-convex"/>
        <updated>2025-08-04T03:00:00.000Z</updated>
        <summary type="html"><![CDATA[The video walks through an experiment in “de-lock-in-ifying” a small Convex app: starting with the basic TanStack Start template, the author recreates Convex queries, mutations and actions as TanStack Start server functions; swaps Convex’s reactive data layer for React Query (with manual cache invalidation); and replaces Convex’s built-in cloud database with a self-hosted Postgres instance accessed via Drizzle ORM—eventually wrapping Drizzle in a Convex-style API so most original code can be copy-pasted. They also bolt on transactions, discuss substitutes for other Convex features (file storage, realtime, auth, scheduling, search, etc.), and note that exporting Convex data is straightforward. The upshot: you can migrate off Convex without huge code changes, but you trade Convex’s “batteries-included” simplicity for extra infrastructure to manage—so the easiest escape hatch is still running Convex in self-hosted mode.]]></summary>
        <content type="html"><![CDATA[The video walks through an experiment in “de-lock-in-ifying” a small Convex app: starting with the basic TanStack Start template, the author recreates Convex queries, mutations and actions as TanStack Start server functions; swaps Convex’s reactive data layer for React Query (with manual cache invalidation); and replaces Convex’s built-in cloud database with a self-hosted Postgres instance accessed via Drizzle ORM—eventually wrapping Drizzle in a Convex-style API so most original code can be copy-pasted. They also bolt on transactions, discuss substitutes for other Convex features (file storage, realtime, auth, scheduling, search, etc.), and note that exporting Convex data is straightforward. The upshot: you can migrate off Convex without huge code changes, but you trade Convex’s “batteries-included” simplicity for extra infrastructure to manage—so the easiest escape hatch is still running Convex in self-hosted mode.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lessons from Building an AI App Builder on Convex]]></title>
        <id>https://stack.convex.dev/lessons-from-building-an-ai-app-builder</id>
        <link href="https://stack.convex.dev/lessons-from-building-an-ai-app-builder"/>
        <updated>2025-07-31T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Over the past few months, we have built and grown Chef into the only AI app builder that knows backend. But, this process didn’t start with Chef. It started with building the Convex, the database that Chef is built on top of.]]></summary>
        <content type="html"><![CDATA[Over the past few months, we have built and grown Chef into the only AI app builder that knows backend. But, this process didn’t start with Chef. It started with building the Convex, the database that Chef is built on top of.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Chef"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why doesn't Convex have SELECT or COUNT?]]></title>
        <id>https://stack.convex.dev/why-doesn-t-convex-have-select-or-count</id>
        <link href="https://stack.convex.dev/why-doesn-t-convex-have-select-or-count"/>
        <updated>2025-07-29T02:01:00.000Z</updated>
        <summary type="html"><![CDATA[Why DOESNT Convex provide a “SELECT” or a “COUNT”? Ill walk you thtough it..]]></summary>
        <content type="html"><![CDATA[Why DOESNT Convex provide a “SELECT” or a “COUNT”? Ill walk you thtough it..]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[6 Steps Before Taking your Vibe-coded App to Production]]></title>
        <id>https://stack.convex.dev/vibe-coding-to-production</id>
        <link href="https://stack.convex.dev/vibe-coding-to-production"/>
        <updated>2025-07-25T16:31:00.000Z</updated>
        <summary type="html"><![CDATA[Using tools like Lovable, Bolt, and Chef to start your product journey is straightforward. Moving them to production is less straightforward. I discuss the six things I wish I knew before moving my vibe-coded app to prod.]]></summary>
        <content type="html"><![CDATA[Using tools like Lovable, Bolt, and Chef to start your product journey is straightforward. Moving them to production is less straightforward. I discuss the six things I wish I knew before moving my vibe-coded app to prod.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Chef"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Add Resend to your Convex App]]></title>
        <id>https://stack.convex.dev/convex-resend</id>
        <link href="https://stack.convex.dev/convex-resend"/>
        <updated>2025-07-19T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Integrate Resend into your Convex apps and participate in our Convex X Resend hackathon.]]></summary>
        <content type="html"><![CDATA[Integrate Resend into your Convex apps and participate in our Convex X Resend hackathon.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How I Vibe-Coded a Real Service Using Convex Chef]]></title>
        <id>https://stack.convex.dev/vibe-coding-a-full-stack-ai-video-generation-app-with-chef</id>
        <link href="https://stack.convex.dev/vibe-coding-a-full-stack-ai-video-generation-app-with-chef"/>
        <updated>2025-07-18T16:43:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how a developer used Convex Chef to vibe code a completely functional, full-stack AI video generation platform called Cinemartie. The project cost around $150 and took just hours to build, delivering 4x the efficiency compared to traditional manual development.]]></summary>
        <content type="html"><![CDATA[Learn how a developer used Convex Chef to vibe code a completely functional, full-stack AI video generation platform called Cinemartie. The project cost around $150 and took just hours to build, delivering 4x the efficiency compared to traditional manual development.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Chef"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Migrating data from Postgres to Convex]]></title>
        <id>https://stack.convex.dev/migrate-data-postgres-to-convex</id>
        <link href="https://stack.convex.dev/migrate-data-postgres-to-convex"/>
        <updated>2025-07-08T19:37:45.297Z</updated>
        <summary type="html"><![CDATA[This guide will help you migrate data to Convex from Postgres on any provider (Supabase, Neon, RDS, etc).]]></summary>
        <content type="html"><![CDATA[This guide will help you migrate data to Convex from Postgres on any provider (Supabase, Neon, RDS, etc).]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Database"/>
        <category label="Schemas"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Agents (and humans) do better with good abstractions]]></title>
        <id>https://stack.convex.dev/ai-gents-humans-good-abstractions</id>
        <link href="https://stack.convex.dev/ai-gents-humans-good-abstractions"/>
        <updated>2025-06-03T16:21:11.473Z</updated>
        <summary type="html"><![CDATA[Chef by Convex builds real full-stack apps in one prompt—Notion, Slack, and more.
It works because Convex’s abstractions are simple enough for both humans and AI to use.
Built-in features and plug-and-play components let developers skip boilerplate and ship fast.]]></summary>
        <content type="html"><![CDATA[Chef by Convex builds real full-stack apps in one prompt—Notion, Slack, and more.
It works because Convex’s abstractions are simple enough for both humans and AI to use.
Built-in features and plug-and-play components let developers skip boilerplate and ship fast.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Streaming vs. Syncing: Why Your Chat App Is Burning Bandwidth]]></title>
        <id>https://stack.convex.dev/streaming-vs-syncing-why-your-chat-app-is-burning-bandwidth</id>
        <link href="https://stack.convex.dev/streaming-vs-syncing-why-your-chat-app-is-burning-bandwidth"/>
        <updated>2025-05-23T21:22:00.000Z</updated>
        <summary type="html"><![CDATA[Building an AI chat app? Convex’s Persistent Text Streaming keeps conversations flowing—even across page reloads or tab switches—by storing and syncing chat data in real time. This video shows how to stream responses live, reduce bandwidth waste, and boost performance using Convex’s serverless backend. Say goodbye to broken chat experiences and hello to seamless, reliable interactions.]]></summary>
        <content type="html"><![CDATA[Building an AI chat app? Convex’s Persistent Text Streaming keeps conversations flowing—even across page reloads or tab switches—by storing and syncing chat data in real time. This video shows how to stream responses live, reduce bandwidth waste, and boost performance using Convex’s serverless backend. Say goodbye to broken chat experiences and hello to seamless, reliable interactions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why I picked Convex over Firebase, Supabase, and Neon for my app]]></title>
        <id>https://stack.convex.dev/why-choose-convex-database-for-backend</id>
        <link href="https://stack.convex.dev/why-choose-convex-database-for-backend"/>
        <updated>2025-05-23T20:19:00.000Z</updated>
        <summary type="html"><![CDATA[Building a language learning app meant I needed a backend that could handle realtime sync, multilingual support, and type-safe code. I didn’t start with Convex—I evaluated Firebase, PlanetScale, Supabase, Neon, and others first. Each had tradeoffs: Firebase felt disjointed and buggy; PlanetScale lacked international support; Supabase leaned too hard into SQL; and Neon made realtime too complicated.

What made Convex different was how little backend glue I needed to write. Realtime sync just worked. TypeScript felt native. My frontend felt alive without hacks. It felt like hiring a backend team on day one. A year later, I’m still shipping fast—and glad I made the switch.

This post breaks down what I found, what failed, and why Convex ended up being the best database for a modern TypeScript app like LanguageHopper.]]></summary>
        <content type="html"><![CDATA[Building a language learning app meant I needed a backend that could handle realtime sync, multilingual support, and type-safe code. I didn’t start with Convex—I evaluated Firebase, PlanetScale, Supabase, Neon, and others first. Each had tradeoffs: Firebase felt disjointed and buggy; PlanetScale lacked international support; Supabase leaned too hard into SQL; and Neon made realtime too complicated.

What made Convex different was how little backend glue I needed to write. Realtime sync just worked. TypeScript felt native. My frontend felt alive without hacks. It felt like hiring a backend team on day one. A year later, I’m still shipping fast—and glad I made the switch.

This post breaks down what I found, what failed, and why Convex ended up being the best database for a modern TypeScript app like LanguageHopper.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude 4 is here but is is good at Convex?]]></title>
        <id>https://stack.convex.dev/claude-4-is-here-but-is-is-good-at-convex</id>
        <link href="https://stack.convex.dev/claude-4-is-here-but-is-is-good-at-convex"/>
        <updated>2025-05-22T21:14:00.000Z</updated>
        <summary type="html"><![CDATA[Claude 4 is here, and developers are putting it to the test. This video skips the benchmarks and dives into real-world builds—like an Instagram clone and a multiplayer Tic-Tac-Toe app—using Claude 4 with Convex and Chef. If you’re deciding between Claude 4 and 3.5 for agentic codegen, backend setup, or Convex-based workflows, this walkthrough shows the good, the bad, and the frustrating.

From schema generation to real-time uploads and env var debugging, you’ll see where Claude 4 outperforms—and where Claude 3.5 still holds its ground. Ideal for devs building modern fullstack apps who want to see Claude in action, not just theory.]]></summary>
        <content type="html"><![CDATA[Claude 4 is here, and developers are putting it to the test. This video skips the benchmarks and dives into real-world builds—like an Instagram clone and a multiplayer Tic-Tac-Toe app—using Claude 4 with Convex and Chef. If you’re deciding between Claude 4 and 3.5 for agentic codegen, backend setup, or Convex-based workflows, this walkthrough shows the good, the bad, and the frustrating.

From schema generation to real-time uploads and env var debugging, you’ll see where Claude 4 outperforms—and where Claude 3.5 still holds its ground. Ideal for devs building modern fullstack apps who want to see Claude in action, not just theory.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex vs Firebase: A Developer's Complete Guide]]></title>
        <id>https://stack.convex.dev/convex-vs-firebase-a-developer-s-complete-guide</id>
        <link href="https://stack.convex.dev/convex-vs-firebase-a-developer-s-complete-guide"/>
        <updated>2025-05-13T21:20:00.000Z</updated>
        <summary type="html"><![CDATA[Choosing a backend? This video breaks down Firebase vs Convex with a clear developer lens. Whether you’re building your first app or optimizing for AI workflows, you’ll get a side-by-side view of how these two platforms really stack up.

You’ll see how Firebase’s flexible NoSQL setup compares to Convex’s structured, type-safe model—and why that matters for scaling, security, and speed. From real-time syncing and server-side queries to access control, authentication, and vendor lock-in, this video covers it all.

Ideal for developers who want a modern, AI-ready backend without sacrificing performance or control.]]></summary>
        <content type="html"><![CDATA[Choosing a backend? This video breaks down Firebase vs Convex with a clear developer lens. Whether you’re building your first app or optimizing for AI workflows, you’ll get a side-by-side view of how these two platforms really stack up.

You’ll see how Firebase’s flexible NoSQL setup compares to Convex’s structured, type-safe model—and why that matters for scaling, security, and speed. From real-time syncing and server-side queries to access control, authentication, and vendor lock-in, this video covers it all.

Ideal for developers who want a modern, AI-ready backend without sacrificing performance or control.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[What is Convex & Why Should Developers Care?]]></title>
        <id>https://stack.convex.dev/what-is-convex-and-why-should-developers-care</id>
        <link href="https://stack.convex.dev/what-is-convex-and-why-should-developers-care"/>
        <updated>2025-05-09T21:17:00.000Z</updated>
        <summary type="html"><![CDATA[Looking for a backend that feels built for how modern developers actually code? Convex is quickly becoming a go-to choice in 2025 for full-stack devs shipping real-time, collaborative apps without the backend overhead.

This video breaks down what Convex is and how it works—from schema design to reactivity. You’ll see how Convex blends TypeScript safety, live queries, serverless functions, and a schema-flexible database into one cohesive developer experience.

Whether you’re building a multiplayer game, a live doc editor, or a chat app, this walkthrough helps you figure out if Convex is the right fit—and how it stacks up to Firebase, Supabase, or Lambda-based setups.]]></summary>
        <content type="html"><![CDATA[Looking for a backend that feels built for how modern developers actually code? Convex is quickly becoming a go-to choice in 2025 for full-stack devs shipping real-time, collaborative apps without the backend overhead.

This video breaks down what Convex is and how it works—from schema design to reactivity. You’ll see how Convex blends TypeScript safety, live queries, serverless functions, and a schema-flexible database into one cohesive developer experience.

Whether you’re building a multiplayer game, a live doc editor, or a chat app, this walkthrough helps you figure out if Convex is the right fit—and how it stacks up to Firebase, Supabase, or Lambda-based setups.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Chef Cookbook: Tips For Working with AI App Builders]]></title>
        <id>https://stack.convex.dev/chef-cookbook-tips-working-with-ai-app-builders</id>
        <link href="https://stack.convex.dev/chef-cookbook-tips-working-with-ai-app-builders"/>
        <updated>2025-05-05T20:31:36.164Z</updated>
        <summary type="html"><![CDATA[Learn how to write better apps using AI app builders like Chef by Convex with these five expert tips from Jordan Hunt, prompt engineer at Convex. This guide covers how to build simple MVPs, keep prompts under 300 words, provide clear UI and design instructions, use AI tools like ChatGPT to refine your prompts, and recover quickly when things go off track. Includes real app examples like a habit tracker, to-do list, and finance tracker—all built with Chef. Perfect for developers building full-stack apps with AI.]]></summary>
        <content type="html"><![CDATA[Learn how to write better apps using AI app builders like Chef by Convex with these five expert tips from Jordan Hunt, prompt engineer at Convex. This guide covers how to build simple MVPs, keep prompts under 300 words, provide clear UI and design instructions, use AI tools like ChatGPT to refine your prompts, and recover quickly when things go off track. Includes real app examples like a habit tracker, to-do list, and finance tracker—all built with Chef. Perfect for developers building full-stack apps with AI.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="AI"/>
        <category label="Chef"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Argument Validation without Repetition]]></title>
        <id>https://stack.convex.dev/argument-validation-without-repetition</id>
        <link href="https://stack.convex.dev/argument-validation-without-repetition"/>
        <updated>2025-05-05T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[A few more advanced techniques & helpers to further reduce duplication and accelerate your Convex workflow.]]></summary>
        <content type="html"><![CDATA[A few more advanced techniques & helpers to further reduce duplication and accelerate your Convex workflow.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="TypeScript"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Which LLM writes the best code? Convex Chef model comparison]]></title>
        <id>https://stack.convex.dev/chef-model-exploration</id>
        <link href="https://stack.convex.dev/chef-model-exploration"/>
        <updated>2025-04-28T21:59:01.104Z</updated>
        <summary type="html"><![CDATA[Convex compared Claude 3.5 Sonnet, GPT-4.1, and Gemini 2.5 Pro to see which LLM works best for building full-stack apps with Convex Chef, the new AI Agent app developer tool. Claude stood out for its precise backend coding and function calling, while Gemini made impressive UIs, and GPT offered solid speed and value.]]></summary>
        <content type="html"><![CDATA[Convex compared Claude 3.5 Sonnet, GPT-4.1, and Gemini 2.5 Pro to see which LLM works best for building full-stack apps with Convex Chef, the new AI Agent app developer tool. Claude stood out for its precise backend coding and function calling, while Gemini made impressive UIs, and GPT offered solid speed and value.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="AI"/>
        <category label="Chef"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Set Up Transactional Email in Convex with Bluefox and AWS SES]]></title>
        <id>https://stack.convex.dev/bluefox-convex-developers-email-integration-guide</id>
        <link href="https://stack.convex.dev/bluefox-convex-developers-email-integration-guide"/>
        <updated>2025-04-23T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to integrate Bluefox—a modern developer-first email API built on AWS SES—with Convex, the reactive backend database. This guide covers everything from sending transactional and triggered emails to setting up real-time webhooks and preparing for production. You’ll walk away knowing how to configure your environment, build reusable email clients, handle errors safely, and manage multiple deployment environments with best practices for SES authentication, bounce handling, and email tracking.]]></summary>
        <content type="html"><![CDATA[Learn how to integrate Bluefox—a modern developer-first email API built on AWS SES—with Convex, the reactive backend database. This guide covers everything from sending transactional and triggered emails to setting up real-time webhooks and preparing for production. You’ll walk away knowing how to configure your environment, build reusable email clients, handle errors safely, and manage multiple deployment environments with best practices for SES authentication, bounce handling, and email tracking.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Trying out Convex with a single command]]></title>
        <id>https://stack.convex.dev/anonymous-development</id>
        <link href="https://stack.convex.dev/anonymous-development"/>
        <updated>2025-04-09T16:00:13.242Z</updated>
        <summary type="html"><![CDATA[You can now use Convex with a single command without needing to set up a Convex account. This means it’s even easier to persuade your friends to check out Convex and to share an app that others can download and run for themselves.]]></summary>
        <content type="html"><![CDATA[You can now use Convex with a single command without needing to set up a Convex account. This means it’s even easier to persuade your friends to check out Convex and to share an app that others can download and run for themselves.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agents Need Durable Workflows and Strong Guarantees]]></title>
        <id>https://stack.convex.dev/durable-workflows-and-strong-guarantees</id>
        <link href="https://stack.convex.dev/durable-workflows-and-strong-guarantees"/>
        <updated>2025-04-08T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[Agents rely on long-lived workflows, but when happens when they fail midway through? Here are the tools you need to manage correctness and reliability: transactions, idempotency, retries, durable functions, journaling, and state machines. The missing abstraction layer for agentic is durable workflows, which bring them all together.]]></summary>
        <content type="html"><![CDATA[Agents rely on long-lived workflows, but when happens when they fail midway through? Here are the tools you need to manage correctness and reliability: transactions, idempotency, retries, durable functions, journaling, and state machines. The missing abstraction layer for agentic is durable workflows, which bring them all together.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="AI"/>
        <category label="Production"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Agents with Built-in Memory ]]></title>
        <id>https://stack.convex.dev/ai-agents</id>
        <link href="https://stack.convex.dev/ai-agents"/>
        <updated>2025-04-08T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[With this new backend component, augment Agents to automatically save and search message history per-thread, providing realtime results across multiple tabs and users. Use it with the Workflow component to run reliably with retries and durability across server restarts.]]></summary>
        <content type="html"><![CDATA[With this new backend component, augment Agents to automatically save and search message history per-thread, providing realtime results across multiple tabs and users. Use it with the Workflow component to run reliably with retries and durability across server restarts.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Patterns"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Crafty Hacks with Convex MCP]]></title>
        <id>https://stack.convex.dev/mcp-ga</id>
        <link href="https://stack.convex.dev/mcp-ga"/>
        <updated>2025-04-07T13:18:00.000Z</updated>
        <summary type="html"><![CDATA[Convex MCP Server is now generally available, enabling AI agents to query your data, run functions, and automate complex tasks. Here are two crafty use cases we've already uncovered...]]></summary>
        <content type="html"><![CDATA[Convex MCP Server is now generally available, enabling AI agents to query your data, run functions, and automate complex tasks. Here are two crafty use cases we've already uncovered...]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Tech that Convex replaced for ClarityText]]></title>
        <id>https://stack.convex.dev/beyond-sql-how-convex-simplifies-type-safety-sync-with-convex</id>
        <link href="https://stack.convex.dev/beyond-sql-how-convex-simplifies-type-safety-sync-with-convex"/>
        <updated>2025-04-03T19:58:06.523Z</updated>
        <summary type="html"><![CDATA[Convex might look like just a database, but for modern app developers, it's a full backend-as-a-service platform that replaces the complexity of stitching together ORMs, caching, rate limiting, realtime sync, and CI/CD. In this post, a startup founder walks through how they used Convex to build ClarityText—an AI-powered chat knowledge base—and explains why Convex delivers faster MVPs, deeper type safety, and a seamless developer experience without third-party services like Prisma, Redis, or Firebase. Perfect for developers evaluating backend choices in 2024 and beyond.]]></summary>
        <content type="html"><![CDATA[Convex might look like just a database, but for modern app developers, it's a full backend-as-a-service platform that replaces the complexity of stitching together ORMs, caching, rate limiting, realtime sync, and CI/CD. In this post, a startup founder walks through how they used Convex to build ClarityText—an AI-powered chat knowledge base—and explains why Convex delivers faster MVPs, deeper type safety, and a seamless developer experience without third-party services like Prisma, Redis, or Firebase. Perfect for developers evaluating backend choices in 2024 and beyond.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Real-World TypeScript App with Convex and Expo]]></title>
        <id>https://stack.convex.dev/building-a-typescript-quiz-app-with-convex-and-expo</id>
        <link href="https://stack.convex.dev/building-a-typescript-quiz-app-with-convex-and-expo"/>
        <updated>2025-03-30T14:44:00.000Z</updated>
        <summary type="html"><![CDATA[Martie is a TypeScript quiz app built with Convex and Expo that helps users build general knowledge through daily trivia questions and review past quizzes, deployed to both app stores in just 1.5 months using Email OTP authentication, multilingual support, and real-time data syncing.]]></summary>
        <content type="html"><![CDATA[Martie is a TypeScript quiz app built with Convex and Expo that helps users build general knowledge through daily trivia questions and review past quizzes, deployed to both app stores in just 1.5 months using Email OTP authentication, multilingual support, and real-time data syncing.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reimplementing Mastra Workflows: Lessons Learned]]></title>
        <id>https://stack.convex.dev/reimplementing-mastra-regrets</id>
        <link href="https://stack.convex.dev/reimplementing-mastra-regrets"/>
        <updated>2025-03-28T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[I reimplemented Mastra’s agentic workflows with durable functions in Convex, and it was the wrong decision. Look at three common strategies (reimplementation, API wrapping, and “blessed” plugin paths), along with learnings along the way and reflections on what I’d do differently next time. TL;DR: Do less, do it smarter, and prototype faster.]]></summary>
        <content type="html"><![CDATA[I reimplemented Mastra’s agentic workflows with durable functions in Convex, and it was the wrong decision. Look at three common strategies (reimplementation, API wrapping, and “blessed” plugin paths), along with learnings along the way and reflections on what I’d do differently next time. TL;DR: Do less, do it smarter, and prototype faster.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Merging Streams of Convex data]]></title>
        <id>https://stack.convex.dev/merging-streams-of-convex-data</id>
        <link href="https://stack.convex.dev/merging-streams-of-convex-data"/>
        <updated>2025-03-21T23:42:58.792Z</updated>
        <summary type="html"><![CDATA[New convex-helpers are available now for fetching streams of documents, merging them together, filtering them them out, and paginating the results. With these helpers, you can replicate patterns you may know from SQL: UNION ALL, JOIN, DISTINCT, GROUP BY, and WHERE clauses where index fields are skipped.]]></summary>
        <content type="html"><![CDATA[New convex-helpers are available now for fetching streams of documents, merging them together, filtering them them out, and paginating the results. With these helpers, you can replicate patterns you may know from SQL: UNION ALL, JOIN, DISTINCT, GROUP BY, and WHERE clauses where index fields are skipped.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <category label="Patterns"/>
        <category label="Advanced"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex Evals: Behind the scenes of AI coding with Convex]]></title>
        <id>https://stack.convex.dev/convex-evals</id>
        <link href="https://stack.convex.dev/convex-evals"/>
        <updated>2025-03-19T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[AI coding is here: The most productive developers are leveraging AI to speed up their workflows. This ranges from asking models questions about system design to letting AI take the driver's seat with tools like Cursor Composer.]]></summary>
        <content type="html"><![CDATA[AI coding is here: The most productive developers are leveraging AI to speed up their workflows. This ranges from asking models questions about system design to letting AI take the driver's seat with tools like Cursor Composer.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Translate SQL into Convex Queries]]></title>
        <id>https://stack.convex.dev/translate-sql-into-convex-queries</id>
        <link href="https://stack.convex.dev/translate-sql-into-convex-queries"/>
        <updated>2025-03-19T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Here’s a cheatsheet with examples of conversions between SQL queries and Convex queries. This article is geared towards developers (and LLMs) who have familiarity with SQL and want to translate those familiar patterns into Convex queries. You'll learn how to `UNION`, `JOIN`, `DISTINCT`, do `WHERE` clauses, and `SELECT` fields.]]></summary>
        <content type="html"><![CDATA[Here’s a cheatsheet with examples of conversions between SQL queries and Convex queries. This article is geared towards developers (and LLMs) who have familiarity with SQL and want to translate those familiar patterns into Convex queries. You'll learn how to `UNION`, `JOIN`, `DISTINCT`, do `WHERE` clauses, and `SELECT` fields.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[ How to Use convex-panel to Integrate a Custom Convex Dashboard Into Your Dev Environment]]></title>
        <id>https://stack.convex.dev/convex-panel-bringing-the-convex-dashboard-dev-environment</id>
        <link href="https://stack.convex.dev/convex-panel-bringing-the-convex-dashboard-dev-environment"/>
        <updated>2025-03-18T22:00:31.112Z</updated>
        <summary type="html"><![CDATA[Convex Panel simplifies development by integrating Convex’s powerful dashboard directly into the dev environment, eliminating the need to switch between browser tabs. Built as a React component, it provides real-time logs, table editing, and performance insights seamlessly within your workflow. This tool enhances productivity, streamlines debugging, and optimizes backend management for developers using Convex.]]></summary>
        <content type="html"><![CDATA[Convex Panel simplifies development by integrating Convex’s powerful dashboard directly into the dev environment, eliminating the need to switch between browser tabs. Built as a React component, it provides real-time logs, table editing, and performance insights seamlessly within your workflow. This tool enhances productivity, streamlines debugging, and optimizes backend management for developers using Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[MongoDB to Convex: A Step-by-Step Data Migration Script]]></title>
        <id>https://stack.convex.dev/mongodb-to-convex-a-step-by-step-data-migration-script</id>
        <link href="https://stack.convex.dev/mongodb-to-convex-a-step-by-step-data-migration-script"/>
        <updated>2025-03-10T22:48:31.327Z</updated>
        <summary type="html"><![CDATA[Moving data between databases is never fun, but I needed to get 2 million MongoDB documents into Convex without losing my mind. This post walks through my migration script, covering everything from connecting databases to handling schema changes, batch processing, and error handling. If you’re thinking about moving from MongoDB to Convex, consider this your survival guide—coffee highly recommended! ]]></summary>
        <content type="html"><![CDATA[Moving data between databases is never fun, but I needed to get 2 million MongoDB documents into Convex without losing my mind. This post walks through my migration script, covering everything from connecting databases to handling schema changes, batch processing, and error handling. If you’re thinking about moving from MongoDB to Convex, consider this your survival guide—coffee highly recommended! ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Authentication Best Practices: Convex, Clerk and Next.js]]></title>
        <id>https://stack.convex.dev/authentication-best-practices-convex-clerk-and-nextjs</id>
        <link href="https://stack.convex.dev/authentication-best-practices-convex-clerk-and-nextjs"/>
        <updated>2025-03-06T18:45:35.644Z</updated>
        <summary type="html"><![CDATA[Authentication issues in real-time applications can cause security risks, especially when client-side queries run before validation. Ensuring authentication at the server (Next.js middleware), client (useConvexAuth()), and database (Convex functions) helps prevent unauthorized access. Using middleware, enforcing authentication in Convex functions, and leveraging custom hooks improves security and performance.]]></summary>
        <content type="html"><![CDATA[Authentication issues in real-time applications can cause security risks, especially when client-side queries run before validation. Ensuring authentication at the server (Next.js middleware), client (useConvexAuth()), and database (Convex functions) helps prevent unauthorized access. Using middleware, enforcing authentication in Convex functions, and leveraging custom hooks improves security and performance.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex MCP Server]]></title>
        <id>https://stack.convex.dev/convex-mcp-server</id>
        <link href="https://stack.convex.dev/convex-mcp-server"/>
        <updated>2025-03-04T13:40:00.000Z</updated>
        <summary type="html"><![CDATA[Convex now supports a powerful MCP server that lets you introspect your deployment's state, run functions, and read and write data.]]></summary>
        <content type="html"><![CDATA[Convex now supports a powerful MCP server that lets you introspect your deployment's state, run functions, and read and write data.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Fullstack-Bench]]></title>
        <id>https://stack.convex.dev/introducing-fullstack-bench</id>
        <link href="https://stack.convex.dev/introducing-fullstack-bench"/>
        <updated>2025-02-23T17:20:00.000Z</updated>
        <summary type="html"><![CDATA[Coding agents can do more autonomously when they write code that has tight, automatic feedback loops; use systems that express everything in standard, procedural code; and have access to strong, foolproof abstractions.]]></summary>
        <content type="html"><![CDATA[Coding agents can do more autonomously when they write code that has tight, automatic feedback loops; use systems that express everything in standard, procedural code; and have access to strong, foolproof abstractions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Matrix: Building a real-time RPG game with Convex ]]></title>
        <id>https://stack.convex.dev/matrix-building-a-real-time-rpg-game-with-convex</id>
        <link href="https://stack.convex.dev/matrix-building-a-real-time-rpg-game-with-convex"/>
        <updated>2025-02-20T00:55:46.353Z</updated>
        <summary type="html"><![CDATA[Matrix is a real-time RPG for language learning, using Convex for live updates and AI for translations. Players chat with nearby users on a shared map, leveraging a simple Convex backend for real-time interactions. ]]></summary>
        <content type="html"><![CDATA[Matrix is a real-time RPG for language learning, using Convex for live updates and AI for translations. Players chat with nearby users on a shared map, leveraging a simple Convex backend for real-time interactions. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Types and Validators: A Convex Cookbook]]></title>
        <id>https://stack.convex.dev/types-cookbook</id>
        <link href="https://stack.convex.dev/types-cookbook"/>
        <updated>2025-02-15T01:53:00.000Z</updated>
        <summary type="html"><![CDATA[It can be tough to wrangle types to behave how you want them to. Thankfully, Convex was designed to make the experience with types perfect. Learn why that's the case here.]]></summary>
        <content type="html"><![CDATA[It can be tough to wrangle types to behave how you want them to. Thankfully, Convex was designed to make the experience with types perfect. Learn why that's the case here.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="TypeScript"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Self-Hosting with Convex: Everything You Need to Know]]></title>
        <id>https://stack.convex.dev/self-hosted-develop-and-deploy</id>
        <link href="https://stack.convex.dev/self-hosted-develop-and-deploy"/>
        <updated>2025-02-13T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to self-host Convex, the reactive database and backend. This guide covers setup with Docker, Fly.io, and Neon.tech, plus pros and cons of self-hosting vs. cloud hosting.]]></summary>
        <content type="html"><![CDATA[Learn how to self-host Convex, the reactive database and backend. This guide covers setup with Docker, Fly.io, and Neon.tech, plus pros and cons of self-hosting vs. cloud hosting.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Advanced"/>
        <category label="Open-Source"/>
        <category label="Production"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Setting Up Cloudflare Pages for Convex Preview Deployments: A Step-by-Step Guide]]></title>
        <id>https://stack.convex.dev/setting-up-cloudflare-pages-for-convex-deployments</id>
        <link href="https://stack.convex.dev/setting-up-cloudflare-pages-for-convex-deployments"/>
        <updated>2025-02-07T00:32:28.312Z</updated>
        <summary type="html"><![CDATA[ClarityText uses Cloudflare Pages for Convex deployments on Language Hopper, leveraging preview deployments, Git integration, and Node.js support. In this guide, Atul Raghuvanshi and Convex Champion Matt Luo walk through setup, including team onboarding, build scripts, Git configuration, and troubleshooting.]]></summary>
        <content type="html"><![CDATA[ClarityText uses Cloudflare Pages for Convex deployments on Language Hopper, leveraging preview deployments, Git integration, and Node.js support. In this guide, Atul Raghuvanshi and Convex Champion Matt Luo walk through setup, including team onboarding, build scripts, Git configuration, and troubleshooting.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[ Databased: Why Most Content Doesn't Work ft. Web Dev Cody]]></title>
        <id>https://stack.convex.dev/databased-webdevcody</id>
        <link href="https://stack.convex.dev/databased-webdevcody"/>
        <updated>2025-01-29T20:04:00.583Z</updated>
        <summary type="html"><![CDATA[WebDevCody drops into Databased to discuss content creation, AI, and sponsor relationships.]]></summary>
        <content type="html"><![CDATA[WebDevCody drops into Databased to discuss content creation, AI, and sponsor relationships.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[From Trivia to TypeScript: QuiP's Domain-Driven Development with Convex]]></title>
        <id>https://stack.convex.dev/building-quip-trivia-game</id>
        <link href="https://stack.convex.dev/building-quip-trivia-game"/>
        <updated>2025-01-29T00:49:16.307Z</updated>
        <summary type="html"><![CDATA[Discover how the creation of QuiP, an online trivia league, led to a deeper understanding of domain-driven development using Convex. This blog explores the importance of building a shared language with your community to design applications, covering everything from backend modeling to crafting user-friendly interfaces.  ]]></summary>
        <content type="html"><![CDATA[Discover how the creation of QuiP, an online trivia league, led to a deeper understanding of domain-driven development using Convex. This blog explores the importance of building a shared language with your community to design applications, covering everything from backend modeling to crafting user-friendly interfaces.  ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why Convex Queries are the Ultimate Form of Derived State]]></title>
        <id>https://stack.convex.dev/why-convex-queries-are-the-ultimate-form-of-derived-state</id>
        <link href="https://stack.convex.dev/why-convex-queries-are-the-ultimate-form-of-derived-state"/>
        <updated>2025-01-27T22:34:14.618Z</updated>
        <summary type="html"><![CDATA[After years of wrestling with state management, I've found myself excited by how Convex queries have simplified the way I think about derived state. Instead of juggling complex state libraries and websocket implementations, Convex offers a refreshingly straightforward approach: just declare what data you need, and it stays synchronized across all clients automatically. It's made me wonder if we've been overcomplicating things all along.]]></summary>
        <content type="html"><![CDATA[After years of wrestling with state management, I've found myself excited by how Convex queries have simplified the way I think about derived state. Instead of juggling complex state libraries and websocket implementations, Convex offers a refreshingly straightforward approach: just declare what data you need, and it stays synchronized across all clients automatically. It's made me wonder if we've been overcomplicating things all along.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Optimize Transaction Throughput: 3 Patterns for Scaling with Convex and ACID Databases]]></title>
        <id>https://stack.convex.dev/high-throughput-mutations-via-precise-queries</id>
        <link href="https://stack.convex.dev/high-throughput-mutations-via-precise-queries"/>
        <updated>2025-01-23T23:35:21.292Z</updated>
        <summary type="html"><![CDATA[Explore techniques to improve transaction throughput and concurrency in ACID databases by reducing conflicts and optimizing database reads. This guide covers patterns like Queue, Hot and Cold Tables, and Predicate Locking with clear examples using Convex, providing developers with tools to handle high-throughput workflows effectively.]]></summary>
        <content type="html"><![CDATA[Explore techniques to improve transaction throughput and concurrency in ACID databases by reducing conflicts and optimizing database reads. This guide covers patterns like Queue, Hot and Cold Tables, and Predicate Locking with clear examples using Convex, providing developers with tools to handle high-throughput workflows effectively.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[What You Missed in 2024 in the World of Databases, with Andy Pavlo]]></title>
        <id>https://stack.convex.dev/databased-12</id>
        <link href="https://stack.convex.dev/databased-12"/>
        <updated>2025-01-23T22:03:00.000Z</updated>
        <summary type="html"><![CDATA[On this episode of Convex's podcast, Databased, James interviews Andy Pavlo to get his thoughts on all of the big Database trends of 2024.]]></summary>
        <content type="html"><![CDATA[On this episode of Convex's podcast, Databased, James interviews Andy Pavlo to get his thoughts on all of the big Database trends of 2024.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Podcast"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building an Advanced AI Agent with Next.js 15, Convex, and LangChain: A Step-by-Step Guide]]></title>
        <id>https://stack.convex.dev/build-ai-agent-assistant-tools-nextjs15</id>
        <link href="https://stack.convex.dev/build-ai-agent-assistant-tools-nextjs15"/>
        <updated>2025-01-23T00:45:14.994Z</updated>
        <summary type="html"><![CDATA[Sonny Sangha’s YouTube video demonstrates how to build an AI agent using Next.js 15, Convex, LangChain, Clerk, and IBM wxflows. The tutorial covers creating a secure and interactive chat application with real-time updates, Tool integration, and optimized performance using Convex for backend data management. With features like user authentication via Clerk, dynamic data handling through wxflows, and prompt caching with Claude 3.5 Sonnet, the video provides a detailed guide for developers looking to implement cutting-edge AI capabilities in their projects.]]></summary>
        <content type="html"><![CDATA[Sonny Sangha’s YouTube video demonstrates how to build an AI agent using Next.js 15, Convex, LangChain, Clerk, and IBM wxflows. The tutorial covers creating a secure and interactive chat application with real-time updates, Tool integration, and optimized performance using Convex for backend data management. With features like user authentication via Clerk, dynamic data handling through wxflows, and prompt caching with Claude 3.5 Sonnet, the video provides a detailed guide for developers looking to implement cutting-edge AI capabilities in their projects.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Shop Talk: Building an AI-Powered Voice-Controlled Shopping Agent with Daily Bots and Convex]]></title>
        <id>https://stack.convex.dev/shop-talk-building-a-voice-controlled-shopping-list-app-with-daily-bots-and-convex</id>
        <link href="https://stack.convex.dev/shop-talk-building-a-voice-controlled-shopping-list-app-with-daily-bots-and-convex"/>
        <updated>2025-01-10T00:48:46.312Z</updated>
        <summary type="html"><![CDATA[A step-by-step guild using daily bots open-source real-time voice and video AI cloud technology to build an AI real-time shopping list app—all controlled by voice. ]]></summary>
        <content type="html"><![CDATA[A step-by-step guild using daily bots open-source real-time voice and video AI cloud technology to build an AI real-time shopping list app—all controlled by voice. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex Cookbook: Dynamic Query Builders]]></title>
        <id>https://stack.convex.dev/dynamic-query-builders</id>
        <link href="https://stack.convex.dev/dynamic-query-builders"/>
        <updated>2025-01-07T17:40:00.000Z</updated>
        <summary type="html"><![CDATA[You can write a Convex query whose structure -- which index/order/filters to apply, if any -- depends on runtime factors. This article gives a recipe for building queries dynamically.]]></summary>
        <content type="html"><![CDATA[You can write a Convex query whose structure -- which index/order/filters to apply, if any -- depends on runtime factors. This article gives a recipe for building queries dynamically.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Database"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[6 Tips for improving your Cursor Composer and Convex Workflow]]></title>
        <id>https://stack.convex.dev/6-tips-for-improving-your-cursor-composer-and-convex-workflow</id>
        <link href="https://stack.convex.dev/6-tips-for-improving-your-cursor-composer-and-convex-workflow"/>
        <updated>2025-01-06T22:00:44.270Z</updated>
        <summary type="html"><![CDATA[After much experimentation I have found some good ways to improve the coding experience when using Cursor and Convex. In this article I share 6 tips to improve your workflow.]]></summary>
        <content type="html"><![CDATA[After much experimentation I have found some good ways to improve the coding experience when using Cursor and Convex. In this article I share 6 tips to improve your workflow.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Schedule AI Content Creation Using Convex]]></title>
        <id>https://stack.convex.dev/how-to-schedule-ai-content-creation-using-convex</id>
        <link href="https://stack.convex.dev/how-to-schedule-ai-content-creation-using-convex"/>
        <updated>2024-12-28T04:27:00.000Z</updated>
        <summary type="html"><![CDATA[Imagine your app generating fresh content every minute—without you lifting a finger. That’s what Convex Cron makes possible. In this guide, you’ll set up a system to automate Q&A generation with ChatGPT.]]></summary>
        <content type="html"><![CDATA[Imagine your app generating fresh content every minute—without you lifting a finger. That’s what Convex Cron makes possible. In this guide, you’ll set up a system to automate Q&A generation with ChatGPT.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tutorial: How I added GitHub and npm stat counters to TanStack.com]]></title>
        <id>https://stack.convex.dev/tanstack-real-time-github-npm-stat-counter</id>
        <link href="https://stack.convex.dev/tanstack-real-time-github-npm-stat-counter"/>
        <updated>2024-12-23T21:20:58.792Z</updated>
        <summary type="html"><![CDATA[The tutorial "How I added GitHub and npm stat counters to TanStack.com" by Convex Champion Shawn Erquhart details how Convex automates the integration of live GitHub and npm statistics on the TanStack.com website. It showcases data fetching, database optimization, and real-time updates through APIs, web scraping, and scheduled jobs.]]></summary>
        <content type="html"><![CDATA[The tutorial "How I added GitHub and npm stat counters to TanStack.com" by Convex Champion Shawn Erquhart details how Convex automates the integration of live GitHub and npm statistics on the TanStack.com website. It showcases data fetching, database optimization, and real-time updates through APIs, web scraping, and scheduled jobs.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building AI Chat with Convex and ChatGPT]]></title>
        <id>https://stack.convex.dev/real-time-ai-chat-with-convex-and-chatgpt</id>
        <link href="https://stack.convex.dev/real-time-ai-chat-with-convex-and-chatgpt"/>
        <updated>2024-12-21T04:12:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to create real-time conversations between users and ChatGPT using Convex. You’ll design schemas, sync data automatically, and paginate chat history like a pro.]]></summary>
        <content type="html"><![CDATA[Learn how to create real-time conversations between users and ChatGPT using Convex. You’ll design schemas, sync data automatically, and paginate chat history like a pro.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Add a collaborative document editor to your app]]></title>
        <id>https://stack.convex.dev/add-a-collaborative-document-editor-to-your-app</id>
        <link href="https://stack.convex.dev/add-a-collaborative-document-editor-to-your-app"/>
        <updated>2024-12-19T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Or how I learned to love BlockNote, Tiptap and ProseMirror OT sync.]]></summary>
        <content type="html"><![CDATA[Or how I learned to love BlockNote, Tiptap and ProseMirror OT sync.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Keeping Users in Sync: Building Real-time Collaboration with Convex]]></title>
        <id>https://stack.convex.dev/keeping-real-time-users-in-sync-convex</id>
        <link href="https://stack.convex.dev/keeping-real-time-users-in-sync-convex"/>
        <updated>2024-12-17T23:30:54.208Z</updated>
        <summary type="html"><![CDATA[Hamza Saleem shares how Convex simplifies building real-time data sync apps like Sticky by using the useQuery hook, where you can easily fetch and sync data, like sticky notes, with minimal setup. He explains how Convex handles challenges like syncing data, live updates, and user tracking.

]]></summary>
        <content type="html"><![CDATA[Hamza Saleem shares how Convex simplifies building real-time data sync apps like Sticky by using the useQuery hook, where you can easily fetch and sync data, like sticky notes, with minimal setup. He explains how Convex handles challenges like syncing data, live updates, and user tracking.

]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Create Real-Time User Profiles with Convex and Clerk]]></title>
        <id>https://stack.convex.dev/build-real-time-user-profiles-with-convex-and-clerk</id>
        <link href="https://stack.convex.dev/build-real-time-user-profiles-with-convex-and-clerk"/>
        <updated>2024-12-14T03:40:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to build real-time profiles using Convex and Clerk. From storing user data to uploading profile pictures, we’ll show you how to make changes reflect instantly in your app.]]></summary>
        <content type="html"><![CDATA[Learn how to build real-time profiles using Convex and Clerk. From storing user data to uploading profile pictures, we’ll show you how to make changes reflect instantly in your app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Can your database do this? Ep 3: Zero-downtime, type-safe migrations]]></title>
        <id>https://stack.convex.dev/zero-downtime-migrations</id>
        <link href="https://stack.convex.dev/zero-downtime-migrations"/>
        <updated>2024-12-11T16:03:56.828Z</updated>
        <summary type="html"><![CDATA[Convex's migrations component makes it easy and safe to run complex database migrations without causing any interruption to live traffic.]]></summary>
        <content type="html"><![CDATA[Convex's migrations component makes it easy and safe to run complex database migrations without causing any interruption to live traffic.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[User Authentication with Clerk and Convex]]></title>
        <id>https://stack.convex.dev/user-authentication-with-clerk-and-convex</id>
        <link href="https://stack.convex.dev/user-authentication-with-clerk-and-convex"/>
        <updated>2024-12-07T03:33:00.000Z</updated>
        <summary type="html"><![CDATA[Want to build secure user logins without the headache? This guide shows you how to connect Clerk with Convex for smooth authentication in your app.]]></summary>
        <content type="html"><![CDATA[Want to build secure user logins without the headache? This guide shows you how to connect Clerk with Convex for smooth authentication in your app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Code Spelunking: Uncovering Convex's API Generation Secrets]]></title>
        <id>https://stack.convex.dev/code-spelunking-uncovering-convex-s-api-generation-secrets</id>
        <link href="https://stack.convex.dev/code-spelunking-uncovering-convex-s-api-generation-secrets"/>
        <updated>2024-12-06T18:57:40.268Z</updated>
        <summary type="html"><![CDATA[As the newest member of the Convex team I am keen to find out how the magic works. Join me as I go spelunking through the codebase and uncover how the API generation actually works under the covers.]]></summary>
        <content type="html"><![CDATA[As the newest member of the Convex team I am keen to find out how the magic works. Join me as I go spelunking through the codebase and uncover how the API generation actually works under the covers.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Company Values that Matter]]></title>
        <id>https://stack.convex.dev/company-values</id>
        <link href="https://stack.convex.dev/company-values"/>
        <updated>2024-12-04T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[A good set of values can be critically important in establishing a team that stands for something. This post outlines why company values are important, what characteristics good and bad company values have, and how to run a process to determine your company values. This applies equally well to a company or team or any other organization.]]></summary>
        <content type="html"><![CDATA[A good set of values can be critically important in establishing a team that stands for something. This post outlines why company values are important, what characteristics good and bad company values have, and how to run a process to determine your company values. This applies equally well to a company or team or any other organization.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex: The Database that Made Me Switch Careers]]></title>
        <id>https://stack.convex.dev/convex-the-database-that-made-me-switch-careers</id>
        <link href="https://stack.convex.dev/convex-the-database-that-made-me-switch-careers"/>
        <updated>2024-12-02T01:41:12.626Z</updated>
        <summary type="html"><![CDATA[Today is my first day working for Convex 🎉, so I thought I’d take the opportunity to share my thoughts on why I decided to join and what excites me about the technology. ]]></summary>
        <content type="html"><![CDATA[Today is my first day working for Convex 🎉, so I thought I’d take the opportunity to share my thoughts on why I decided to join and what excites me about the technology. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Type-Safe Rust Applications with Convex: Introducing convex-typegen]]></title>
        <id>https://stack.convex.dev/building-type-safe-rust-applications-with-convex</id>
        <link href="https://stack.convex.dev/building-type-safe-rust-applications-with-convex"/>
        <updated>2024-11-22T18:42:10.392Z</updated>
        <summary type="html"><![CDATA[Building Type-Safe Rust Applications with Convex: Introducing convex-typegen from CodingWIthJamal - a tool that brings Convex's type safety and developer experience to the Rust ecosystem.]]></summary>
        <content type="html"><![CDATA[Building Type-Safe Rust Applications with Convex: Introducing convex-typegen from CodingWIthJamal - a tool that brings Convex's type safety and developer experience to the Rust ecosystem.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Going local-first with Automerge and Convex]]></title>
        <id>https://stack.convex.dev/automerge-and-convex</id>
        <link href="https://stack.convex.dev/automerge-and-convex"/>
        <updated>2024-11-19T20:00:33.780Z</updated>
        <summary type="html"><![CDATA[Learn about Automerge CRDTs for collaborative editing, syncing changes using Convex.]]></summary>
        <content type="html"><![CDATA[Learn about Automerge CRDTs for collaborative editing, syncing changes using Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Advanced"/>
        <category label="Patterns"/>
        <category label="Integration"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Midpoints: A Word Game Powered by AI Embeddings and Convex Components]]></title>
        <id>https://stack.convex.dev/midpoints-a-word-game-powered-by-ai-embeddings-and-convex-components</id>
        <link href="https://stack.convex.dev/midpoints-a-word-game-powered-by-ai-embeddings-and-convex-components"/>
        <updated>2024-11-19T16:11:00.000Z</updated>
        <summary type="html"><![CDATA[Ever wondered what word sits perfectly between "sporty" and "practical"? Or perhaps "sweet" and "crunchy"? Midpoints is a new word game that gives you 10 chances to find the best match and scores you accordingly!]]></summary>
        <content type="html"><![CDATA[Ever wondered what word sits perfectly between "sporty" and "practical"? Or perhaps "sweet" and "crunchy"? Midpoints is a new word game that gives you 10 chances to find the best match and scores you accordingly!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[An Object Sync Engine for Local-first Apps]]></title>
        <id>https://stack.convex.dev/object-sync-engine</id>
        <link href="https://stack.convex.dev/object-sync-engine"/>
        <updated>2024-11-13T11:00:00.000Z</updated>
        <summary type="html"><![CDATA[Object sync engines manage a rich object graph across multiple clients and a centralized server and are a great fit for building local-first apps.]]></summary>
        <content type="html"><![CDATA[Object sync engines manage a rich object graph across multiple clients and a centralized server and are a great fit for building local-first apps.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building A Second Brain: How I Created Mike AI Chat Bot with Convex]]></title>
        <id>https://stack.convex.dev/building-a-second-brain-how-i-created-mike-ai-chat-bot-with-convex</id>
        <link href="https://stack.convex.dev/building-a-second-brain-how-i-created-mike-ai-chat-bot-with-convex"/>
        <updated>2024-11-12T00:00:19.314Z</updated>
        <summary type="html"><![CDATA[Mike, a Senior Software Developer and Convex Champion, built “Mike Bot”—a virtual chatbot on his blog that captures his knowledge, experience, and personality—using Convex as the backend, along with OpenAI and a custom React UI.]]></summary>
        <content type="html"><![CDATA[Mike, a Senior Software Developer and Convex Champion, built “Mike Bot”—a virtual chatbot on his blog that captures his knowledge, experience, and personality—using Convex as the backend, along with OpenAI and a custom React UI.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Mobile-first: Building Google Photos]]></title>
        <id>https://stack.convex.dev/mobile-first</id>
        <link href="https://stack.convex.dev/mobile-first"/>
        <updated>2024-11-07T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Indy, our Head of Product, led building Google Photos for Android. This is his story.]]></summary>
        <content type="html"><![CDATA[Indy, our Head of Product, led building Google Photos for Android. This is his story.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[New Open-source Starter Kit: Convex v1 based on Midday.]]></title>
        <id>https://stack.convex.dev/open-source-starter-kit-convex-v1-based-on-midday</id>
        <link href="https://stack.convex.dev/open-source-starter-kit-convex-v1-based-on-midday"/>
        <updated>2024-11-06T21:27:00.000Z</updated>
        <summary type="html"><![CDATA[Introducing v1, a SaaS starter inspired by Midday’s SaaS starter setup, featuring a boilerplate for mono repo management, subscription emails, and more—all tailored for Convex. This version includes built-in CRUD, theming, billing, and a streamlined CLI for setup; you can try it out at convex-v1.run and find the repo on GitHub.]]></summary>
        <content type="html"><![CDATA[Introducing v1, a SaaS starter inspired by Midday’s SaaS starter setup, featuring a boilerplate for mono repo management, subscription emails, and more—all tailored for Convex. This version includes built-in CRUD, theming, billing, and a streamlined CLI for setup; you can try it out at convex-v1.run and find the repo on GitHub.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Map of Sync]]></title>
        <id>https://stack.convex.dev/a-map-of-sync</id>
        <link href="https://stack.convex.dev/a-map-of-sync"/>
        <updated>2024-10-31T13:55:00.000Z</updated>
        <summary type="html"><![CDATA[We can categorize sync platforms across nine dimensions: data size, data update rate, the structure of the data, input latency, offline support, number of concurrent clients, centralization, flexibility, and consistency.
]]></summary>
        <content type="html"><![CDATA[We can categorize sync platforms across nine dimensions: data size, data update rate, the structure of the data, input latency, offline support, number of concurrent clients, centralization, flexibility, and consistency.
]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Components for your Backend]]></title>
        <id>https://stack.convex.dev/backend-components</id>
        <link href="https://stack.convex.dev/backend-components"/>
        <updated>2024-10-22T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex Components enable an ecosystem of powerful building blocks to reduce the amount of code you have to write and maintain yourself. Geospatial search, Expo push notifications, LaunchDarkly feature flags, durable function workflows, and more.]]></summary>
        <content type="html"><![CDATA[Convex Components enable an ecosystem of powerful building blocks to reduce the amount of code you have to write and maintain yourself. Geospatial search, Expo push notifications, LaunchDarkly feature flags, durable function workflows, and more.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[What is Sync?]]></title>
        <id>https://stack.convex.dev/sync</id>
        <link href="https://stack.convex.dev/sync"/>
        <updated>2024-10-11T14:04:24.068Z</updated>
        <summary type="html"><![CDATA[Sync platforms like Convex simplify distributed state management, ensuring that developers can focus on building their applications rather than managing backend complexities.]]></summary>
        <content type="html"><![CDATA[Sync platforms like Convex simplify distributed state management, ensuring that developers can focus on building their applications rather than managing backend complexities.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Local-First"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Convex for Swift]]></title>
        <id>https://stack.convex.dev/introducing-convex-for-swift</id>
        <link href="https://stack.convex.dev/introducing-convex-for-swift"/>
        <updated>2024-10-10T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[I’m excited to announce Convex Swift, which unlocks the ability to build iOS and MacOS clients for your Convex app.]]></summary>
        <content type="html"><![CDATA[I’m excited to announce Convex Swift, which unlocks the ability to build iOS and MacOS clients for your Convex app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Database Triggers]]></title>
        <id>https://stack.convex.dev/triggers</id>
        <link href="https://stack.convex.dev/triggers"/>
        <updated>2024-10-10T19:00:22.493Z</updated>
        <summary type="html"><![CDATA[Triggers automatically run code whenever data in a table changes. A library in the convex-helpers npm package allows you to attach trigger functions to your Convex database.]]></summary>
        <content type="html"><![CDATA[Triggers automatically run code whenever data in a table changes. A library in the convex-helpers npm package allows you to attach trigger functions to your Convex database.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Advanced"/>
        <category label="Database"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Use real persistence, not useState ]]></title>
        <id>https://stack.convex.dev/usestate-less</id>
        <link href="https://stack.convex.dev/usestate-less"/>
        <updated>2024-10-01T22:46:00.000Z</updated>
        <summary type="html"><![CDATA[The React Hook useState is probably used more than necessary. We'll go over how you can port those usages over to Convex with simple queries and mutations.]]></summary>
        <content type="html"><![CDATA[The React Hook useState is probably used more than necessary. We'll go over how you can port those usages over to Convex with simple queries and mutations.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Cursor, Claude and Convex to Build a Social Media Scheduling App]]></title>
        <id>https://stack.convex.dev/using-cursor-claude-and-convex-to-build-a-social-media-scheduling-app</id>
        <link href="https://stack.convex.dev/using-cursor-claude-and-convex-to-build-a-social-media-scheduling-app"/>
        <updated>2024-09-30T17:06:00.000Z</updated>
        <summary type="html"><![CDATA[I was curious to see if I could prompt my way through developing an entire app with Cursor and Claude. It went pretty well - but there are some important caveats to keep in mind.]]></summary>
        <content type="html"><![CDATA[I was curious to see if I could prompt my way through developing an entire app with Cursor and Claude. It went pretty well - but there are some important caveats to keep in mind.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <category label="AI"/>
        <category label="TypeScript"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Zero to One Hackathon V2 Winners]]></title>
        <id>https://stack.convex.dev/hackathon-winners-fall-2024</id>
        <link href="https://stack.convex.dev/hackathon-winners-fall-2024"/>
        <updated>2024-09-25T18:03:33.825Z</updated>
        <summary type="html"><![CDATA[We're excited to announce the winners of the Zero to One Hackathon V2! Thousands of developers and startup founders brought their A-game, building some impressive fullstack apps on Convex.]]></summary>
        <content type="html"><![CDATA[We're excited to announce the winners of the Zero to One Hackathon V2! Thousands of developers and startup founders brought their A-game, building some impressive fullstack apps on Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Hackathon"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex in Multiple Repositories]]></title>
        <id>https://stack.convex.dev/multiple-repos</id>
        <link href="https://stack.convex.dev/multiple-repos"/>
        <updated>2024-09-18T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[Turns out, you can organize your Convex project across multiple repositories! Check out this guide on how to implement this in your project.]]></summary>
        <content type="html"><![CDATA[Turns out, you can organize your Convex project across multiple repositories! Check out this guide on how to implement this in your project.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[CRUD APIs: Functional, but Inefficient]]></title>
        <id>https://stack.convex.dev/crud-and-rest</id>
        <link href="https://stack.convex.dev/crud-and-rest"/>
        <updated>2024-09-13T01:53:13.453Z</updated>
        <summary type="html"><![CDATA[The term CRUD, or CRUD API, is often tossed around when interacting with databases or building backend APIs.  This article will examine what CRUD is, what it’s suitable for, and its shortcomings. Finally, we’ll explore how to quickly implement a CRUD API using a modern backend like Convex.]]></summary>
        <content type="html"><![CDATA[The term CRUD, or CRUD API, is often tossed around when interacting with databases or building backend APIs.  This article will examine what CRUD is, what it’s suitable for, and its shortcomings. Finally, we’ll explore how to quickly implement a CRUD API using a modern backend like Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Convex for Android]]></title>
        <id>https://stack.convex.dev/introducing-convex-for-android</id>
        <link href="https://stack.convex.dev/introducing-convex-for-android"/>
        <updated>2024-09-11T19:02:00.000Z</updated>
        <summary type="html"><![CDATA[It was my goal to create an API that both feels natural to Android developers who have kept up with modern application architecture principles, as well something that feels like a natural fit in the Convex ecosystem.]]></summary>
        <content type="html"><![CDATA[It was my goal to create an API that both feels natural to Android developers who have kept up with modern application architecture principles, as well something that feels like a natural fit in the Convex ecosystem.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Understanding CORS: A Developer's Guide]]></title>
        <id>https://stack.convex.dev/a-developers-guide-to-cors</id>
        <link href="https://stack.convex.dev/a-developers-guide-to-cors"/>
        <updated>2024-08-27T15:07:00.000Z</updated>
        <summary type="html"><![CDATA[Cross-Origin Resource Sharing (CORS) is a crucial concept in modern web development, yet it's often misunderstood and can be a source of frustration for many developers. This article aims to demystify CORS, explain its importance, and provide practical guidance on its implementation. Whether you're a seasoned developer or just starting out, this guide will help you navigate the intricacies of CORS and use it effectively in your projects.]]></summary>
        <content type="html"><![CDATA[Cross-Origin Resource Sharing (CORS) is a crucial concept in modern web development, yet it's often misunderstood and can be a source of frustration for many developers. This article aims to demystify CORS, explain its importance, and provide practical guidance on its implementation. Whether you're a seasoned developer or just starting out, this guide will help you navigate the intricacies of CORS and use it effectively in your projects.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Web"/>
        <category label="Fundamentals"/>
        <category label="Advanced"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing authenticated functions from the dashboard]]></title>
        <id>https://stack.convex.dev/testing-authenticated-functions-from-the-dashboard</id>
        <link href="https://stack.convex.dev/testing-authenticated-functions-from-the-dashboard"/>
        <updated>2024-08-09T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[You can test functions that rely on a sign-in by decoding your JWT and using the fields with "Act as a user" on the dashboard.]]></summary>
        <content type="html"><![CDATA[You can test functions that rely on a sign-in by decoding your JWT and using the fields with "Act as a user" on the dashboard.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Authentication"/>
        <category label="Fundamentals"/>
        <category label="Testing"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Configure Cron Jobs at Runtime]]></title>
        <id>https://stack.convex.dev/cron-jobs</id>
        <link href="https://stack.convex.dev/cron-jobs"/>
        <updated>2024-07-17T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Even though Convex supports the creation of cron jobs out of the box, until now, we've only supported static jobs. With user space crons, we now support the programmatic definition of crons at runtime. ]]></summary>
        <content type="html"><![CDATA[Even though Convex supports the creation of cron jobs out of the box, until now, we've only supported static jobs. With user space crons, we now support the programmatic definition of crons at runtime. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Take Control of Pagination]]></title>
        <id>https://stack.convex.dev/pagination</id>
        <link href="https://stack.convex.dev/pagination"/>
        <updated>2024-07-11T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex offers robust control over pagination with a powerful function, getPage, enabling complex edge cases. In this article, we go over how to use that function in your Convex app.]]></summary>
        <content type="html"><![CDATA[Convex offers robust control over pagination with a powerful function, getPage, enabling complex edge cases. In this article, we go over how to use that function in your Convex app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Convex Auth]]></title>
        <id>https://stack.convex.dev/convex-auth</id>
        <link href="https://stack.convex.dev/convex-auth"/>
        <updated>2024-07-10T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex Auth is a library for implementing authentication natively in your Convex backend.]]></summary>
        <content type="html"><![CDATA[Convex Auth is a library for implementing authentication natively in your Convex backend.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Authentication"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build and Deploy a Full Stack AI Todoist Clone: Next.js, Convex & TypeScript]]></title>
        <id>https://stack.convex.dev/todoist-clone</id>
        <link href="https://stack.convex.dev/todoist-clone"/>
        <updated>2024-06-20T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this 7 hour tutorial, you will learn how to create an end-to-end full stack Todoist clone, with AI features to help you organize and suggest missing items in your list with adding, deleting tasks, authentication, search using Zod, Next.js, Convex, React, Next.js Auth V5 i.e. Auth.js, Google Sign in, ShadCN UI library, React hook forms, TypeScript, OPenAI, TailwindCSS and more.]]></summary>
        <content type="html"><![CDATA[In this 7 hour tutorial, you will learn how to create an end-to-end full stack Todoist clone, with AI features to help you organize and suggest missing items in your list with adding, deleting tasks, authentication, search using Zod, Next.js, Convex, React, Next.js Auth V5 i.e. Auth.js, Google Sign in, ShadCN UI library, React hook forms, TypeScript, OPenAI, TailwindCSS and more.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Can your database do this? Ep. 1: Magic caching]]></title>
        <id>https://stack.convex.dev/magic-caching</id>
        <link href="https://stack.convex.dev/magic-caching"/>
        <updated>2024-06-18T17:19:49.521Z</updated>
        <summary type="html"><![CDATA[With Convex's magic query cache, Convex's powerful subscriptions are cached, not merely values. So you get fast, jank-free renders with no cache consistency or invalidation headaches.]]></summary>
        <content type="html"><![CDATA[With Convex's magic query cache, Convex's powerful subscriptions are cached, not merely values. So you get fast, jank-free renders with no cache consistency or invalidation headaches.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Reactivity"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Log Streams: Common uses]]></title>
        <id>https://stack.convex.dev/log-streams-common-uses</id>
        <link href="https://stack.convex.dev/log-streams-common-uses"/>
        <updated>2024-06-17T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[Log streams like Axiom and Datadog can be used to provide powerful querying and alerting on logs and errors from your Convex functions, helping with debugging issues when they come up and providing early insights to detect smaller issues before they become bigger.

This article covers how to do the several common things with either Axiom or Datadog hooked up as a Convex log stream including filtering to a request, logging structured metadata, and visualizing usage.]]></summary>
        <content type="html"><![CDATA[Log streams like Axiom and Datadog can be used to provide powerful querying and alerting on logs and errors from your Convex functions, helping with debugging issues when they come up and providing early insights to detect smaller issues before they become bigger.

This article covers how to do the several common things with either Axiom or Datadog hooked up as a Convex log stream including filtering to a request, logging structured metadata, and visualizing usage.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Advanced"/>
        <category label="Production"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Streaming HTTP Responses using fetch]]></title>
        <id>https://stack.convex.dev/streaming-http-using-fetch</id>
        <link href="https://stack.convex.dev/streaming-http-using-fetch"/>
        <updated>2024-06-11T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn the basics of HTTP streaming with Convex by re-implementing OpenAI's SDK using built-in fetch and async iterators. No npm dependencies needed.]]></summary>
        <content type="html"><![CDATA[Learn the basics of HTTP streaming with Convex by re-implementing OpenAI's SDK using built-in fetch and async iterators. No npm dependencies needed.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The “full-stack framework” fallacy]]></title>
        <id>https://stack.convex.dev/full-stack-framework-fallacy</id>
        <link href="https://stack.convex.dev/full-stack-framework-fallacy"/>
        <updated>2024-06-06T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[When people want a full-stack framework, what they really want is an opinionated backend that interoperates seamlessly with their frontends in a way that empowers full-stack developers to easily build apps that can scale.]]></summary>
        <content type="html"><![CDATA[When people want a full-stack framework, what they really want is an opinionated backend that interoperates seamlessly with their frontends in a way that empowers full-stack developers to easily build apps that can scale.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Chat with HTTP Streaming]]></title>
        <id>https://stack.convex.dev/ai-chat-with-http-streaming</id>
        <link href="https://stack.convex.dev/ai-chat-with-http-streaming"/>
        <updated>2024-06-06T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[By leveraging HTTP actions with streaming, this chat app balances real-time responsiveness with efficient bandwidth usage. Users receive character-by-character updates to their own responses directly from ChatGPT, while other users see periodic updates, minimizing database bandwidth.]]></summary>
        <content type="html"><![CDATA[By leveraging HTTP actions with streaming, this chat app balances real-time responsiveness with efficient bandwidth usage. Users receive character-by-character updates to their own responses directly from ChatGPT, while other users see periodic updates, minimizing database bandwidth.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Advanced"/>
        <category label="AI"/>
        <category label="Patterns"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[SELECT DISTINCT without SQL]]></title>
        <id>https://stack.convex.dev/select-distinct</id>
        <link href="https://stack.convex.dev/select-distinct"/>
        <updated>2024-06-04T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[You'll often want to retrieve unique records from your database. While SELECT DISTINCT is the traditional way to do this in SQL databases, we've improved on this pattern in Convex by making it more consistent.]]></summary>
        <content type="html"><![CDATA[You'll often want to retrieve unique records from your database. While SELECT DISTINCT is the traditional way to do this in SQL databases, we've improved on this pattern in Convex by making it more consistent.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Database"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Rate Limiting at the Application Layer]]></title>
        <id>https://stack.convex.dev/rate-limiting</id>
        <link href="https://stack.convex.dev/rate-limiting"/>
        <updated>2024-05-21T19:00:26.018Z</updated>
        <summary type="html"><![CDATA[Implementing application rate limiting when you have fast access to a database with strong ACID guarantees. Token bucket and fixed window, with fairness, burst accommodation and fire-and-forget support.]]></summary>
        <content type="html"><![CDATA[Implementing application rate limiting when you have fast access to a database with strong ACID guarantees. Token bucket and fixed window, with fairness, burst accommodation and fire-and-forget support.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Ultimate Caching Definition: Invalidation, Optimization, and Layers]]></title>
        <id>https://stack.convex.dev/caching-in</id>
        <link href="https://stack.convex.dev/caching-in"/>
        <updated>2024-05-14T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[A cache is a non-authoritative representation of data maintained for performance reasons. Find out what these words mean and when you should care about them here.]]></summary>
        <content type="html"><![CDATA[A cache is a non-authoritative representation of data maintained for performance reasons. Find out what these words mean and when you should care about them here.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Work Stealing: Load-balancing for compute-heavy tasks]]></title>
        <id>https://stack.convex.dev/work-stealing</id>
        <link href="https://stack.convex.dev/work-stealing"/>
        <updated>2024-05-14T18:30:00.000Z</updated>
        <summary type="html"><![CDATA[Compare push-based load balancing with pull-based work stealing as scalable strategies for distributing resource-intensive workloads, such as running LLM models for AI apps.]]></summary>
        <content type="html"><![CDATA[Compare push-based load balancing with pull-based work stealing as scalable strategies for distributing resource-intensive workloads, such as running LLM models for AI apps.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Advanced"/>
        <category label="Patterns"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing work stealing with a reactive database]]></title>
        <id>https://stack.convex.dev/implementing-work-stealing</id>
        <link href="https://stack.convex.dev/implementing-work-stealing"/>
        <updated>2024-05-14T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Implementing "work stealing" - a workload distribution strategy - using Convex's reactive database.]]></summary>
        <content type="html"><![CDATA[Implementing "work stealing" - a workload distribution strategy - using Convex's reactive database.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Advanced"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex with Auth.js (NextAuth)]]></title>
        <id>https://stack.convex.dev/nextauth</id>
        <link href="https://stack.convex.dev/nextauth"/>
        <updated>2024-05-07T14:03:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to use Auth.js with your Next.js server and Convex backend to build a full-featured authentication system.]]></summary>
        <content type="html"><![CDATA[Learn how to use Auth.js with your Next.js server and Convex backend to build a full-featured authentication system.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <category label="Sessions"/>
        <category label="Authentication"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex Adapter for Auth.js (NextAuth) Setup Guide]]></title>
        <id>https://stack.convex.dev/nextauth-adapter</id>
        <link href="https://stack.convex.dev/nextauth-adapter"/>
        <updated>2024-05-07T11:47:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to install and configure the Convex adapter for Auth.js as part of getting set up with Convex and Next.js.]]></summary>
        <content type="html"><![CDATA[Learn how to install and configure the Convex adapter for Auth.js as part of getting set up with Convex and Next.js.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Sessions"/>
        <category label="Authentication"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Full Stack Tutorial – Fiverr Clone with NextJS, React, Convex, Typescript, Tailwind CSS, ShadCN]]></title>
        <id>https://stack.convex.dev/fiverr-clone</id>
        <link href="https://stack.convex.dev/fiverr-clone"/>
        <updated>2024-05-01T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Check this video out for an in-depth 6 hour tutorial on building your own version of Fiverr using Convex.]]></summary>
        <content type="html"><![CDATA[Check this video out for an in-depth 6 hour tutorial on building your own version of Fiverr using Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[LaunchPie’s Experience Winning the Zero-to-One Hackathon]]></title>
        <id>https://stack.convex.dev/launchpie-hackathon-winner</id>
        <link href="https://stack.convex.dev/launchpie-hackathon-winner"/>
        <updated>2024-04-26T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Earlier this year we ran a hackathon to find who could use Convex's features the best to build an application from scratch. From 2400 participants, Konrad Hylton pulled it off with Launchpie.]]></summary>
        <content type="html"><![CDATA[Earlier this year we ran a hackathon to find who could use Convex's features the best to build an application from scratch. From 2400 participants, Konrad Hylton pulled it off with Launchpie.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Hackathon"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Stateful Online Migrations using Mutations]]></title>
        <id>https://stack.convex.dev/migrating-data-with-mutations</id>
        <link href="https://stack.convex.dev/migrating-data-with-mutations"/>
        <updated>2024-04-16T19:00:54.357Z</updated>
        <summary type="html"><![CDATA[Online migrations in Convex using mutations, including a Convex Component to manage them.]]></summary>
        <content type="html"><![CDATA[Online migrations in Convex using mutations, including a Convex Component to manage them.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Database"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Databases are Spreadsheets]]></title>
        <id>https://stack.convex.dev/databases-are-spreadsheets</id>
        <link href="https://stack.convex.dev/databases-are-spreadsheets"/>
        <updated>2024-04-16T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[I want to share my mental model of databases:

- Databases are just big spreadsheets
- An index is just a view of the spreadsheet sorted by one or more columns
- Binary search over a sorted list is faster than a linear scan (for large lists)]]></summary>
        <content type="html"><![CDATA[I want to share my mental model of databases:

- Databases are just big spreadsheets
- An index is just a view of the spreadsheet sorted by one or more columns
- Binary search over a sorted list is faster than a linear scan (for large lists)]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Operational maturity for production]]></title>
        <id>https://stack.convex.dev/operational-maturity-for-production</id>
        <link href="https://stack.convex.dev/operational-maturity-for-production"/>
        <updated>2024-04-10T21:00:04.734Z</updated>
        <summary type="html"><![CDATA[This post will cover various aspects of operational maturity, and steps to take as your app grows up.]]></summary>
        <content type="html"><![CDATA[This post will cover various aspects of operational maturity, and steps to take as your app grows up.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Deploy"/>
        <category label="Production"/>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing patterns for peace of mind]]></title>
        <id>https://stack.convex.dev/testing-patterns</id>
        <link href="https://stack.convex.dev/testing-patterns"/>
        <updated>2024-04-10T16:39:00.000Z</updated>
        <summary type="html"><![CDATA[Learn about best practices for testing your full-stack apps - running on Convex or elsewhere!]]></summary>
        <content type="html"><![CDATA[Learn about best practices for testing your full-stack apps - running on Convex or elsewhere!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Deploy"/>
        <category label="Production"/>
        <category label="Testing"/>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build and Deploy a Full Stack WhatsApp Clone with AI | Video Calls, Screen Sharing | React.js, TypeScript]]></title>
        <id>https://stack.convex.dev/as-a-programmer-ai-whats-app-clone</id>
        <link href="https://stack.convex.dev/as-a-programmer-ai-whats-app-clone"/>
        <updated>2024-04-07T02:35:00.000Z</updated>
        <summary type="html"><![CDATA[A  tutorial on how to create a clone of WhatsApp with OpenAI built with React.js, TypeScript, TailwindCSS Convex, Clerk and ZegoCloud.]]></summary>
        <content type="html"><![CDATA[A  tutorial on how to create a clone of WhatsApp with OpenAI built with React.js, TypeScript, TailwindCSS Convex, Clerk and ZegoCloud.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How We Horizontally Scaled Function Execution]]></title>
        <id>https://stack.convex.dev/horizontally-scaling-functions</id>
        <link href="https://stack.convex.dev/horizontally-scaling-functions"/>
        <updated>2024-04-05T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[We shipped a behind-the-scenes update that lets customers run 10x concurrent functions than they used to. Emma, who helped ship the update, provides the context, architecture, and impact. ]]></summary>
        <content type="html"><![CDATA[We shipped a behind-the-scenes update that lets customers run 10x concurrent functions than they used to. Emma, who helped ship the update, provides the context, architecture, and impact. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Convex Works]]></title>
        <id>https://stack.convex.dev/how-convex-works</id>
        <link href="https://stack.convex.dev/how-convex-works"/>
        <updated>2024-04-02T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[A deep dive on how Convex's reactive database works internally.]]></summary>
        <content type="html"><![CDATA[A deep dive on how Convex's reactive database works internally.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Compiling the Convex Open-Source Backend]]></title>
        <id>https://stack.convex.dev/building-the-oss-backend</id>
        <link href="https://stack.convex.dev/building-the-oss-backend"/>
        <updated>2024-04-01T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Read this article to learn how you can build our open-source backend from source.]]></summary>
        <content type="html"><![CDATA[Read this article to learn how you can build our open-source backend from source.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Developing with the Open-Source backend]]></title>
        <id>https://stack.convex.dev/developing-with-the-oss-backend</id>
        <link href="https://stack.convex.dev/developing-with-the-oss-backend"/>
        <updated>2024-03-29T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Read this article to learn how you can develop against our open-source backend using our packaged binaries.]]></summary>
        <content type="html"><![CDATA[Read this article to learn how you can develop against our open-source backend using our packaged binaries.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Zero to One Hackathon Winners]]></title>
        <id>https://stack.convex.dev/hacakthon-winners-winter-2024</id>
        <link href="https://stack.convex.dev/hacakthon-winners-winter-2024"/>
        <updated>2024-03-27T21:00:00.000Z</updated>
        <summary type="html"><![CDATA[Contestants have been hard at work with our Winter Hackathon that we ran with Devpost. In this post, we announce the winners and their prizes!]]></summary>
        <content type="html"><![CDATA[Contestants have been hard at work with our Winter Hackathon that we ran with Devpost. In this post, we announce the winners and their prizes!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Hackathon"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Observing your app in production]]></title>
        <id>https://stack.convex.dev/observability-in-production</id>
        <link href="https://stack.convex.dev/observability-in-production"/>
        <updated>2024-03-21T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[By setting up dedicated tools, you can get actionable data to help understanding errors, performance, user behavior and allow you respond quickly when things change.]]></summary>
        <content type="html"><![CDATA[By setting up dedicated tools, you can get actionable data to help understanding errors, performance, user behavior and allow you respond quickly when things change.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Deploy"/>
        <category label="Production"/>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[YOLO: Get to an MVP fast]]></title>
        <id>https://stack.convex.dev/yolo-fast-mvp</id>
        <link href="https://stack.convex.dev/yolo-fast-mvp"/>
        <updated>2024-03-20T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Before you burden yourself with “best practices” for large-scale companies, focus on what will reduce your feedback cycles and help you ship early and often. Think about your use case, not your toolbox.]]></summary>
        <content type="html"><![CDATA[Before you burden yourself with “best practices” for large-scale companies, focus on what will reduce your feedback cycles and help you ship early and often. Think about your use case, not your toolbox.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using TypeScript to Write Complex Query Filters]]></title>
        <id>https://stack.convex.dev/complex-filters-in-convex</id>
        <link href="https://stack.convex.dev/complex-filters-in-convex"/>
        <updated>2024-03-13T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[There’s a new Convex helper to perform generic TypeScript filters, with the same performance as built-in Convex filters, and unlimited potential.]]></summary>
        <content type="html"><![CDATA[There’s a new Convex helper to perform generic TypeScript filters, with the same performance as built-in Convex filters, and unlimited potential.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Running tests using a local open-source backend]]></title>
        <id>https://stack.convex.dev/testing-with-local-oss-backend</id>
        <link href="https://stack.convex.dev/testing-with-local-oss-backend"/>
        <updated>2024-03-12T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex recently released an open source version of the backend. We can use this to unit test Convex functions by running them with a local backend. These tests will work by running a backend locally, pushing your code, and using the `ConvexClient` to execute queries and mutations from your favorite testing framework and asserting on the results.]]></summary>
        <content type="html"><![CDATA[Convex recently released an open source version of the backend. We can use this to unit test Convex functions by running them with a local backend. These tests will work by running a backend locally, pushing your code, and using the `ConvexClient` to execute queries and mutations from your favorite testing framework and asserting on the results.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Testing"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lightweight Migrations]]></title>
        <id>https://stack.convex.dev/lightweight-zero-downtime-migrations</id>
        <link href="https://stack.convex.dev/lightweight-zero-downtime-migrations"/>
        <updated>2024-03-08T20:00:47.852Z</updated>
        <summary type="html"><![CDATA[Patch all of your data in your database table with the bulk edit feature on the Convex dashboard, without writing migration code.]]></summary>
        <content type="html"><![CDATA[Patch all of your data in your database table with the bulk edit feature on the Convex dashboard, without writing migration code.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Backends Should be Designed for Product Developers]]></title>
        <id>https://stack.convex.dev/backend-designed-for-product-develoeprs</id>
        <link href="https://stack.convex.dev/backend-designed-for-product-develoeprs"/>
        <updated>2024-03-06T01:54:00.000Z</updated>
        <summary type="html"><![CDATA[Our CTO James gave a talk at Developer Week 2024 about how backends have been letting down product developers by not providing clean abstractions that empower development without introducing unnecessary complexity.

James outlines four major failures of the status quo:
* Bad ideas in query models
* Bad ideas in type systems
* Bad ideas in caching and performance
* Bad ideas in data sync

He explains why these exist, how they are holding back developers, and discusses recent innovations at Convex that address these four areas.]]></summary>
        <content type="html"><![CDATA[Our CTO James gave a talk at Developer Week 2024 about how backends have been letting down product developers by not providing clean abstractions that empower development without introducing unnecessary complexity.

James outlines four major failures of the status quo:
* Bad ideas in query models
* Bad ideas in type systems
* Bad ideas in caching and performance
* Bad ideas in data sync

He explains why these exist, how they are holding back developers, and discusses recent innovations at Convex that address these four areas.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a File Storage App with Role Based Authorization (Next.js, Shadcn, Typescript)]]></title>
        <id>https://stack.convex.dev/build-a-file-storage-app-role-based-authorization</id>
        <link href="https://stack.convex.dev/build-a-file-storage-app-role-based-authorization"/>
        <updated>2024-03-04T17:22:00.000Z</updated>
        <summary type="html"><![CDATA[Web Dev Cody guides viewers in creating a comprehensive full stack file storage application on YouTube. The tutorial covers features like organizations, file upload, management, role-based authorization, authentication, cron deletes, favorites, trash functionality, and various UI components such as dialogs, modals, toasts, dropdowns, and more. ]]></summary>
        <content type="html"><![CDATA[Web Dev Cody guides viewers in creating a comprehensive full stack file storage application on YouTube. The tutorial covers features like organizations, file upload, management, role-based authorization, authentication, cron deletes, favorites, trash functionality, and various UI components such as dialogs, modals, toasts, dropdowns, and more. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="TypeScript"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Set up ESLint for best practices]]></title>
        <id>https://stack.convex.dev/eslint-setup</id>
        <link href="https://stack.convex.dev/eslint-setup"/>
        <updated>2024-03-01T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[ESLint is a powerful tool that goes beyond simply type checking. We go over how to set it up and implement some basic workflows with the ]]></summary>
        <content type="html"><![CDATA[ESLint is a powerful tool that goes beyond simply type checking. We go over how to set it up and implement some basic workflows with the ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Uploading files from React Native or Expo]]></title>
        <id>https://stack.convex.dev/uploading-files-from-react-native-or-expo</id>
        <link href="https://stack.convex.dev/uploading-files-from-react-native-or-expo"/>
        <updated>2024-02-27T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Step by step guide to take a file URI provided by Expo media APIs and upload it to Convex in React Native.]]></summary>
        <content type="html"><![CDATA[Step by step guide to take a file URI provided by Expo media APIs and upload it to Convex in React Native.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build and Deploy Eraser.io App Clone: Full Stack React App - Next.js, Typescript, Tailwind Css]]></title>
        <id>https://stack.convex.dev/tubeGuruji-eraser-clone</id>
        <link href="https://stack.convex.dev/tubeGuruji-eraser-clone"/>
        <updated>2024-02-26T23:30:09.147Z</updated>
        <summary type="html"><![CDATA[A  tutorial on how to create a fully functional clone of Eraser.io with Convex using Next.js, React, TypeScript, and Tailwind CSS. ]]></summary>
        <content type="html"><![CDATA[A  tutorial on how to create a fully functional clone of Eraser.io with Convex using Next.js, React, TypeScript, and Tailwind CSS. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex: The Software-Defined Database]]></title>
        <id>https://stack.convex.dev/the-software-defined-database</id>
        <link href="https://stack.convex.dev/the-software-defined-database"/>
        <updated>2024-02-21T21:43:02.324Z</updated>
        <summary type="html"><![CDATA[Which to choose, the expressive power of code, or the robustness of built-in database features? With Convex, you can have both. By eliminating the boundary between the application and the database, Convex provides a uniform and powerful way to model your entire backend data flow and security using plain ol' code.]]></summary>
        <content type="html"><![CDATA[Which to choose, the expressive power of code, or the robustness of built-in database features? With Convex, you can have both. By eliminating the boundary between the application and the database, Convex provides a uniform and powerful way to model your entire backend data flow and security using plain ol' code.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How I built NotesGPT – a full-stack AI voice note taking app]]></title>
        <id>https://stack.convex.dev/full-stack-ai-voice-note-taking-app</id>
        <link href="https://stack.convex.dev/full-stack-ai-voice-note-taking-app"/>
        <updated>2024-02-21T02:00:00.000Z</updated>
        <summary type="html"><![CDATA[I recently built a full-stack app called notesGPT. It allows you to record a voice note, transcribes it, and extract action items and display them as action items. It’s fully open source and comes equipped with authentication, storage, vector search, action items, and is fully responsive on mobile for ease of use.

]]></summary>
        <content type="html"><![CDATA[I recently built a full-stack app called notesGPT. It allows you to record a voice note, transcribes it, and extract action items and display them as action items. It’s fully open source and comes equipped with authentication, storage, vector search, action items, and is fully responsive on mobile for ease of use.

]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="AI"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Why I use Convex over Supabase as my BaaS]]></title>
        <id>https://stack.convex.dev/cody-convex-vs-supabase</id>
        <link href="https://stack.convex.dev/cody-convex-vs-supabase"/>
        <updated>2024-02-16T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[An overview of Convex and Supabase, comparing the DX and capabilities of both products when building out the same application.]]></summary>
        <content type="html"><![CDATA[An overview of Convex and Supabase, comparing the DX and capabilities of both products when building out the same application.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Queries that scale]]></title>
        <id>https://stack.convex.dev/queries-that-scale</id>
        <link href="https://stack.convex.dev/queries-that-scale"/>
        <updated>2024-02-13T20:00:52.632Z</updated>
        <summary type="html"><![CDATA[As your app grows from tens to hundreds to thousands of users, there are some techniques that will keep your database queries snappy and efficient. I’ve put together a short list of the most common techniques used by teams scaling on Convex.]]></summary>
        <content type="html"><![CDATA[As your app grows from tens to hundreds to thousands of users, there are some techniques that will keep your database queries snappy and efficient. I’ve put together a short list of the most common techniques used by teams scaling on Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automatically Retry Actions]]></title>
        <id>https://stack.convex.dev/retry-actions</id>
        <link href="https://stack.convex.dev/retry-actions"/>
        <updated>2024-02-13T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to automatically retry actions in Convex while also learning a little about scheduling, system tables, and function references.]]></summary>
        <content type="html"><![CDATA[Learn how to automatically retry actions in Convex while also learning a little about scheduling, system tables, and function references.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Fundamentals"/>
        <category label="Scheduler"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dev Diary: Log Streaming ft. Axiom]]></title>
        <id>https://stack.convex.dev/axiom-log-streaming</id>
        <link href="https://stack.convex.dev/axiom-log-streaming"/>
        <updated>2024-02-01T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Check out the behind-the-scenes engineering efforts that went behind Axiom's integration into Convex.]]></summary>
        <content type="html"><![CDATA[Check out the behind-the-scenes engineering efforts that went behind Axiom's integration into Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Texting your Web App to Create Posts]]></title>
        <id>https://stack.convex.dev/text-your-web-app</id>
        <link href="https://stack.convex.dev/text-your-web-app"/>
        <updated>2024-01-31T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this tutorial, learn how to use Convex HTTP actions to set up a webhook that handles incoming text messages and stores them for display in a React web app. On top of that, it manages user auth and permissions. This is a legitimately complex workflow that can be built in under an hour using a couple hundred lines of code.]]></summary>
        <content type="html"><![CDATA[In this tutorial, learn how to use Convex HTTP actions to set up a webhook that handles incoming text messages and stores them for display in a React web app. On top of that, it manages user auth and permissions. This is a legitimately complex workflow that can be built in under an hour using a couple hundred lines of code.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex Ents: Manage your document relationships]]></title>
        <id>https://stack.convex.dev/ents</id>
        <link href="https://stack.convex.dev/ents"/>
        <updated>2024-01-30T21:59:00.000Z</updated>
        <summary type="html"><![CDATA[Convex Ents is a library that provides: simpler ways to model and query related documents, ability to easily map and filter documents, enforcing unique field values, default field values, cascading deletes, soft deletion and more!]]></summary>
        <content type="html"><![CDATA[Convex Ents is a library that provides: simpler ways to model and query related documents, ability to easily map and filter documents, enforcing unique field values, default field values, cascading deletes, soft deletion and more!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Real-Time Miro Clone With Nextjs, React, Tailwind (2024)]]></title>
        <id>https://stack.convex.dev/miro-clone</id>
        <link href="https://stack.convex.dev/miro-clone"/>
        <updated>2024-01-29T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this 10 hour tutorial, you will learn how to create your very own Miro clone - A collaborative, real-time whiteboard. Notable features include a real-time database, whiteboard from scratch with ability to add shapes like Rectangles and Ellipses, Sticky notes and Pencil drawing.
]]></summary>
        <content type="html"><![CDATA[In this 10 hour tutorial, you will learn how to create your very own Miro clone - A collaborative, real-time whiteboard. Notable features include a real-time database, whiteboard from scratch with ability to add shapes like Rectangles and Ellipses, Sticky notes and Pencil drawing.
]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Subscription Based SaaS with Stripe]]></title>
        <id>https://stack.convex.dev/building-a-subscription-based-saas</id>
        <link href="https://stack.convex.dev/building-a-subscription-based-saas"/>
        <updated>2024-01-24T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is a full stack tutorial video includes subscriptions powered by Stripe with Convex as the backend, Clerk for authentication, and Next.js for the frontend. 
]]></summary>
        <content type="html"><![CDATA[This is a full stack tutorial video includes subscriptions powered by Stripe with Convex as the backend, Clerk for authentication, and Next.js for the frontend. 
]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Session Tracking Via Parameter Injection]]></title>
        <id>https://stack.convex.dev/track-sessions-without-cookies</id>
        <link href="https://stack.convex.dev/track-sessions-without-cookies"/>
        <updated>2024-01-22T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Advice and resources for session tracking per-tab or per-browser via localStorage / sessionStorage using React Context, hooks, and some utilities to make your life easier.]]></summary>
        <content type="html"><![CDATA[Advice and resources for session tracking per-tab or per-browser via localStorage / sessionStorage using React Context, hooks, and some utilities to make your life easier.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <category label="React"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using branded types in validators]]></title>
        <id>https://stack.convex.dev/using-branded-types-in-validators</id>
        <link href="https://stack.convex.dev/using-branded-types-in-validators"/>
        <updated>2024-01-20T03:31:33.475Z</updated>
        <summary type="html"><![CDATA[If you have a more specific type than what you can express with Convex validators, you can still document that at the type level in Convex by casting once in your schema definition.]]></summary>
        <content type="html"><![CDATA[If you have a more specific type than what you can express with Convex validators, you can still document that at the type level in Convex by casting once in your schema definition.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Database Relationship Helpers]]></title>
        <id>https://stack.convex.dev/functional-relationships-helpers</id>
        <link href="https://stack.convex.dev/functional-relationships-helpers"/>
        <updated>2024-01-15T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Traverse database relationships in a readable, predictable, and debuggable way. Support for one-to-one, one-to-many, and many-to-many via utility functions available in convex-helpers.]]></summary>
        <content type="html"><![CDATA[Traverse database relationships in a readable, predictable, and debuggable way. Support for one-to-one, one-to-many, and many-to-many via utility functions available in convex-helpers.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Context Augmented AI Chat in Practice: AICamp 2023 EOY Meetup]]></title>
        <id>https://stack.convex.dev/aicamp-augmented-chat</id>
        <link href="https://stack.convex.dev/aicamp-augmented-chat"/>
        <updated>2024-01-09T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[At AICamp's end-of-year meetup for 2023, Michal goes over why you should build a custom AI-powered chat for your product, what options you have for building one, and which one you should ultimately choose.]]></summary>
        <content type="html"><![CDATA[At AICamp's end-of-year meetup for 2023, Michal goes over why you should build a custom AI-powered chat for your product, what options you have for building one, and which one you should ultimately choose.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The most exciting 4 hour coding challenge]]></title>
        <id>https://stack.convex.dev/wdc-coding-challenge-with-jason</id>
        <link href="https://stack.convex.dev/wdc-coding-challenge-with-jason"/>
        <updated>2024-01-08T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tag along as WebDevCody participates in LearnWithJason's coding challenge where 4 developers use the same technologies to create the best project possible in 4 hours.]]></summary>
        <content type="html"><![CDATA[Tag along as WebDevCody participates in LearnWithJason's coding challenge where 4 developers use the same technologies to create the best project possible in 4 hours.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="TypeScript"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[4 Devs, 1 Idea, 4 Apps in 4 Hours(!!) with Convex]]></title>
        <id>https://stack.convex.dev/lwj-4devs1app-dnd-challenge</id>
        <link href="https://stack.convex.dev/lwj-4devs1app-dnd-challenge"/>
        <updated>2024-01-08T13:02:00.000Z</updated>
        <summary type="html"><![CDATA[Using Convex, 4 web devs built their own fullstack app based on this prompt:

> Build a way to show real-time updates on the website for a Dungeons and Dragons-themed small business!  

See what they built, learn how they did it, and watch their reactions to each other's work in this installment of the "4 Web Devs, 1 App Idea" video series.

]]></summary>
        <content type="html"><![CDATA[Using Convex, 4 web devs built their own fullstack app based on this prompt:

> Build a way to show real-time updates on the website for a Dungeons and Dragons-themed small business!  

See what they built, learn how they did it, and watch their reactions to each other's work in this installment of the "4 Web Devs, 1 App Idea" video series.

]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Web"/>
        <category label="Patterns"/>
        <category label="Hackathon"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Zod with TypeScript for Server-side Validation and End-to-End Types]]></title>
        <id>https://stack.convex.dev/typescript-zod-function-validation</id>
        <link href="https://stack.convex.dev/typescript-zod-function-validation"/>
        <updated>2023-12-15T03:00:02.990Z</updated>
        <summary type="html"><![CDATA[Use Zod with TypeScript for argument validation on your server functions allows you to both protect against invalid data, and define TypeScript types that propagate to your client. This can now be used as an alternative to the built-in argument validation on Convex.]]></summary>
        <content type="html"><![CDATA[Use Zod with TypeScript for argument validation on your server functions allows you to both protect against invalid data, and define TypeScript types that propagate to your client. This can now be used as an alternative to the built-in argument validation on Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="TypeScript"/>
        <category label="Patterns"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Customizing serverless functions without middleware]]></title>
        <id>https://stack.convex.dev/custom-functions</id>
        <link href="https://stack.convex.dev/custom-functions"/>
        <updated>2023-12-14T02:00:07.680Z</updated>
        <summary type="html"><![CDATA[Re-use code and centralize request handler definitions with discoverability and type safety and without the indirection of middleware or nesting of wrappers. Use the new customFunction module in convex-helpers for your Convex TypeScript functions.]]></summary>
        <content type="html"><![CDATA[Re-use code and centralize request handler definitions with discoverability and type safety and without the indirection of middleware or nesting of wrappers. Use the new customFunction module in convex-helpers for your Convex TypeScript functions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[We Hosted a Hackathon for a Notion Clone]]></title>
        <id>https://stack.convex.dev/jotion-winners</id>
        <link href="https://stack.convex.dev/jotion-winners"/>
        <updated>2023-12-12T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[We hosted a hackathon for building features on top of a Notion clone created by CodeWithAntonio. Here are the results.]]></summary>
        <content type="html"><![CDATA[We hosted a hackathon for building features on top of a Notion clone created by CodeWithAntonio. Here are the results.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Hackathon"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Wait a minute, won't you? (Add a waitlist to your product)]]></title>
        <id>https://stack.convex.dev/waitlist</id>
        <link href="https://stack.convex.dev/waitlist"/>
        <updated>2023-11-30T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Does your app need to limit the amount of users that can use it at a time? You might need to add a waitlist, which you will learn to build in this post.]]></summary>
        <content type="html"><![CDATA[Does your app need to limit the amount of users that can use it at a time? You might need to add a waitlist, which you will learn to build in this post.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Who's on Call? Learn to Sync Pagerduty with Slack]]></title>
        <id>https://stack.convex.dev/pagerduty-slack-sync</id>
        <link href="https://stack.convex.dev/pagerduty-slack-sync"/>
        <updated>2023-11-28T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Syncing your Pagerduty instance with Slack is a good way to stay on top of your on-call schedule. We cover syncing Pagerduty information with a Slack channel.]]></summary>
        <content type="html"><![CDATA[Syncing your Pagerduty instance with Slack is a good way to stay on top of your on-call schedule. We cover syncing Pagerduty information with a Slack channel.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Are Vector Databases Dead?]]></title>
        <id>https://stack.convex.dev/are-vector-databases-dead</id>
        <link href="https://stack.convex.dev/are-vector-databases-dead"/>
        <updated>2023-11-21T18:10:39.459Z</updated>
        <summary type="html"><![CDATA[This year vector databases have sprung up like mushrooms to enable applications to retrieve context based on semantic search. A large portion of these applications have used the retrieved context to augment the ability of large language models (LLMs) in a pattern known as RAG. On November 7th OpenAI released its Assistants API, enabling the implementation of AI chat interfaces with context retrieval without needing a separate message store or vector database. Does this new API make vector databases obsolete?]]></summary>
        <content type="html"><![CDATA[This year vector databases have sprung up like mushrooms to enable applications to retrieve context based on semantic search. A large portion of these applications have used the retrieved context to augment the ability of large language models (LLMs) in a pattern known as RAG. On November 7th OpenAI released its Assistants API, enabling the implementation of AI chat interfaces with context retrieval without needing a separate message store or vector database. Does this new API make vector databases obsolete?]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build AI Chat with Convex Vector Search]]></title>
        <id>https://stack.convex.dev/ai-chat-with-convex-vector-search</id>
        <link href="https://stack.convex.dev/ai-chat-with-convex-vector-search"/>
        <updated>2023-11-21T18:10:26.891Z</updated>
        <summary type="html"><![CDATA[Convex is a full-stack development platform and cloud database, including built-in vector search. In this third post in our [series](https://stack.convex.dev/ai-chat-using-openai-assistants-api), we’ll build an AI-powered chat interface using Convex, with our own message storage and context retrieval.]]></summary>
        <content type="html"><![CDATA[Convex is a full-stack development platform and cloud database, including built-in vector search. In this third post in our [series](https://stack.convex.dev/ai-chat-using-openai-assistants-api), we’ll build an AI-powered chat interface using Convex, with our own message storage and context retrieval.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <category label="Search"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build AI Chat with LangChain and Convex]]></title>
        <id>https://stack.convex.dev/ai-chat-using-langchain-and-convex</id>
        <link href="https://stack.convex.dev/ai-chat-using-langchain-and-convex"/>
        <updated>2023-11-21T18:10:03.107Z</updated>
        <summary type="html"><![CDATA[In this second post in our series, we’ll build an AI-powered chat interface using LangChain and its new Convex integration.]]></summary>
        <content type="html"><![CDATA[In this second post in our series, we’ll build an AI-powered chat interface using LangChain and its new Convex integration.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build AI Chat with OpenAI's Assistants API]]></title>
        <id>https://stack.convex.dev/ai-chat-using-openai-assistants-api</id>
        <link href="https://stack.convex.dev/ai-chat-using-openai-assistants-api"/>
        <updated>2023-11-21T18:09:45.752Z</updated>
        <summary type="html"><![CDATA[On November 7th OpenAI released its Assistants API, enabling chat bot with context retrieval implementations without needing a messages or vector database. In this post, we’ll cover how to leverage this API to build a fully functioning AI chat interface.]]></summary>
        <content type="html"><![CDATA[On November 7th OpenAI released its Assistants API, enabling chat bot with context retrieval implementations without needing a messages or vector database. In this post, we’ll cover how to leverage this API to build a fully functioning AI chat interface.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex Build Bounty: Build new Jotion features, win cash prizes!]]></title>
        <id>https://stack.convex.dev/build-bounty-jotion</id>
        <link href="https://stack.convex.dev/build-bounty-jotion"/>
        <updated>2023-11-16T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how you can win cash prizes for building features on an open-source Notion clone.]]></summary>
        <content type="html"><![CDATA[Learn how you can win cash prizes for building features on an open-source Notion clone.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Hackathon"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Seeding Data for Preview Deployments]]></title>
        <id>https://stack.convex.dev/seeding-data-for-preview-deployments</id>
        <link href="https://stack.convex.dev/seeding-data-for-preview-deployments"/>
        <updated>2023-11-08T22:35:43.094Z</updated>
        <summary type="html"><![CDATA[Now that we've launched Preview Deployments on Convex, you can test out backend changes easier than ever. But you may want to seed your project with data first, so let's go over how to do that.]]></summary>
        <content type="html"><![CDATA[Now that we've launched Preview Deployments on Convex, you can test out backend changes easier than ever. But you may want to seed your project with data first, so let's go over how to do that.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Testing"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[A New Command to Start Building Faster: npm create convex]]></title>
        <id>https://stack.convex.dev/npm-create-convex</id>
        <link href="https://stack.convex.dev/npm-create-convex"/>
        <updated>2023-11-06T10:22:00.000Z</updated>
        <summary type="html"><![CDATA[There’s a new fastest way to start building a new app on Convex. Use our new magical command, npm create convex, to spin up a new Convex app from a preexisting template.]]></summary>
        <content type="html"><![CDATA[There’s a new fastest way to start building a new app on Convex. Use our new magical command, npm create convex, to spin up a new Convex app from a preexisting template.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Adding Data Integration to Your Convex Application with Fivetran]]></title>
        <id>https://stack.convex.dev/fivetran-alpha</id>
        <link href="https://stack.convex.dev/fivetran-alpha"/>
        <updated>2023-11-02T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[Launching our official Convex Fivetran connector.]]></summary>
        <content type="html"><![CDATA[Launching our official Convex Fivetran connector.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Town v2]]></title>
        <id>https://stack.convex.dev/ai-town-v2</id>
        <link href="https://stack.convex.dev/ai-town-v2"/>
        <updated>2023-10-31T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[It's never been a better time to make your own town of AIs.]]></summary>
        <content type="html"><![CDATA[It's never been a better time to make your own town of AIs.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[GPT Streaming With Persistent Reactivity]]></title>
        <id>https://stack.convex.dev/gpt-streaming-with-persistent-reactivity</id>
        <link href="https://stack.convex.dev/gpt-streaming-with-persistent-reactivity"/>
        <updated>2023-10-26T20:22:35.522Z</updated>
        <summary type="html"><![CDATA[Stream GPT responses without brittle browser-based HTTP streaming.
Multiplayer reactivity, persistence, reactivity via Convex. Using OpenAI’s Node SDK server-side, and Convex's useQuery hook client-side.]]></summary>
        <content type="html"><![CDATA[Stream GPT responses without brittle browser-based HTTP streaming.
Multiplayer reactivity, persistence, reactivity via Convex. Using OpenAI’s Node SDK server-side, and Convex's useQuery hook client-side.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="AI"/>
        <category label="Fullstack"/>
        <category label="React"/>
        <category label="Reactivity"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Fullstack Notion Clone: Next.js 13, React, Convex, Tailwind | Full Course 2023]]></title>
        <id>https://stack.convex.dev/fullstack-notion-clone</id>
        <link href="https://stack.convex.dev/fullstack-notion-clone"/>
        <updated>2023-10-11T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hi all 👋 In this 8 hour tutorial you will learn how to create an end-to-end fullstack notion clone, all with proper notion-style editor, cover images, nested documents, publishing documents to public, real-time database and more.]]></summary>
        <content type="html"><![CDATA[Hi all 👋 In this 8 hour tutorial you will learn how to create an end-to-end fullstack notion clone, all with proper notion-style editor, cover images, nested documents, publishing documents to public, real-time database and more.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[I trained my own AI voice model to teach my kid]]></title>
        <id>https://stack.convex.dev/i-trained-my-own-ai-voice-model-to-teach-my-kid</id>
        <link href="https://stack.convex.dev/i-trained-my-own-ai-voice-model-to-teach-my-kid"/>
        <updated>2023-09-18T16:00:44.437Z</updated>
        <summary type="html"><![CDATA[Generating rhyming words via GPT-4, along with Dall-E cartoon images and ElevenLabs speaking with a specific voice to make a game to teach words.]]></summary>
        <content type="html"><![CDATA[Generating rhyming words via GPT-4, along with Dall-E cartoon images and ElevenLabs speaking with a specific voice to make a game to teach words.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[React Native Realtime Chat (Expo, File Upload, Typescript)]]></title>
        <id>https://stack.convex.dev/react-native-realtime-chat-expo</id>
        <link href="https://stack.convex.dev/react-native-realtime-chat-expo"/>
        <updated>2023-09-12T16:00:53.976Z</updated>
        <summary type="html"><![CDATA[In this video, you will learn to build a powerful realtime chat with React Native and use Convex as the backend. From creating groups to uploading images and styling messages you will learn all the skills you need to build a React Native chat!]]></summary>
        <content type="html"><![CDATA[In this video, you will learn to build a powerful realtime chat with React Native and use Convex as the backend. From creating groups to uploading images and styling messages you will learn all the skills you need to build a React Native chat!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Clients"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Convex with Next.js Quickstart]]></title>
        <id>https://stack.convex.dev/wdc-using-convex-with-next-js-quickstart</id>
        <link href="https://stack.convex.dev/wdc-using-convex-with-next-js-quickstart"/>
        <updated>2023-09-07T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[A quick start guide for using Convex with Next.js]]></summary>
        <content type="html"><![CDATA[A quick start guide for using Convex with Next.js]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to code an AI powered Text Adventure Game (Next.js, Convex, OpenAI, DALL-E)]]></title>
        <id>https://stack.convex.dev/how-to-code-an-ai-powered-text-adventure-game</id>
        <link href="https://stack.convex.dev/how-to-code-an-ai-powered-text-adventure-game"/>
        <updated>2023-09-06T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[
Build a text adventure game with Next.js, Convex, OpenAI, and DALL-E. Full stack walkthrough.]]></summary>
        <content type="html"><![CDATA[
Build a text adventure game with Next.js, Convex, OpenAI, and DALL-E. Full stack walkthrough.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Full Cloud Backend - Software Engineering Daily Podcast]]></title>
        <id>https://stack.convex.dev/building-a-full-cloud-backend</id>
        <link href="https://stack.convex.dev/building-a-full-cloud-backend"/>
        <updated>2023-08-29T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Discussion of patterns, psychology, abstractions, managing complexity, and more on the Software Engineering Daily Podcast with James Cowling]]></summary>
        <content type="html"><![CDATA[Discussion of patterns, psychology, abstractions, managing complexity, and more on the Software Engineering Daily Podcast with James Cowling]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building AI Town's Backend: Character Identities]]></title>
        <id>https://stack.convex.dev/building-ai-town-character-ids</id>
        <link href="https://stack.convex.dev/building-ai-town-character-ids"/>
        <updated>2023-08-24T23:27:33.212Z</updated>
        <summary type="html"><![CDATA[Learn more about how AI Town works and how to customize it. In this post, we'll dig into how character identities are represented: how to alter them, and how to add entirely new characters.]]></summary>
        <content type="html"><![CDATA[Learn more about how AI Town works and how to customize it. In this post, we'll dig into how character identities are represented: how to alter them, and how to add entirely new characters.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="AI"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Lucia Auth: Implement Custom Authentication]]></title>
        <id>https://stack.convex.dev/convex-with-lucia</id>
        <link href="https://stack.convex.dev/convex-with-lucia"/>
        <updated>2023-08-09T23:34:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to build a full stack app with authentication without any third-party auth providers, using Convex and the Lucia library.]]></summary>
        <content type="html"><![CDATA[Learn how to build a full stack app with authentication without any third-party auth providers, using Convex and the Lucia library.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Next Level Firebase for Modern Developers]]></title>
        <id>https://stack.convex.dev/the-next-level-firebase-for-modern-developers</id>
        <link href="https://stack.convex.dev/the-next-level-firebase-for-modern-developers"/>
        <updated>2023-07-24T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Check out Convex, an incredibly well-designed Firebase alternative that provides a realtime database, object storage, server functions, http API hosting, cron jobs and more!]]></summary>
        <content type="html"><![CDATA[Check out Convex, an incredibly well-designed Firebase alternative that provides a realtime database, object storage, server functions, http API hosting, cron jobs and more!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <category label="React"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Wake up, you need to make money! (Add Stripe to your product)]]></title>
        <id>https://stack.convex.dev/stripe-with-convex</id>
        <link href="https://stack.convex.dev/stripe-with-convex"/>
        <updated>2023-07-19T17:00:56.887Z</updated>
        <summary type="html"><![CDATA[If you’re building a full-stack app, chances are you’ll want some of your users to pay you for the service you provide. How to use Stripe with Convex to get it done.]]></summary>
        <content type="html"><![CDATA[If you’re building a full-stack app, chances are you’ll want some of your users to pay you for the service you provide. How to use Stripe with Convex to get it done.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing Your App: How to Generate Fake Data]]></title>
        <id>https://stack.convex.dev/generating-fake-data</id>
        <link href="https://stack.convex.dev/generating-fake-data"/>
        <updated>2023-07-05T20:40:50.313Z</updated>
        <summary type="html"><![CDATA[Learn how to generate fake data for your dev deployments using the Faker library]]></summary>
        <content type="html"><![CDATA[Learn how to generate fake data for your dev deployments using the Faker library]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Testing"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Pinecone and Embeddings]]></title>
        <id>https://stack.convex.dev/pinecone-and-embeddings</id>
        <link href="https://stack.convex.dev/pinecone-and-embeddings"/>
        <updated>2023-06-28T19:00:11.476Z</updated>
        <summary type="html"><![CDATA[Pinecone and Convex are a good match when you're looking to build an application that leverages embeddings and also has application data.]]></summary>
        <content type="html"><![CDATA[Pinecone and Convex are a good match when you're looking to build an application that leverages embeddings and also has application data.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Get Typeform Data Into Convex]]></title>
        <id>https://stack.convex.dev/get-typeform-data-into-convex</id>
        <link href="https://stack.convex.dev/get-typeform-data-into-convex"/>
        <updated>2023-06-22T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Leverage Typeform while keeping the data in a powerful transactional application database.]]></summary>
        <content type="html"><![CDATA[Leverage Typeform while keeping the data in a powerful transactional application database.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Generate AI Images from Scribbles with Next.js]]></title>
        <id>https://stack.convex.dev/how-to-generate-ai-images-from-scribbles-with-next-js</id>
        <link href="https://stack.convex.dev/how-to-generate-ai-images-from-scribbles-with-next-js"/>
        <updated>2023-06-20T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building a full stack app to generate images based on a prompt and user-provided sketch]]></summary>
        <content type="html"><![CDATA[Building a full stack app to generate images based on a prompt and user-provided sketch]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="Integration"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Magic of Embeddings]]></title>
        <id>https://stack.convex.dev/the-magic-of-embeddings</id>
        <link href="https://stack.convex.dev/the-magic-of-embeddings"/>
        <updated>2023-06-07T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Embeddings, why they’re useful, and how we can store and use them in Convex.]]></summary>
        <content type="html"><![CDATA[Embeddings, why they’re useful, and how we can store and use them in Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <category label="Patterns"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a full-stack AI storybook app with LangChain, Replicate, and OpenAI]]></title>
        <id>https://stack.convex.dev/ai-storybook-app</id>
        <link href="https://stack.convex.dev/ai-storybook-app"/>
        <updated>2023-06-06T16:16:10.091Z</updated>
        <summary type="html"><![CDATA[So you have a pretty good grasp on web development, but you want to learn more about building with generative AI? You're not alone. In this live-coding course, follow along as we build a full-stack generative AI app using LangChain.js, Replicate, and OpenAI.]]></summary>
        <content type="html"><![CDATA[So you have a pretty good grasp on web development, but you want to learn more about building with generative AI? You're not alone. In this live-coding course, follow along as we build a full-stack generative AI app using LangChain.js, Replicate, and OpenAI.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Moving From Airtable -> Convex]]></title>
        <id>https://stack.convex.dev/airtable-to-convex</id>
        <link href="https://stack.convex.dev/airtable-to-convex"/>
        <updated>2023-05-23T19:00:40.063Z</updated>
        <summary type="html"><![CDATA[Is your project in Airtable ready for more code and less no-code? I’ve published some code to help you migrate your data into Convex.]]></summary>
        <content type="html"><![CDATA[Is your project in Airtable ready for more code and less no-code? I’ve published some code to help you migrate your data into Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex gets Rusty with Santa]]></title>
        <id>https://stack.convex.dev/get-rusty-with-santa</id>
        <link href="https://stack.convex.dev/get-rusty-with-santa"/>
        <updated>2023-05-17T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you've been itching to write Convex programs in Rust, your time has come. We take the new Convex Rust crate for a spin by writing a distributed system simulation of Santa and his team working together at the North Pole. Yes, really.]]></summary>
        <content type="html"><![CDATA[If you've been itching to write Convex programs in Rust, your time has come. We take the new Convex Rust crate for a spin by writing a distributed system simulation of Santa and his team working together at the North Pole. Yes, really.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Row Level Security]]></title>
        <id>https://stack.convex.dev/row-level-security</id>
        <link href="https://stack.convex.dev/row-level-security"/>
        <updated>2023-05-15T19:00:47.323Z</updated>
        <summary type="html"><![CDATA[Add row-level security to your database access by wrapping database reads and writes in your Convex serverless functions.]]></summary>
        <content type="html"><![CDATA[Add row-level security to your database access by wrapping database reads and writes in your Convex serverless functions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Relationship Structures: Let's Talk About Schemas]]></title>
        <id>https://stack.convex.dev/relationship-structures-let-s-talk-about-schemas</id>
        <link href="https://stack.convex.dev/relationship-structures-let-s-talk-about-schemas"/>
        <updated>2023-05-09T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this post we’ll look at some patterns for structuring relationships in the Convex database.]]></summary>
        <content type="html"><![CDATA[In this post we’ll look at some patterns for structuring relationships in the Convex database.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[End-to-end TypeScript with Convex]]></title>
        <id>https://stack.convex.dev/end-to-end-ts</id>
        <link href="https://stack.convex.dev/end-to-end-ts"/>
        <updated>2023-05-08T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex provides automatic type safety all the way from your database schema to your React app. How does it work? Hint: we use some wild TypeScript.]]></summary>
        <content type="html"><![CDATA[Convex provides automatic type safety all the way from your database schema to your React app. How does it work? Hint: we use some wild TypeScript.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="TypeScript"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Intro to Migrations]]></title>
        <id>https://stack.convex.dev/intro-to-migrations</id>
        <link href="https://stack.convex.dev/intro-to-migrations"/>
        <updated>2023-05-05T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[There are as many ways to migrate data as there are databases, but here’s some basic information to set the stage.]]></summary>
        <content type="html"><![CDATA[There are as many ways to migrate data as there are databases, but here’s some basic information to set the stage.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Everyone Can Be a Full-Stack Engineer]]></title>
        <id>https://stack.convex.dev/everyone-can-be-a-full-stack-engineer</id>
        <link href="https://stack.convex.dev/everyone-can-be-a-full-stack-engineer"/>
        <updated>2023-04-12T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Alex Cole discusses dynamic web apps, how serverless solutions compare to in-house stacks, and how product development changes when individual engineers can own features end-to-end.
]]></summary>
        <content type="html"><![CDATA[Alex Cole discusses dynamic web apps, how serverless solutions compare to in-house stacks, and how product development changes when individual engineers can own features end-to-end.
]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Fundamentals"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 Dashboard Tricks]]></title>
        <id>https://stack.convex.dev/5-dashboard-tricks</id>
        <link href="https://stack.convex.dev/5-dashboard-tricks"/>
        <updated>2023-03-23T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Did you know you can use the Convex Dashboard to run functions, enter seed data, filter & delete data, upload files, and more?]]></summary>
        <content type="html"><![CDATA[Did you know you can use the Convex Dashboard to run functions, enter seed data, filter & delete data, upload files, and more?]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Searching for Sanity]]></title>
        <id>https://stack.convex.dev/searching-for-sanity</id>
        <link href="https://stack.convex.dev/searching-for-sanity"/>
        <updated>2023-03-15T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Your document is safely stored, but search is coming up empty? Inconsistent search systems can really confuse users! Don't worry–in Convex, transactional search indexing ensures that users always get what they expect and your apps just work.]]></summary>
        <content type="html"><![CDATA[Your document is safely stored, but search is coming up empty? Inconsistent search systems can really confuse users! Don't worry–in Convex, transactional search indexing ensures that users always get what they expect and your apps just work.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Perspectives"/>
        <category label="Search"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Moderating ChatGPT Content: Full-Stack]]></title>
        <id>https://stack.convex.dev/moderating-chatgpt-content-full-stack</id>
        <link href="https://stack.convex.dev/moderating-chatgpt-content-full-stack"/>
        <updated>2023-03-10T01:00:43.369Z</updated>
        <summary type="html"><![CDATA[In this post, we’ll look at how to use the moderation API to flag messages before sending them to Chat-GPT, and patterns for handling these errors in a full-stack React app.]]></summary>
        <content type="html"><![CDATA[In this post, we’ll look at how to use the moderation API to flag messages before sending them to Chat-GPT, and patterns for handling these errors in a full-stack React app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Adding Personality to ChatGPT-3]]></title>
        <id>https://stack.convex.dev/adding-personality-to-chatgpt-3</id>
        <link href="https://stack.convex.dev/adding-personality-to-chatgpt-3"/>
        <updated>2023-03-07T01:00:52.112Z</updated>
        <summary type="html"><![CDATA[How to store multiple personalities Convex and provide them to the chatGPT API, enabling changing personalities mid-conversation. This is a follow-up to Building a full-stack ChatGPT app. ]]></summary>
        <content type="html"><![CDATA[How to store multiple personalities Convex and provide them to the chatGPT API, enabling changing personalities mid-conversation. This is a follow-up to Building a full-stack ChatGPT app. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="Integration"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Advanced HTTP Endpoints: Convex ❤️ Hono]]></title>
        <id>https://stack.convex.dev/hono-with-convex</id>
        <link href="https://stack.convex.dev/hono-with-convex"/>
        <updated>2023-03-06T21:00:00.000Z</updated>
        <summary type="html"><![CDATA[Adding advanced HTTP Endpoint functionality by extending Convex with Hono.]]></summary>
        <content type="html"><![CDATA[Adding advanced HTTP Endpoint functionality by extending Convex with Hono.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Integration"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Full-Stack ChatGPT app]]></title>
        <id>https://stack.convex.dev/full-stack-chatgpt-app</id>
        <link href="https://stack.convex.dev/full-stack-chatgpt-app"/>
        <updated>2023-03-04T01:00:00.000Z</updated>
        <summary type="html"><![CDATA[Let's build a full-stack chat app to talk to ChatGPT on its new API!]]></summary>
        <content type="html"><![CDATA[Let's build a full-stack chat app to talk to ChatGPT on its new API!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="Integration"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Type-safe, data-driven apps, even if databases freak you out]]></title>
        <id>https://stack.convex.dev/type-safe-data-driven-apps-even-if-databases-freak-you-out</id>
        <link href="https://stack.convex.dev/type-safe-data-driven-apps-even-if-databases-freak-you-out"/>
        <updated>2023-02-28T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[You can build a database-powered app with end-to-end type safety and real-time updates without needing to learn how to manage databases. This tutorial will show you how.
]]></summary>
        <content type="html"><![CDATA[You can build a database-powered app with end-to-end type safety and real-time updates without needing to learn how to manage databases. This tutorial will show you how.
]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Help, my app is overreacting!]]></title>
        <id>https://stack.convex.dev/help-my-app-is-overreacting</id>
        <link href="https://stack.convex.dev/help-my-app-is-overreacting"/>
        <updated>2023-02-21T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[Reactive backends like Convex make building live-updating apps a cinch, but default behavior might be too reactive for some use cases. Not to worry! Let’s fine-tune the reactive dataflow of a Convex + React app to deliver a better UX.]]></summary>
        <content type="html"><![CDATA[Reactive backends like Convex make building live-updating apps a cinch, but default behavior might be too reactive for some use cases. Not to worry! Let’s fine-tune the reactive dataflow of a Convex + React app to deliver a better UX.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="React"/>
        <category label="Reactivity"/>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Discord Bot Webhooks with Convex]]></title>
        <id>https://stack.convex.dev/webhooks-with-convex</id>
        <link href="https://stack.convex.dev/webhooks-with-convex"/>
        <updated>2023-02-14T23:00:00.000Z</updated>
        <summary type="html"><![CDATA[Convex provides client libraries for storing and interacting with data, but sometimes we want a third-party app like Discord to interact with data in Convex. In this post, we use webhooks to build a simple Discord bot powered by Convex.]]></summary>
        <content type="html"><![CDATA[Convex provides client libraries for storing and interacting with data, but sometimes we want a third-party app like Discord to interact with data in Convex. In this post, we use webhooks to build a simple Discord bot powered by Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing React Components with Convex]]></title>
        <id>https://stack.convex.dev/testing-react-components-with-convex</id>
        <link href="https://stack.convex.dev/testing-react-components-with-convex"/>
        <updated>2023-02-10T18:30:00.000Z</updated>
        <summary type="html"><![CDATA[Oftentimes during testing we want to mock out our backend so we can unit test our UI components without talking to our actual server code.

In this article, we’ll explore options for testing React components that call Convex React hooks using mocking and dependency injection. To do this, I’ve written a sample TypeScript React app using the Vitest testing framework. The patterns presented in this post are also applicable to other JavaScript apps and frameworks.]]></summary>
        <content type="html"><![CDATA[Oftentimes during testing we want to mock out our backend so we can unit test our UI components without talking to our actual server code.

In this article, we’ll explore options for testing React components that call Convex React hooks using mocking and dependency injection. To do this, I’ve written a sample TypeScript React app using the Vitest testing framework. The patterns presented in this post are also applicable to other JavaScript apps and frameworks.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <category label="React"/>
        <category label="Testing"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Background Job Management]]></title>
        <id>https://stack.convex.dev/background-job-management</id>
        <link href="https://stack.convex.dev/background-job-management"/>
        <updated>2023-02-08T00:00:33.286Z</updated>
        <summary type="html"><![CDATA[Implement asynchronous job patterns using a table to track progress. Fire-and-forget, cancelation, timeouts, and more.]]></summary>
        <content type="html"><![CDATA[Implement asynchronous job patterns using a table to track progress. Fire-and-forget, cancelation, timeouts, and more.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[End-to-End Encryption with Convex]]></title>
        <id>https://stack.convex.dev/end-to-end-encryption-with-convex</id>
        <link href="https://stack.convex.dev/end-to-end-encryption-with-convex"/>
        <updated>2023-02-03T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Implementing end-to-end encryption on top of Convex to build a secret-sharing app.]]></summary>
        <content type="html"><![CDATA[Implementing end-to-end encryption on top of Convex to build a secret-sharing app.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Anonymous Users via Sessions]]></title>
        <id>https://stack.convex.dev/anonymous-users-via-sessions</id>
        <link href="https://stack.convex.dev/anonymous-users-via-sessions"/>
        <updated>2023-02-02T20:00:01.825Z</updated>
        <summary type="html"><![CDATA[Getting users to sign up for a new service before seeing any benefits is challenging. In this post, we looked at a couple of strategies for managing user information without requiring a login.]]></summary>
        <content type="html"><![CDATA[Getting users to sign up for a new service before seeing any benefits is challenging. In this post, we looked at a couple of strategies for managing user information without requiring a login.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Dall-E from Convex]]></title>
        <id>https://stack.convex.dev/using-dall-e-from-convex</id>
        <link href="https://stack.convex.dev/using-dall-e-from-convex"/>
        <updated>2023-01-31T20:00:11.376Z</updated>
        <summary type="html"><![CDATA[Use Convex to fetch an image from OpenAI’s image generation service based on a user-provided prompt.]]></summary>
        <content type="html"><![CDATA[Use Convex to fetch an image from OpenAI’s image generation service based on a user-provided prompt.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Integration"/>
        <category label="AI"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Multiplayer Game]]></title>
        <id>https://stack.convex.dev/building-a-multiplayer-game</id>
        <link href="https://stack.convex.dev/building-a-multiplayer-game"/>
        <updated>2023-01-31T19:00:59.764Z</updated>
        <summary type="html"><![CDATA[Building multiplayer games requires a lot of synchronization logic and event systems. However, using Convex, we get a lot of this for free! Follow along here as we build a complex multiplayer game on Convex, leveraging its reactive-by-default queries, transactional mutations, backend storage, and scheduled functions.]]></summary>
        <content type="html"><![CDATA[Building multiplayer games requires a lot of synchronization logic and event systems. However, using Convex, we get a lot of this for free! Follow along here as we build a complex multiplayer game on Convex, leveraging its reactive-by-default queries, transactional mutations, backend storage, and scheduled functions.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[It's not you, it's SQL]]></title>
        <id>https://stack.convex.dev/not-sql</id>
        <link href="https://stack.convex.dev/not-sql"/>
        <updated>2023-01-29T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[SQL has been a part of computing for a very long time, and SQL-based database systems underly most of the world's applications. But recently, developers have been clamoring for something better, and it's time to move on.]]></summary>
        <content type="html"><![CDATA[SQL has been a part of computing for a very long time, and SQL-based database systems underly most of the world's applications. But recently, developers have been clamoring for something better, and it's time to move on.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Sessions: Wrappers as "Middleware"]]></title>
        <id>https://stack.convex.dev/sessions-wrappers-as-middleware</id>
        <link href="https://stack.convex.dev/sessions-wrappers-as-middleware"/>
        <updated>2023-01-27T20:00:01.090Z</updated>
        <summary type="html"><![CDATA[An approach to server-persisted session data with Convex, wrapping your server functions and storing a session ID on the client.]]></summary>
        <content type="html"><![CDATA[An approach to server-persisted session data with Convex, wrapping your server functions and storing a session ID on the client.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <category label="Sessions"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Zod Validation: Wrappers as “Middleware”]]></title>
        <id>https://stack.convex.dev/wrappers-as-middleware-zod-validation</id>
        <link href="https://stack.convex.dev/wrappers-as-middleware-zod-validation"/>
        <updated>2023-01-24T23:00:00.000Z</updated>
        <summary type="html"><![CDATA[Function validation is important for a production app because you can’t always control which clients are talking to your server. See how to use zod to validate your Convex functions, using our withZod wrapper.]]></summary>
        <content type="html"><![CDATA[Function validation is important for a production app because you can’t always control which clients are talking to your server. See how to use zod to validate your Convex functions, using our withZod wrapper.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Edge to Butt: Wrappers as "Middleware"]]></title>
        <id>https://stack.convex.dev/wrappers-middleware-e2b</id>
        <link href="https://stack.convex.dev/wrappers-middleware-e2b"/>
        <updated>2023-01-21T00:03:42.236Z</updated>
        <summary type="html"><![CDATA[Convex middleware serves many purposes. Sometimes authentication, sometimes i18n. This time? Making sense (or nonsense) of emerging technology industry trends.]]></summary>
        <content type="html"><![CDATA[Convex middleware serves many purposes. Sometimes authentication, sometimes i18n. This time? Making sense (or nonsense) of emerging technology industry trends.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Authentication: Wrappers as “Middleware”]]></title>
        <id>https://stack.convex.dev/wrappers-as-middleware-authentication</id>
        <link href="https://stack.convex.dev/wrappers-as-middleware-authentication"/>
        <updated>2023-01-20T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Using wrapper functions like withUser can help you organize your code into middleware-like blocks that you can compose to keep your function logic concise.]]></summary>
        <content type="html"><![CDATA[Using wrapper functions like withUser can help you organize your code into middleware-like blocks that you can compose to keep your function logic concise.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing Upvoting 4 Ways on Convex]]></title>
        <id>https://stack.convex.dev/upvoting-4-ways-on-convex</id>
        <link href="https://stack.convex.dev/upvoting-4-ways-on-convex"/>
        <updated>2023-01-11T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Implementing an "upvote" feature 4 ways with Convex.]]></summary>
        <content type="html"><![CDATA[Implementing an "upvote" feature 4 ways with Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <category label="Web"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementing Presence with Convex]]></title>
        <id>https://stack.convex.dev/presence-with-convex</id>
        <link href="https://stack.convex.dev/presence-with-convex"/>
        <updated>2023-01-10T00:00:44.964Z</updated>
        <summary type="html"><![CDATA[Some patterns for incorporating presence into a web app leveraging Convex, and sharing some tips & utilities I built along the way.]]></summary>
        <content type="html"><![CDATA[Some patterns for incorporating presence into a web app leveraging Convex, and sharing some tips & utilities I built along the way.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <category label="Web"/>
        <category label="Walkthroughs"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Don't Drop ACID]]></title>
        <id>https://stack.convex.dev/dont-drop-acid</id>
        <link href="https://stack.convex.dev/dont-drop-acid"/>
        <updated>2022-12-15T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[When your database supports ACID semantics, you're free to write code the intuitive way and ignore the complexities of concurrency and failure.]]></summary>
        <content type="html"><![CDATA[When your database supports ACID semantics, you're free to write code the intuitive way and ignore the complexities of concurrency and failure.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building an Application Portal on Convex]]></title>
        <id>https://stack.convex.dev/building-an-application-portal</id>
        <link href="https://stack.convex.dev/building-an-application-portal"/>
        <updated>2022-12-14T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Working with Convex has made our development workflow so much more streamlined—we no longer have to worry about the complexities of traditional frontend-backend communication, enabling us to build out the core of our new application portal at a blazing-fast speed.]]></summary>
        <content type="html"><![CDATA[Working with Convex has made our development workflow so much more streamlined—we no longer have to worry about the complexities of traditional frontend-backend communication, enabling us to build out the core of our new application portal at a blazing-fast speed.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="React"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Fully Reactive Pagination]]></title>
        <id>https://stack.convex.dev/fully-reactive-pagination</id>
        <link href="https://stack.convex.dev/fully-reactive-pagination"/>
        <updated>2022-12-07T19:00:00.000Z</updated>
        <summary type="html"><![CDATA[Paginating over large datasets is tricky when the data is changing. Naive approaches result in missing or duplicated data. The trick is to rewrite limit queries (fetch 5 items) into range queries (fetch between cursors). Convex handles this automatically!]]></summary>
        <content type="html"><![CDATA[Paginating over large datasets is tricky when the data is changing. Naive approaches result in missing or duplicated data. The trick is to rewrite limit queries (fetch 5 items) into range queries (fetch between cursors). Convex handles this automatically!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <category label="Reactivity"/>
        <category label="React"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Throttling Requests by Single-Flighting]]></title>
        <id>https://stack.convex.dev/throttling-requests-by-single-flighting</id>
        <link href="https://stack.convex.dev/throttling-requests-by-single-flighting"/>
        <updated>2022-11-30T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[For write-heavy applications, use single flighting to dynamically throttle requests. See how we implement this with React hooks for Convex.]]></summary>
        <content type="html"><![CDATA[For write-heavy applications, use single flighting to dynamically throttle requests. See how we implement this with React hooks for Convex.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <category label="React"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ready for Actions]]></title>
        <id>https://stack.convex.dev/ready-for-actions</id>
        <link href="https://stack.convex.dev/ready-for-actions"/>
        <updated>2022-11-28T17:00:16.020Z</updated>
        <summary type="html"><![CDATA[Convex 0.5.0 introduces built-in support for actions — arbitrary lambda functions that run in a Node.js environment on the Convex cloud. We use the term action to differentiate these functions from Convex mutation and query functions, which enable transactional writes and dynamic subscriptions that update whenever data changes.]]></summary>
        <content type="html"><![CDATA[Convex 0.5.0 introduces built-in support for actions — arbitrary lambda functions that run in a Node.js environment on the Convex cloud. We use the term action to differentiate these functions from Convex mutation and query functions, which enable transactional writes and dynamic subscriptions that update whenever data changes.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Jamstack Conf 2022 Panel: The Future of Databases]]></title>
        <id>https://stack.convex.dev/jamstack-conf-2022-panel-the-future-of-databases</id>
        <link href="https://stack.convex.dev/jamstack-conf-2022-panel-the-future-of-databases"/>
        <updated>2022-11-23T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[Today, a new wave of innovation is making databases approachable for developers without requiring a specialized skillset, opening the door to a whole new category of ambitious web experiences. In this panel, you’ll hear from the people pushing the boundaries of database technology and learn what’s possible — and what’s coming.]]></summary>
        <content type="html"><![CDATA[Today, a new wave of innovation is making databases approachable for developers without requiring a specialized skillset, opening the door to a whole new category of ambitious web experiences. In this panel, you’ll hear from the people pushing the boundaries of database technology and learn what’s possible — and what’s coming.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Fullstack"/>
        <category label="Comparisons"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Launching Features Right on Time: Feature Gating]]></title>
        <id>https://stack.convex.dev/feature-gating</id>
        <link href="https://stack.convex.dev/feature-gating"/>
        <updated>2022-11-21T16:39:00.000Z</updated>
        <summary type="html"><![CDATA[Today we’re going to talk about how to flip features on and off remotely using a clever use of the reactive nature of Convex queries. ]]></summary>
        <content type="html"><![CDATA[Today we’re going to talk about how to flip features on and off remotely using a clever use of the reactive nature of Convex queries. ]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Patterns"/>
        <category label="React"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The serverless revolution deserves more than just a serverless database]]></title>
        <id>https://stack.convex.dev/serverless-revolution</id>
        <link href="https://stack.convex.dev/serverless-revolution"/>
        <updated>2022-11-18T14:17:00.000Z</updated>
        <summary type="html"><![CDATA[The serverless movement has eliminated so many problems but it has left application developers with the hardest one of all: managing distributed state.]]></summary>
        <content type="html"><![CDATA[The serverless movement has eliminated so many problems but it has left application developers with the hardest one of all: managing distributed state.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Perspectives"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The future of databases is not just a database]]></title>
        <id>https://stack.convex.dev/future-of-databases</id>
        <link href="https://stack.convex.dev/future-of-databases"/>
        <updated>2022-11-11T13:20:00.000Z</updated>
        <summary type="html"><![CDATA[The future of databases is Convex. This video originally aired at Jamstack 2022, highlighting the next evolution of modern web development architecture.]]></summary>
        <content type="html"><![CDATA[The future of databases is Convex. This video originally aired at Jamstack 2022, highlighting the next evolution of modern web development architecture.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Fullstack"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex and the future of streaming infrastructure]]></title>
        <id>https://stack.convex.dev/infra-roundtable</id>
        <link href="https://stack.convex.dev/infra-roundtable"/>
        <updated>2022-11-09T13:26:00.000Z</updated>
        <summary type="html"><![CDATA[Hosted by Ian & Alex, with Alana (Readyset), Hojjat (Deltastream), Jamie (Convex).]]></summary>
        <content type="html"><![CDATA[Hosted by Ian & Alex, with Alana (Readyset), Hojjat (Deltastream), Jamie (Convex).]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Comparisons"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Reactive Backend for a Web App]]></title>
        <id>https://stack.convex.dev/reactive-backend</id>
        <link href="https://stack.convex.dev/reactive-backend"/>
        <updated>2022-10-05T12:27:00.000Z</updated>
        <summary type="html"><![CDATA[Convex is a JS-powered database and backend for web apps that’s reactive — you can use it to create endpoints and queries that update automatically when data changes. Tom Ballinger will teach us how.]]></summary>
        <content type="html"><![CDATA[Convex is a JS-powered database and backend for web apps that’s reactive — you can use it to create endpoints and queries that update automatically when data changes. Tom Ballinger will teach us how.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <category label="React"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Managing Reactivity with useBufferedState]]></title>
        <id>https://stack.convex.dev/coping-with-the-web-s-looming-global-reactivity-crisis</id>
        <link href="https://stack.convex.dev/coping-with-the-web-s-looming-global-reactivity-crisis"/>
        <updated>2022-08-18T21:03:00.000Z</updated>
        <summary type="html"><![CDATA[Reactivity has taken a dominant position today within web app development. Our components and app state are all reactive, and the world has adapted–most would argue, for the better.

But has Convex gone too far? 😉

A new generation of serverless backends like Convex is recklessly spreading reactivity across our databases, server-side functions, and protocols, making global reactivity a new phenomenon. Shared global data is becoming reactive by default. Is this good for the world?

In this video, Jamie Turner explores one circumstance where this pervasive reactivity poses a challenge, and he builds one useful abstraction for taming over-reactivity and turning it back into a strength.]]></summary>
        <content type="html"><![CDATA[Reactivity has taken a dominant position today within web app development. Our components and app state are all reactive, and the world has adapted–most would argue, for the better.

But has Convex gone too far? 😉

A new generation of serverless backends like Convex is recklessly spreading reactivity across our databases, server-side functions, and protocols, making global reactivity a new phenomenon. Shared global data is becoming reactive by default. Is this good for the world?

In this video, Jamie Turner explores one circumstance where this pervasive reactivity poses a challenge, and he builds one useful abstraction for taming over-reactivity and turning it back into a strength.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Patterns"/>
        <category label="Reactivity"/>
        <category label="Web"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Intro to Convex Query Performance]]></title>
        <id>https://stack.convex.dev/convex-query-performance</id>
        <link href="https://stack.convex.dev/convex-query-performance"/>
        <updated>2022-07-15T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[How do I ensure my Convex database queries are fast and efficient? When should I define an index? What is an index?

This document explains how you should think about query performance in Convex by describing a simplified model of how queries and indexes function.]]></summary>
        <content type="html"><![CDATA[How do I ensure my Convex database queries are fast and efficient? When should I define an index? What is an index?

This document explains how you should think about query performance in Convex by describing a simplified model of how queries and indexes function.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fundamentals"/>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Backend Matters (Making Fast5 #2)]]></title>
        <id>https://stack.convex.dev/backend-matters-fast5</id>
        <link href="https://stack.convex.dev/backend-matters-fast5"/>
        <updated>2022-07-15T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why does anything really need to run on the server anymore? And even if it does, do I, the developer, need to be so involved?

Yes! Even in a serverless world, the backend computing context being a real, discrete environment that you have control and influence over is not only necessary but hugely beneficial.]]></summary>
        <content type="html"><![CDATA[Why does anything really need to run on the server anymore? And even if it does, do I, the developer, need to be so involved?

Yes! Even in a serverless world, the backend computing context being a real, discrete environment that you have control and influence over is not only necessary but hugely beneficial.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="Fullstack"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The platform you need, when you need it]]></title>
        <id>https://stack.convex.dev/platform-you-need</id>
        <link href="https://stack.convex.dev/platform-you-need"/>
        <updated>2022-05-31T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[You don’t have to worry about the platform locking you into a decision that seems convenient at first but is a headache to deal with later.]]></summary>
        <content type="html"><![CDATA[You don’t have to worry about the platform locking you into a decision that seems convenient at first but is a headache to deal with later.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Local and Remote State (Making Fast5 #1)]]></title>
        <id>https://stack.convex.dev/local-remote-state-fast5</id>
        <link href="https://stack.convex.dev/local-remote-state-fast5"/>
        <updated>2022-05-25T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[While making Fast5, Convex's wordle-style multiplayer racing game, we ran into several interesting challenges. This week, let's dig into managing the combination of local and global state.]]></summary>
        <content type="html"><![CDATA[While making Fast5, Convex's wordle-style multiplayer racing game, we ran into several interesting challenges. This week, let's dig into managing the combination of local and global state.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="React"/>
        <category label="Reactivity"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Fast5]]></title>
        <id>https://stack.convex.dev/introducing-fast5</id>
        <link href="https://stack.convex.dev/introducing-fast5"/>
        <updated>2022-05-13T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[At Convex, we're creating a platform for managing global state for web developers. Unsurprisingly, we've found one of the best ways to improve our platform is to actually build stuff with it!]]></summary>
        <content type="html"><![CDATA[At Convex, we're creating a platform for managing global state for web developers. Unsurprisingly, we've found one of the best ways to improve our platform is to actually build stuff with it!]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="React"/>
        <category label="Fullstack"/>
        <category label="Walkthroughs"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Data Interactivity in the Serverless Future (HYTRADBOI 2022)]]></title>
        <id>https://stack.convex.dev/data-interactivity-in-the-serverless-future</id>
        <link href="https://stack.convex.dev/data-interactivity-in-the-serverless-future"/>
        <updated>2022-05-02T12:27:00.000Z</updated>
        <summary type="html"><![CDATA[Dynamic application developers need global state management, not a database.

James (@jamesacowling) presents his talk from the HYTRADBOI 2022 database conference on how Convex is rethinking how app developers manage global state.]]></summary>
        <content type="html"><![CDATA[Dynamic application developers need global state management, not a database.

James (@jamesacowling) presents his talk from the HYTRADBOI 2022 database conference on how Convex is rethinking how app developers manage global state.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Fullstack"/>
        <category label="Reactivity"/>
        <category label="React"/>
        <category label="Perspectives"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex vs. Relational Databases]]></title>
        <id>https://stack.convex.dev/convex-vs-relational-databases</id>
        <link href="https://stack.convex.dev/convex-vs-relational-databases"/>
        <updated>2022-04-27T00:35:00.000Z</updated>
        <summary type="html"><![CDATA[Relational databases are powerful tools for persisting data, but using them to build interactive web apps requires a lot of work. A web app architecture built on a relational database is an entire cluster of databases, backends, caching nodes, and Pub/Sub servers. And even after you invest in all of that infrastructure you'll still need to explicitly define your database schema upfront and write cumbersome SQL queries.

At Convex we believe that web developers shouldn't have to worry about any of this. We can handle the servers, caching, and reactivity and you can focus on your product.]]></summary>
        <content type="html"><![CDATA[Relational databases are powerful tools for persisting data, but using them to build interactive web apps requires a lot of work. A web app architecture built on a relational database is an entire cluster of databases, backends, caching nodes, and Pub/Sub servers. And even after you invest in all of that infrastructure you'll still need to explicitly define your database schema upfront and write cumbersome SQL queries.

At Convex we believe that web developers shouldn't have to worry about any of this. We can handle the servers, caching, and reactivity and you can focus on your product.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Reactivity"/>
        <category label="Fullstack"/>
        <category label="Comparisons"/>
        <category label="Fundamentals"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convex vs. Firebase]]></title>
        <id>https://stack.convex.dev/convex-vs-firebase</id>
        <link href="https://stack.convex.dev/convex-vs-firebase"/>
        <updated>2022-04-21T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Cloud Firestore, you'll have to do some acrobatics to integrate with React and listen for realtime updates. Down the road, you'll find your app full of slow loading experiences from request waterfalls and your database full of half-committed mutations.]]></summary>
        <content type="html"><![CDATA[On Cloud Firestore, you'll have to do some acrobatics to integrate with React and listen for realtime updates. Down the road, you'll find your app full of slow loading experiences from request waterfalls and your database full of half-committed mutations.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Comparisons"/>
        <category label="React"/>
        <category label="Fullstack"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building reactive web apps on Convex]]></title>
        <id>https://stack.convex.dev/building-reactive-web-apps</id>
        <link href="https://stack.convex.dev/building-reactive-web-apps"/>
        <updated>2022-04-19T12:29:00.000Z</updated>
        <summary type="html"><![CDATA[Sujay (@sujayakar314) walks through how easy it is to build a dynamic web app with global state on Convex. Join the Convex beta at https://convex.dev.]]></summary>
        <content type="html"><![CDATA[Sujay (@sujayakar314) walks through how easy it is to build a dynamic web app with global state on Convex. Join the Convex beta at https://convex.dev.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Walkthroughs"/>
        <category label="React"/>
        <category label="Fullstack"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
    <entry>
        <title type="html"><![CDATA[The unfulfilled promise of functional ideals on the web]]></title>
        <id>https://stack.convex.dev/functional-ideals</id>
        <link href="https://stack.convex.dev/functional-ideals"/>
        <updated>2022-02-15T17:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ideas around immutability, purity, and dataflow programming are quietly saturating our technologies like Bitcoin and React. And while these early inroads are enabling exciting new ways to build large and dependable applications, there is still much to do to realize the full potential of this revolution.]]></summary>
        <content type="html"><![CDATA[Ideas around immutability, purity, and dataflow programming are quietly saturating our technologies like Bitcoin and React. And while these early inroads are enabling exciting new ways to build large and dependable applications, there is still much to do to realize the full potential of this revolution.]]></content>
        <author>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </author>
        <category label="Perspectives"/>
        <category label="Fullstack"/>
        <category label="Reactivity"/>
        <contributor>
            <name>Stack</name>
            <uri>https://stack.convex.dev/</uri>
        </contributor>
    </entry>
</feed>