Serverpod vs Appwrite

Serverpod is an open-source alternative to Appwrite for Flutter teams. Both can be self-hosted, but with Serverpod, the backend is your own Dart code connected to a PostgreSQL database.

Get Started

Serverpod vs Appwrite at a glance

Both are open-source, self-hostable, and Flutter-friendly. The difference is the model. Appwrite is a prebuilt service suite that you integrate with via an SDK, and Serverpod is a framework in which the backend is your own Dart code.

Capability Serverpod Appwrite
Language ✓ Dart on the server and the client ✓ Flutter SDK, Dart function runtime
Type safety ✓ End-to-end, checked at compile time ✗ Rows as maps, optional codegen
Database ✓ PostgreSQL you own, direct SQL ✗ API-only TablesDB on MariaDB
Authentication ✓ Email, social sign-in, and passkeys ✓ Accounts, teams, and OAuth
Real-time ✓ Typed WebSocket streams ✓ WebSocket channel subscriptions
Messaging ✗ External service needed ✓ Push, SMS, and email campaigns
Self-hosting ✓ One server and PostgreSQL ✓ Docker Compose suite of services
Open source ✓ BSD-3 packages, SSPL server ✓ BSD-3
Pricing model Free to self-host, flat Cloud tiers Free tier, Pro from $25 plus usage

What is Appwrite?

Appwrite is an open-source backend-as-a-service: databases, accounts and teams, storage, functions, realtime, messaging, and static hosting, managed from a polished console. You can run it yourself with Docker or use Appwrite Cloud. It suits teams that want a ready-made backend suite with an admin UI and SDKs for many languages.

What is Serverpod?

Serverpod is an open-source backend framework for Flutter and Dart, and an alternative to Appwrite for teams that want the backend to be their own code. You write endpoint methods in Dart, data lives in PostgreSQL through a type-safe ORM, and your app talks to a generated client.

How they compare

Both let a Flutter team own their backend. The real decision is whether that backend is a suite of services you configure, or a Dart application you write.

A SQL database you can query directly

Serverpod’s data layer is plain PostgreSQL: models in YAML become tables, typed queries, versioned migrations, and raw SQL when you want it. Appwrite stores rows in TablesDB, its database API built on top of MariaDB, and access goes only through the API. Appwrite advises against connecting directly to the underlying database.

final orders = await Order.db.find(
  session,
  where: (t) => t.total > 100,
  orderBy: (t) => t.created,
);

In Appwrite, the same query is an SDK call against the TablesDB API, with rows returned as maps you convert yourself.

Full-stack Dart or SDK and functions

Appwrite has real Dart support: the Flutter SDK and a Dart runtime for Appwrite Functions. Each function is deployed and invoked independently. A Serverpod backend is a single persistent Dart application in which endpoints share models, database access, and state. The whole thing runs and debugs as a single process.

Type safety and code generation

Appwrite has type generation. Running appwrite types --language dart produces model classes you apply to row data returned as maps. Serverpod starts from the types: models generate the tables, the queries, and the client. The compiler checks the path from the database to the app without a conversion step.

Authentication and real-time

Appwrite’s accounts cover OAuth sign-in, teams, and organization membership, with real-time channel subscriptions in the SDK. Serverpod ships sign-in with email, social providers, and passkeys. Its real-time model is a typed stream, where an endpoint method returns a Stream of your models over a managed WebSocket.

Self-hosting and scaling

Both solutions can be self-hosted with Docker, but their footprints differ. Appwrite runs as a Docker Compose suite of cooperating services. Serverpod deploys as a single server container with PostgreSQL, optionally including Redis, keeping operations and scaling simple to reason about.

Pricing

Appwrite Cloud has a free tier with 2 projects and a Pro plan starting at $25 per project per month. Usage-based charges apply beyond the included quotas. Serverpod is free to self-host, and Serverpod Cloud offers flat monthly tiers starting at $19 per month. Both remove the platform fee if you host them yourself, leaving only your server costs. Current Appwrite rates are on the Appwrite pricing page.

Migrating from Appwrite

Your Flutter code and any Dart functions carry over as Dart, and SDK calls become generated client methods. The data model is the real work. TablesDB rows and their relationships are mapped to PostgreSQL tables via Serverpod models, exported via Appwrite’s API. Run both backends side by side and move one collection at a time.

Run them side by side

Move one table’s reads and writes to a Serverpod endpoint first. Your app keeps working against Appwrite for everything else while you compare.

Everything you get with Serverpod

Type-safe APIs with a generated client
PostgreSQL ORM with migrations
Authentication with email, social sign-in, and passkeys
Typed streams over WebSockets
Future calls and recurring cron tasks
File uploads to S3, GCP, and R2
Redis and in-memory caching
Testing framework with a real server

Why teams choose Serverpod

Full-stack type safety. Your API is written in Dart on both the server and the client, and every call is checked at compile time.
Own your data. Everything lives in plain PostgreSQL in your own infrastructure, with no vendor lock-in.
Zero-configuration deployments. Ship to Serverpod Cloud without touching a config file, or self-host anywhere.

Frequently asked questions

Is Serverpod an Appwrite alternative?

Yes. Both are open-source, self-hostable backends for Flutter. Serverpod is a framework for building backend services in Dart on PostgreSQL, while Appwrite is a prebuilt service suite with SDKs.

Can I migrate from Appwrite to Serverpod?

Yes, incrementally. Export rows from Appwrite’s API into PostgreSQL tables defined as Serverpod models, moving one collection at a time while both run side by side.

Does Serverpod give me direct SQL access?

Yes. Your data is plain PostgreSQL: use the type-safe ORM, run raw queries when you need them, and connect any SQL tool directly to the database.

Is Serverpod self-hosted like Appwrite?

Yes, both run with Docker. Appwrite deploys as a Compose suite of services, while Serverpod deploys as a single server container with PostgreSQL and optional Redis.

Stay up-to-date

Our mailing list keeps you up-to-date with new Serverpod releases and features. You will get an email about once a month or when something big is happening. We promise to keep it relevant and we have a strict no-spam policy.

© 2026 Serverpod AB
Built with Serverpod - Hosted on Serverpod Cloud