Introducing Appwrite: An Open-Source Backend Server for Mobile and Web Developers

Build apps faster

Eldad A. Fux
Better Programming

--

Photo by Rami Al-zayat on Unsplash

Appwrite is a new open-source, end-to-end, back end server for front-end and mobile developers that allows you to build apps much faster. Its goal is to abstract and simplify common development tasks behind REST APIs and tools, helping developers build advanced apps faster.

In this piece I will cover some of the main Appwrite services. I will explain their main features and how they’re designed to help you build your next project much faster than if you had to write all your back end APIs from scratch.

Appwrite server is packaged as a Docker container which you can easily set up using a simple docker-compose command from your terminal, either on your local machine or cloud provider.

Installation is as simple as running one command from your command line terminal.

Authentication

The Appwrite Authentication service lets you easily manage user registration and login to your app. The Auth service also offers built-in integration with multiple OAuth providers such as Facebook, Github, LinkedIn and more.

You can easily integrate OAuth providers as a new sign in methods for your app

Beside managing access control to your app and its various resources, the Auth service also abstracts other repeating tasks such as managing user email confirmation and password recovery.

The Auth service saves a lot of the time and concerns that come with building a stable and secure user authentication and authorization system that has to integrate with multiple third-party login methods.

Account

The Appwrite Account service exposes your client with an API that allows you to interact with your current logged-in user account.

Appwrite Account service lets you manage your user active sessions.

The account service allows your users to update their account-related information and save their private preferences like their UI language, timezone or favourite theme. You can set your users with any preferences you wish.

You can also use the API to get a list of the user active session, including information about the session location, device, operating system, and user-agent. Using the API security logs endpoint you can let your users review their latest logins, password recoveries, and other security-sensitive events.

Database

Appwrite Database dashboard allows you to easily explore your project collections and documents.

The Appwrite Database service lets you integrate with your users and app data directly from your client app, whether it’s a browser or a native app. Each document in the database has the ability to nest other child documents. Using the Appwrite database filters you can apply advanced queries and filter the nested documents collection.

Each document can set both read and write permissions to a specific user, a team of users, an API key or a user role. Using the Appwrite Database, a simple yet flexible permissions mechanism, you can manage complex and sophisticated access control logic for your app.

The Appwrite Database also gives you the flexibility to choose between structured data collection or a flexible collection to manage your data as you go. Enforce your data structures and validations rules for each document in your collection.

Storage

The Appwrite Storage service is the easiest way to let you or your app users upload and manage their files securely and simply.

The API takes advantage of the same simple read and write permissions mechanism that the database use. This allows you to easily decided whether your files could be accessed by all users, specific users or even teams of users.

Appwrite Storage API allows you to easily integrate secure file upload in your application.

Appwrite Storage service also offers built-in integration with an auto-updated anti-virus server. All new files that are uploaded to your system are scanned and validated to keep you and your users safe.

One of the most useful features is the ability to preview the content of your files and show them as thumbnails in your app or website. You can also change the size of your thumbnail dynamically, convert them between different image formats (webp is supported!) and change their quality to improve network performance.

Teams

The Appwrite Teams service allows you and your users to create teams and share permission to different API resources, such as files or documents. This is a great and simple way to implement complex access control requirements for your product.

Each team member can also be granted with different roles to allow you even greater flexibility.

Tasks

Appwrite Task service is a great way to set up recurring scheduled jobs.

Instead of handling complex crontabs or long-running daemons and worrying about things like fault tolerance, monitoring, and error logging, all you need to do is to submit a form with your task as an HTTP endpoint and a cron-like syntax to indicate how often should it be executed. It’s that simple.

You can also use the tasks advanced options to add different HTTP headers to your request or protect it with a basic HTTP authentication. Needless to say, all your sensitive HTTP passwords are securely encrypted in the Appwrite internal database.

Webhooks

You can easily register a new webhook from your Appwrite console.

Appwrite Webhooks are designed to allow you to integrate custom behavior for your back end, easily and conveniently.

Want to receive an SMS when a new user registers to your app? Want to purge the cache when one of your app documents gets updates? Just add a new webhook that triggers an HTTP endpoint on your end when the specific Appwrite event triggers. Using Appwrite Webhooks you’re only limited by your imagination.

What’s Next?

In this piece, I’ve highlighted some of the more noticeable Appwrite services. In future posts, I’ll explore some of the features in more depth and explain how to integrate them into your code.

In the meantime, I encourage you to read the Appwrite official docs and API references to learn more about what the different Appwrite tools have to offer developers.

If you like this project and want to contribute it, do so by opening new issues or sending new pull requests in the project Github repository.

--

--

Entrepreneur, Software Architect, open source enthusiastic and the creator of appwrite.io. You can follow me on twitter: https://twitter.com/eldadfux