← Back to blog
··15 min read

Appwrite vs Supabase vs PocketBase 2026: The Open-Source Backend Showdown

AppwriteSupabasePocketBaseBackendBaaSSelf-HostingPostgresNext.js
Appwrite vs Supabase vs PocketBase 2026: The Open-Source Backend Showdown

# Appwrite vs Supabase vs PocketBase 2026: The Open-Source Backend Showdown

Every app needs a backend, and in 2026 you no longer have to choose between wiring one up by hand and renting a proprietary one you can never move. Three open-source projects now cover the whole "auth + database + realtime + storage + functions" surface, and all three you can self-host: Supabase, the Postgres-based Firebase alternative; Appwrite, the batteries-included multi-runtime BaaS; and PocketBase, an entire backend that ships as a single Go binary.

They solve the same problem from three very different philosophies — a relational platform, a full-featured BaaS, and a minimalist single file — and the right pick depends far more on your data model, your team, and your appetite for operations than on any feature checklist. If you build or sell production-ready templates, the backend is the decision a buyer inherits forever, so it is worth getting right.

Server infrastructure powering a modern open-source backend

Server infrastructure powering a modern open-source backend

The 30-Second Answer

  • Supabase — Postgres-as-a-platform. A real relational database with row-level security, an auto-generated REST and GraphQL API, Auth, Realtime, Storage, Deno Edge Functions and pgvector. The biggest JavaScript ecosystem and a managed cloud that scales. Self-hosting is the heaviest of the three (~a dozen services). The web default.
  • Appwrite — the batteries-included BaaS. A document data model on MariaDB, Auth with dozens of OAuth providers, Functions in many runtimes, Realtime, Storage with image transforms, built-in Messaging (email/SMS/push), superb mobile and Flutter SDKs, and Appwrite Sites for hosting. Self-hosts from one docker-compose file. The cross-platform pick.
  • PocketBase — a whole backend in one file. A single ~15 MB Go binary with embedded SQLite, a built-in admin UI, realtime, auth and file storage, extendable in Go or JavaScript. Deploy in minutes; scales up, not out. The minimalist pick.
  • Data Model: Postgres vs Documents vs SQLite

    This is the decision underneath all the others.

    Supabase is PostgreSQL, exposed. You design normal relational tables, write SQL, and get a REST API generated by PostgREST and a GraphQL endpoint for free. Access control is enforced by Postgres row-level security policies, which means your authorization rules live in the database and apply no matter which client calls in. If you already think in SQL — joins, constraints, migrations — Supabase feels like your database grew an API, not like a new paradigm. It also means your data is portable: a pg_dump moves it anywhere.

    Appwrite is a document model. You create collections and define attributes and indexes through its Databases API; under the hood it stores documents in MariaDB, but you interact with a NoSQL-style API rather than raw SQL. Permissions are set per-collection and per-document with a role system (any, users, specific user or team). It is a clean model for app-shaped data and unifies nicely across web and mobile, though complex relational queries are less natural than in Postgres.

    PocketBase is SQLite with a schema builder. You define collections in its admin UI (or via migrations), and it stores everything in a single embedded SQLite database. You get filtering, sorting, relations and API rules per collection, plus a first-class realtime feed. SQLite is astonishingly capable for a huge share of apps — but it is one file on one node, which shapes how PocketBase scales.

    **Supabase****Appwrite****PocketBase**
    DatabasePostgreSQLMariaDB (document API)Embedded SQLite
    Query modelSQL + auto REST/GraphQLDocument/collections APICollections + filter API
    AuthorizationRow-level security (SQL)Per-doc/collection rolesPer-collection API rules
    Data portabilityHigh (standard Postgres)Medium (own API over MariaDB)Medium (own API over SQLite)

    See PostgreSQL vs MySQL vs MongoDB for how those underlying engines compare on their own terms.

    Auth

    All three ship real authentication so you are not bolting on a separate provider.

  • Supabase Auth (GoTrue) handles email/password, magic links, phone/OTP, and a long list of OAuth providers, and issues JWTs that plug straight into row-level security. It integrates cleanly with the Next.js App Router via server helpers.
  • Appwrite Auth covers email/password, magic URL, phone, anonymous sessions and dozens of OAuth2 providers, plus teams and roles out of the box — historically its strongest area, and excellent on mobile.
  • PocketBase Auth supports password and OAuth2 providers, email verification and password reset, all managed from the built-in admin UI, with the auth record being just another collection you can extend.
  • If auth is the part you care most about on the web, it is worth reading Clerk vs Auth.js vs Better Auth too — sometimes the right answer is a dedicated auth layer in front of your backend.

    Realtime, Functions & Storage

    Realtime. Supabase streams Postgres changes (plus broadcast and presence channels) over WebSockets. Appwrite lets you subscribe to virtually any resource event — documents, files, accounts — over a realtime channel. PocketBase streams collection changes over server-sent events. All three are more than enough for live dashboards, chat and collaborative UIs.

    Functions / server logic. This is where they diverge most:

    ts
    // Supabase Edge Function (Deno) — supabase/functions/hello/index.ts
    Deno.serve(async (req) => {
      const { name } = await req.json();
      return new Response(JSON.stringify({ message: `Hi ${name}` }), {
        headers: { "Content-Type": "application/json" },
      });
    });
  • Supabase runs Edge Functions on Deno/TypeScript, deployed globally.
  • Appwrite Functions run in many language runtimes — Node, Python, Dart, PHP, Ruby, Go and more — in isolated containers, triggered by HTTP, events or schedules.
  • PocketBase has no serverless product; instead you extend the binary itself, either using it as a Go framework or writing JavaScript hooks (pb_hooks) that run inside the process.
  • Storage. All three provide file storage with access rules. Appwrite adds on-the-fly image transformations; Supabase Storage sits on S3-compatible infrastructure with a CDN; PocketBase stores files locally or on any S3-compatible bucket.

    Self-Hosting & Scaling

    Deploying a self-hosted backend to a server

    Deploying a self-hosted backend to a server

    PocketBase is the easiest thing to deploy in this entire category — copy one binary to a server, put it behind a reverse proxy, and you are done:

    bash
    # Download, run, and you have a full backend + admin UI
    ./pocketbase serve --http="0.0.0.0:8090"

    Backups are essentially copying the SQLite file (pair it with Litestream for continuous replication). The tradeoff: it is single-node, so it scales vertically — a bigger box, not more boxes — which is fine for the large majority of apps but not for sudden horizontal scale.

    Appwrite self-hosts from a single docker-compose stack that bundles the API, MariaDB, Redis and workers:

    bash
    docker run -it --rm \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
      appwrite/appwrite:latest

    One command gets you the full product, and it is genuinely designed to be run this way by individuals and teams; it scales out by adding function and worker capacity.

    Supabase is the heaviest to self-host — the stack is Postgres, GoTrue, PostgREST, the Realtime server, Storage, a Kong gateway and more. There is an official docker-compose, but keeping it patched, backed up and upgraded is real operational work, which is exactly why so many teams use Supabase Cloud even though the project is open source. On the flip side, managed Supabase scales further and more automatically than a hand-run PocketBase or Appwrite box ever will.

    If you are weighing where to actually run any of this, Vercel vs Netlify vs Railway covers the frontend/host side, and Bun vs Node vs Deno matters for Supabase's Deno functions vs Appwrite's Node runtime.

    Licenses & Pricing

    **Supabase****Appwrite****PocketBase**
    LicenseApache 2.0BSD-3-ClauseMIT
    Managed cloudYes (free + Pro ~$25/mo)Yes (free + Pro)No official cloud
    Self-host costFree (heavy ops)Free (one compose)Free (one binary)
    Lock-in riskLowest (standard Postgres)MediumMedium

    All three are permissively licensed, so you can self-host indefinitely with no fee. Supabase is the least locked-in at the data layer because your data is standard Postgres you can dump and move; Appwrite and PocketBase wrap portable databases (MariaDB, SQLite) in their own APIs, so leaving means rewriting the data-access layer.

    The Decision Table

    NeedBest pick
    Relational data, SQL, biggest ecosystem**Supabase**
    First-class Next.js / React on the web**Supabase**
    One backend for web **and** mobile (Flutter)**Appwrite**
    Functions in many languages**Appwrite**
    Built-in email / SMS / push messaging**Appwrite**
    Simplest possible self-host**PocketBase**
    MVP, internal tool, or a "clone this app" kit**PocketBase**
    Managed cloud that scales automatically**Supabase**
    Lowest data lock-in**Supabase** (Postgres)
    Ship a backend a buyer runs in one command**PocketBase**

    How It Fits Your Stack

    A backend never lives alone. Whichever you choose sits under a frontend framework and beside your other infrastructure choices — the best tech stack for web apps puts the whole picture together, and if you land on Supabase, the Neon vs Supabase vs PlanetScale comparison and the Next.js + Supabase SaaS template guide go a level deeper. Ready-made Supabase templates and starters show all of this wired up in context.

    Why This Matters if You Sell Templates

    The backend is the single biggest lever on whether a buyer succeeds with your code — and on how many support tickets you get. A Supabase starter meets buyers where most of them already are and is the most searched-for kind of SaaS template, at the cost of the buyer bringing their own project. A PocketBase kit can ship the backend *inside the download*: one binary next to the frontend, an admin UI on first run, and a non-expert buyer is live in minutes — fewer refunds, fewer questions. An Appwrite template is the move when the product spans web and mobile from one backend.

    Whichever you pick, what actually sells is production-ready quality: clean auth, sensible security rules, seeded demo data and setup docs a stranger can follow — the bar buyers expect on CodeCudos.

    The Bottom Line

    Three open-source backends, three philosophies:

  • Supabase — the platform: real Postgres, the deepest ecosystem, and a cloud that scales. The default for web and SaaS, and the least locked-in — accept the heavier self-host or use the managed tier.
  • Appwrite — the all-rounder: the most built-in (multi-runtime functions, messaging, storage transforms) and the best cross-platform story, self-hosted from one compose file. Reach for it when web and mobile share a backend.
  • PocketBase — the minimalist: an entire backend in one file, live in minutes, unbeatable for MVPs, internal tools and shippable starter kits — as long as single-node SQLite fits your scale.
  • Choose Supabase for Postgres and reach, Appwrite for one backend across every platform, and PocketBase for the least ops possible — and remember that for a weekend project, the fastest working backend is worth more than the most scalable one.

    Ready to turn what you build into income? List your Next.js, Supabase, Appwrite or PocketBase template on CodeCudos, wire the auth and security rules up properly, and ship something that reads as production-ready from the first run.

    Frequently asked questions

    What is the core difference between Supabase, Appwrite, and PocketBase?▾

    The core difference is the data model and how much infrastructure each one is. Supabase is built around a real PostgreSQL database: you get relational tables, SQL, row-level security, an auto-generated REST API through PostgREST and a GraphQL endpoint, plus Auth, Realtime, Storage, Deno-based Edge Functions and pgvector, all as separate services orchestrated together. That makes it powerful and familiar to anyone who knows SQL, but a full self-hosted stack is roughly a dozen containers. Appwrite is a batteries-included backend-as-a-service written in PHP on top of MariaDB, exposing a document-style Databases API (collections and attributes rather than raw SQL), Auth with dozens of OAuth providers, Functions in many language runtimes, Realtime, Storage with image transformations and built-in Messaging for email, SMS and push — self-hosted from a single docker-compose file and strong on mobile and Flutter. PocketBase is the opposite of a big stack: a single Go binary with an embedded SQLite database, a built-in admin UI, realtime over server-sent events, auth and file storage, which you run as one process and extend in Go or JavaScript. In one line: Supabase is Postgres-as-a-platform, Appwrite is a full multi-runtime BaaS, and PocketBase is a whole backend in one file.

    Which open-source backend is best for a Next.js or React app?▾

    For a typical Next.js or React app, Supabase is the default recommendation, because it has the deepest JavaScript ecosystem: a mature supabase-js client, first-class server-side helpers for the Next.js App Router, an enormous library of tutorials and starter templates, and Auth, database, storage and realtime that all speak the same client. It also uses Postgres, so you are never locked into a proprietary data model. Appwrite works well with Next.js and React too — its web SDK is clean and its server SDK covers API routes and server components — and it is the stronger choice if the same product also ships a mobile app, thanks to its Flutter and native SDKs and its unified auth across platforms. PocketBase has an excellent JavaScript SDK and pairs nicely with React or Next.js for smaller projects, prototypes and internal tools, where its single-binary simplicity is a feature; the main consideration is that its SQLite core is single-node, so it fits apps that scale vertically rather than ones expecting sudden horizontal scale. If you are unsure and building on the web, start with Supabase; choose Appwrite when mobile is a first-class target; choose PocketBase when you want the smallest possible thing to run.

    Is self-hosting Supabase, Appwrite, or PocketBase realistic — and how hard is each?▾

    All three are genuinely self-hostable, but the effort differs a lot. PocketBase is the easiest by a wide margin: it is a single executable, so you copy the binary to a server (or a small container), run it behind a reverse proxy, and you have auth, database, realtime, storage and an admin UI — many people run it on a $5 VPS, and backups are essentially copying the SQLite file, ideally with a tool like Litestream. Appwrite is the middle ground: its self-hosted install is a single docker-compose stack that bundles the API, MariaDB, Redis and the workers, so a one-command setup gets you the full product, and it is designed to be run this way by individuals and teams. Supabase is the heaviest to self-host: the stack is a collection of services — Postgres, GoTrue for auth, PostgREST, the Realtime server, Storage, Kong as a gateway and more — and while there is an official docker-compose, keeping it patched, backed up and upgraded is real operational work, which is why many teams use Supabase Cloud even though the code is open source. The honest summary: pick PocketBase if minimal ops is the goal, Appwrite if you want a full BaaS you can still run yourself, and Supabase self-hosting only if you are comfortable operating Postgres and several supporting services.

    How do the licenses and pricing compare, and can I avoid vendor lock-in?▾

    All three are open source under permissive licenses, which is the main protection against lock-in: Supabase is Apache 2.0, PocketBase is MIT, and Appwrite is BSD-3-Clause, so you can self-host any of them indefinitely with no license fee. On managed pricing, Supabase Cloud has a free tier and a Pro plan starting around 25 dollars per month, plus usage; Appwrite Cloud has a free tier and a Pro plan in a similar range; PocketBase has no official managed cloud at all — you self-host it yourself, though third-party hosts exist — which is either a limitation or a feature depending on your view. On lock-in specifically, Supabase is the least locked-in at the data layer because your data lives in standard Postgres you can dump and move anywhere, while Appwrite and PocketBase store data in MariaDB and SQLite respectively but wrap it in their own APIs, so migrating away means rewriting the data-access layer even though the underlying database is portable. If avoiding lock-in is a priority, the combination of a permissive license and a standard database — which Supabase maximizes — is what to look for.

    Which backend should I use if I want to sell a template or starter kit?▾

    It depends on the buyer you are selling to. Supabase is the safest commercial default for web-focused SaaS templates: the ecosystem is huge, buyers are most likely to already know it, and a Next.js plus Supabase starter is one of the most searched-for products in the market — the tradeoff is that buyers need their own Supabase project or self-hosted stack to run it. PocketBase is a superb choice for a template you want buyers to run in literally one command: you can ship the single binary alongside the frontend, and a non-expert buyer gets a working backend with an admin UI immediately, which lowers refunds and support tickets — ideal for indie tools, MVPs, prototypes and 'clone this app' kits. Appwrite shines for cross-platform product templates, especially anything with a web and mobile client, because one Appwrite backend and its Flutter and web SDKs cover both, and Appwrite Sites can even host the frontend. Whichever you choose, the thing that actually sells is production-ready quality — clean auth, sensible security rules, seeded data and clear setup docs — which is the bar buyers expect on CodeCudos regardless of the backend underneath.

    Related guides

    Browse Quality-Scored Code

    Every listing on CodeCudos is analyzed for code quality, security, and documentation. Find production-ready components, templates, and apps — or sell your own code and keep 90%.

    Browse Marketplace →