Exploring Appwrite
Tags: appwrite, opensource, backend
Published: 2021-10-03 17:53:49

So, as you read in my previous blog post that, **Appwrite** is a backend platform which allows you to automatically generate API services for your applications, without even writing a single line of code!! You don't need to worry about your backend services as **Appwrite** handles it for you.

Moving on, in this blog post, I will tell you about the services offered by Appwrite and scratch the surface on how to use them followed by a small tutorial.

![Untitled](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ipce6wt40ijgnsa9l8u.png) 

## Basic Services provided by Appwrite

### 1. Database:
Appwrite offers an easy-to-use , document-based database API for storing your app's data. It allows you to store documents in NoSQL format. This service lets you integrate with your users and app data directly from your client app, whether it’s a browser or a native app.

More about Appwrite Database [**here.**](https://appwrite.io/docs/client/database)

### 2. Users:
This service allows you to manage user accounts on the Appwrite platform. You don't need to manually manage user accounts, Appwrite does that for you. 

Don't confuse this with Accounts service as Accounts API works when the user is currently logged in and is usually using a client-side integration.

More about Appwrite Users [**here.**](https://appwrite.io/docs/server/users)

### 3. Storage:
This service allows you to manage all your project files securely and simply. Using this service you can upload, view, download and query all your files. It also has a integrated Anti-Virus which scans all the new files that are uploaded to your system, to keep you and your users safe.

More about Appwrite Storage [**here.**](https://appwrite.io/docs/client/storage)

### 4. Tasks: 
Tasks service is basically like [CRON](https://www.hivelocity.net/kb/what-is-cron-job/) Jobs. It manages all background related jobs for you. If you want to automate certain job or if you want to automate certain piece of code at a particular time, the Task will help you. 

Inside your Appwrite console, you can view all your tasks, their current statuses, previous and next runtime and a response log to view the result of previous executions. 

More about Appwrite Tasks [**here.**](https://appwrite.io/docs/tasks)

### 5. Webhooks:
Webhooks provides a way to invoke the code at a particular event. That event could be creation of user accounts, updation of user accounts, document in the database is created or deleted. All these events can be linked with Webhooks. 

They are basically URLs which gets invoked when CRUD Operations (Create, Read, Update, and Delete) take place on the Databases, Users and Storage services. Webhooks are designed to allow you to integrate custom behavior for your back end, easily and conveniently.

More about Appwrite Webhooks [**here.**](https://appwrite.io/docs/webhooks) 

### 6. Health:
Health service is basically used for checking health status of Appwrite's system. It allows you to manage cache, database connectivity, storage file systems, etc. It checks whether your  Appwrite server instance and all of its internal components are up and responsive.

More about Appwrite Health [**here.**](https://appwrite.io/docs/server/health) 

## Demo

Now that you have read about the basic services, let me show you a quick and easy demo which you can perform, to play around with Appwrite's services and explore them.

* Sign in into your Appwrite instance. 

  ![Appwrite dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5f7ojh5e2qvslgsv9tzl.png)

As you can see, the Console has a **Create Project** option. In Appwrite, each project contains set of Services (discussed above). So projects act as a container for all the services.

* Click on **Create Project**, give you project a name. In my case it's **Notes**.

![Create Project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb93qu8fnpihx56i0hxh.png) 

Now a Dashboard opens with all the services which are available. In the left panel, you can see the services offered by Appwrite. The main dialog box shows the current stats of your Project.

![Main Dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bftyujt7djxto3tbeb2m.png)

* Now, the first thing, we'll do is **Add a Platform**. The platform we will be adding is **Web App**.

![Web App](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nbiaijfirghln94escv.png)

Name your Web App and enter the localhost as `127.0.0.1`. 

* Now the first service we would be discovering is Database. Click **Database** on left panel and a new dashboard appears. The first thing you have to do is create a Collection. Create and name your Collection by clicking **Add Collection** button.

![Create Collection](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q480j7sw6gd3mh07otr2.png) 

Now we have to add **Rules** for this collection. Rules are the fields with datatypes, which stores the data in the Collection.
We'll be adding three rules i.e. Title(text), Content(text) and a Checkbox(boolean).

![Creating Rules](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r99mpg7q353rjgc0narc.png)

For Permissions, use `*` for the time being. That means giving permission to everyone. 

* Now that you have created your Collection, you can start adding data now. Go to **Documents** tab and click on **Add Document**. The fields which we have created are shown here.

![Create Task](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qcxps5p2gt8vom8dtwh.png)
 
After adding a document, you can see it on your **Documents** tab. Similarly you can add more Documents.

![Created tasks](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2xs86laqoxp2xlkdimft.png) 

* Now, let's explore **Storage** service. This is pretty simple service. It allows you to upload and store the files. You can upload any type of file format. 

![Storage Dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gavf5z3l8ppgyw6likqb.png) 

![Storage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j29m47ruakwoagc054je.png)

* Now click on **Users** option in left pane. Users option basically allows you to add users to your Project. They can read and write your files, on the basis of what permissions you have enabled on the file.

![Screenshot (184)](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npgj4gy8wu1eb0fp7req.png)

You can also see user's sessions and activity logs on your Project. And in the **Users** settings you can enable different types of authentications starting from basic email-id and password to OAuth2 Providers. You have a lot of options to choose from.

![User profile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn714bhow3q8hcy4fs07.png)

So, by following this demo, you just **scratched** the surface of Appwrite and it's services. You will be using a lot of other services like Webhooks, Functions, API Keys, Tasks, while building a real world application.  
 
## What's Next?

These are some resources, from which you can read the documentations, go through tutorials, build your own apps, connect with developers etc. 

* [**Documentation**](https://appwrite.io/docs)

* [**Demo Tutorials**](https://appwrite.io/docs/getting-started-for-web)

* [**Video Tutorials**](https://www.youtube.com/c/ReactBits/videos)

* [**GitHub Repository**](https://github.com/appwrite)

* [**Discord Server**](https://appwrite.io/discord)

### Happy Appwriting📝!!