Announcing Appwrite 0.15 with Phone Authentication & More!
Tags: opensource, news, cloud, showdev
Published: 2022-06-28 14:36:54

Today, we're thrilled to announce the official release of Appwrite 0.15, including one of our most anticipated features: **Phone Authentication**! 🥁 

Besides Phone Authentication, Appwrite 0.15 also comes with some exciting features, including improved Metadata on all Resources, Webhook Signature, and multiple bug fixes.

### 🤔 New to Appwrite?
> [Appwrite](https://appwrite.io/) is an open-source back-end-as-a-service that abstracts all the complexity of building a modern application by providing you with a set of REST and Realtime APIs for your core back-end needs. Appwrite takes the heavy lifting for developers and handles user authentication and **authorization**, **databases**, **file storage**, **cloud functions**, **webhooks**, and much more!

## 📱 Phone Authentication is Here!
![Phone Authentication](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwkgp4oam1mjcbu6xfqh.png)
With this release, we are introducing a feature, which has been one of our longest open issues on the Appwrite GitHub repository. Now you are able to authenticate Users, by sending them 6 digits to their phone and have them enter them in your application. Phone authentication will be the 6th authentication method that is now supported at Appwrite alongside **email/password**, **anonymous login**, **magic links**, **team invites** and **JWT**.

Initially there are 3 providers which can be used with Appwrite to send SMS verification codes:
- [Twilio](https://www.twilio.com/)
- [TextMagic](https://www.textmagic.com/)
- [Telesign](https://www.telesign.com/)

The following Environment Variables have been added for configuring Phone Authentication:

* **_APP_PHONE_PROVIDER**
Provider used for delivering SMS for Phone authentication. Use the following format: `phone://[USER]:[SECRET]@[PROVIDER]`. Available providers are **twilio**, **text-magic** and **telesign**.


* **_APP_PHONE_FROM**
Phone number used for sending out messages. Must start with a leading '+' and maximum of 15 digits without spaces (like +123456789).

Once you have set up your environment variables with your favorite provider credentials, you can call the [`createPhoneSession`](https://appwrite.io/docs/client/account?sdk=web-default#accountCreatePhoneSession) method, passing the phone number of the User. This method will send a six digit code to your user as an SMS message.
Once received by your user and submitted back to your application or website , you can verify your user’s code - which is valid for 15 minutes - using the  [`updatePhoneSession`](https://appwrite.io/docs/client/account?sdk=web-default#accountUpdatePhoneSession) method.

![Appwrite Phone Authentication](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ib9moczdf5zx02k70nu.png)

We have also added the `phone` and `phoneVerified` attributes to the [User Object](https://appwrite.io/docs/models/user). These new attributes will help you know the user verification status and decide whether you want to force the user to verify his phone or not.

In summary, following endpoints have been added to the **Account Service:**

* **createPhoneSession**
For initializing the phone authentication.

* **updatePhoneSession**
For completing the phone authentication.

* **updatePhone**
For adding a phone number to your user’s account.

* **createPhoneVerification**
For initializing phone verification.

* **updatePhoneVerification**
For completing phone verification.

Additionally the **Users Service** has these new endpoints:

* **updatePhone**
For updating the use phone number.

* **updatePhoneVerification**
For changing verification status.

## 📀 Multiple Databases For Each Project

![Appwrite Databases](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fha056dvr9v8bqcmoqa.png)

Until now, each Appwrite project could only use a single database. Starting with version 0.15, this is no longer the case. We're happy to introduce a **new database layer** to allow you to have as many database instances as you want under a single Appwrite project. Currently, all your project databases still have to use the same database adapter under the hood as defined in your Appwrite's instance environment variables, but this is our first step towards adding support for multiple database adapters under the same Appwrite project. 

In the next few months, we will continue to expand our database adapters support, and we can already share that besides existing support for **MariaDB and MySQL**, we are working on adding support for both **MongoDB and Postgres**. With the new database layer in place, we will allow you to have multiple adapters under the same project. This will allow you to micro-optimize your project's performance, choose the best technology for your specific use case, and give your team the flexibility and comfort to work with the tools and technologies you already love and trust. All of that is on top of the same Appwrite experience you are already familiar with.

![Multiple Databases](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d4sk23n061lni36c6g4m.png)

## 🎉 New `$createdAt` & `$updatedAt` Attributes
They are finally here, `$createdAt` and `$updatedAt` are now part of every Resource in Appwrite and contain a timestamp of the date of creation and the latest update. This comes in very handy, if the ordering of the resources is important or if you want to implement offline sync with your application. The new attributes are `$createdAt` and `$updatedAt`.

## 🔐 Webhook Signatures

![Appwrite Webhook Signatures](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6vsu1j8yc2hwenopgz7m.png)
Security is vital for everyone here at Appwrite, and we strive to give you easy-to-use tools to keep you and your users safe against web threats. This commitment to security is why with version 0.15, we have introduced the ability to validate webhooks with Appwrite. Webhooks now include a `x-appwrite-webhook-signature` which can be used in combination with a unique Signature Key found in the Webhook to validate the Webhook is actually coming from Appwrite.

## 🔮 New OAuth Provider for Dailymotion and Autodesk, Gitlab Got an Upgrade
![Appwrite OAuth Provider](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ow1xnqim1otg2v3cd62i.png)

We introduced new OAuth providers for **Dailymotion** and **Autodesk**. These new adapters are taking our count to a total of **32(!) supported OAuth providers** in Appwrite. On top of the new providers, the GitLab adapter has also been upgraded to support a custom hostname for those of you who are using a self-hosted edition of GitLab.

## 🥳 And More!
We still haven't covered everything! There's lots more bug fixes and other micro optimizations we made under the hood to make your experience with Appwrite better! 

To get all the details on Appwrite 0.15, check out all the changes in the [changelog on GitHub](https://github.com/appwrite/appwrite/blob/master/CHANGES.md#version-0150).

## ⏭ What’s Next?
Appwrite 0.16 is not far away and we promise it's going to be even more exciting 🤩 We'll continue improving upon Appwrite's solid performance, flexibility and adding amazing new features.

Do you have ideas for an exciting new feature ? Open up [a Github Discussion](https://github.com/appwrite/appwrite/discussions) so you can get feedback from the core team, maintainers and our ever growing community.

You're welcomed to join us [on Discord](https://appwrite.io/discord) to get all the latest updates about new Appwrite versions and chat directly with the Appwrite team.