Day 41 / Daily GitHub Discovery / Backend / APIs

Appwrite

Self-hosted Backend-as-a-Service with authentication, databases, file storage, and serverless functions.

~45,000 stars · checked Oct 4, 2026
TypeScriptPHPSwooleDockerMariaDBPostgreSQLRedisWebSocketsNode.jsPythonGoDart
Visit GitHub (opens in a new tab)

What it does

Appwrite is an open-source, self-hosted Backend-as-a-Service that provides authentication, schematized databases, file storage with image transformations, real-time WebSocket subscriptions, and serverless cloud functions supporting multiple programming languages.

Why it’s interesting

Unlike Firebase or other proprietary BaaS platforms, Appwrite gives you complete control over your backend infrastructure. You can self-host on any Docker-capable server and avoid vendor lock-in while still getting the convenience of a managed backend.

Real-world use case

Deploy Appwrite on a single VPS to serve as the unified backend for a Next.js web app and Flutter mobile app, handling user authentication across platforms, media uploads with automatic thumbnails, and triggering background Python scripts on database events.

What I can learn

  • 01

    Containerized BaaS Microservices

    Learn how Appwrite orchestrates an entire suite of backend microservices (HTTP API, WebSocket proxy, Redis queue workers, database migrations) within a unified Docker Compose network.

  • 02

    Multi-Language Serverless Execution

    Study how ephemeral container runtimes safely execute user code in Python, Node.js, or Go with low cold-start latency.

  • 03

    Declarative Permission Scoping

    Understand how permission rules are evaluated across collections, documents, and storage buckets at the API gateway layer.

One thing to explore

Workers and API Controllers

Inspect the Workers directory and API controllers to see how background task queues handle asynchronous jobs like webhooks and file processing.

Explore the source (opens in a new tab)

10-Minute Challenge

Run Appwrite locally and create a test project

Before you start: Docker installed on your machine, 15 minutes

  1. Run the Appwrite installer: 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:latest
  2. Navigate to http://localhost in your browser and create an admin account
  3. Create a test project and explore the Auth and Databases tabs
  4. Try creating a database collection and configuring permissions

Keep exploring

All repositories →