DEV Community

Alex Spinov
Alex Spinov

Posted on

Appwrite Has a Free Open-Source Backend Platform

Appwrite is a free, open-source backend-as-a-service (BaaS) platform that provides all the APIs you need to build any application.

What Is Appwrite?

Appwrite is a self-hosted Firebase alternative. It gives you authentication, databases, storage, functions, and messaging — all in one platform.

Key features:

  • Authentication (email, OAuth, phone, magic link)
  • Databases (document-based with relationships)
  • Storage (file uploads with previews and transformations)
  • Serverless Functions (Node.js, Python, Dart, Ruby, etc.)
  • Messaging (email, SMS, push notifications)
  • Real-time subscriptions
  • Teams and permissions
  • SDKs for every platform
  • Self-hostable or cloud

Quick Start

Cloud (free tier)

Sign up at cloud.appwrite.io. Create a project. Start building.

Self-Host

docker run -it --rm \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
  --entrypoint="install" \
  appwrite/appwrite:1.6
Enter fullscreen mode Exit fullscreen mode

Answer a few questions, and your backend is ready at http://localhost.

Authentication

import { Client, Account } from "appwrite";

const client = new Client()
  .setEndpoint("https://cloud.appwrite.io/v1")
  .setProject("your-project-id");

const account = new Account(client);

// Sign up
await account.create("unique()", "user@email.com", "password123", "John Doe");

// Login
await account.createEmailPasswordSession("user@email.com", "password123");

// OAuth
await account.createOAuth2Session("google", successUrl, failUrl);
Enter fullscreen mode Exit fullscreen mode

Database

import { Databases, ID, Query } from "appwrite";

const db = new Databases(client);

// Create document
await db.createDocument("mydb", "posts", ID.unique(), {
  title: "My First Post",
  content: "Hello World",
  tags: ["intro", "appwrite"]
});

// Query documents
const posts = await db.listDocuments("mydb", "posts", [
  Query.equal("tags", ["appwrite"]),
  Query.orderDesc("$createdAt"),
  Query.limit(10)
]);
Enter fullscreen mode Exit fullscreen mode

Storage

import { Storage, ID } from "appwrite";

const storage = new Storage(client);

// Upload file
const file = await storage.createFile("uploads", ID.unique(), document.getElementById("file").files[0]);

// Get file preview (with transformations)
const preview = storage.getFilePreview("uploads", file.$id, 300, 300); // 300x300 thumbnail
Enter fullscreen mode Exit fullscreen mode

Serverless Functions

// functions/hello/src/main.js
export default async ({ req, res, log }) => {
  const name = req.body.name || "World";
  log(`Processing request for ${name}`);

  return res.json({
    message: `Hello, ${name}!`,
    timestamp: new Date().toISOString()
  });
};
Enter fullscreen mode Exit fullscreen mode

Deploy with: appwrite deploy function

Free Cloud Tier

Feature Free Pro
Bandwidth 10GB 300GB
Storage 2GB 150GB
Functions 750K exec 3.5M exec
Databases Unlimited Unlimited
Users 75K MAU 200K MAU
Team members 1 Unlimited

Appwrite vs Alternatives

Feature Firebase Supabase Appwrite
Self-host No Yes Yes
Database NoSQL only PostgreSQL Document DB
Auth Yes Yes Yes
Storage Yes Yes Yes
Functions Yes Yes (Edge) Yes
Messaging FCM only No Email+SMS+Push
Open source No Yes Yes
Offline support Yes No No

Real-Time

client.subscribe("databases.mydb.collections.posts.documents", (response) => {
  console.log("Document changed:", response.payload);
});
Enter fullscreen mode Exit fullscreen mode

Who Uses Appwrite?

With 46K+ GitHub stars:

  • Mobile app developers
  • Web developers building full-stack apps
  • Startups needing rapid backend development
  • Companies wanting self-hosted BaaS

Get Started

  1. Sign up for cloud or self-host
  2. Create a project
  3. Install SDK for your platform
  4. Build your app with auth, database, storage

Full backend in 5 minutes. No server code needed.


Need external data for your app? Check out my web scraping tools on Apify — collect data from any website and feed it into Appwrite. Custom solutions: spinov001@gmail.com

Top comments (0)