8 reasons to fall in ❤️ with Appwrite
Tags: opensource, serverless, webdev, productivity
Published: 2021-07-25 14:03:00

> I prepared a small quiz for you at the end of the article, so keep reading! 👀 Do you know all of the answers? 😈

Since I became active in [Appwrite's Discord server](https://appwrite.io/discord), I noticed **so many** people getting excited about Appwrite that I decided to dedicate one article to all features people ❤️ about Appwrite.

Sure, I could write about everything that Appwrite can do, but that is not the focus of this article. If you are interested in that, check out [Appwrite's articles](https://dev.to/appwrite). This article will show you **practical reasons** to use Appwrite for your next side project!

## 1. 💸 Free now, free forever!

Thanks to Appwrite being open-sourced, we can expect all future updates to be free for everyone. This doesn't seem like a huge deal, but companies such as Google (Firebase) or Amazon (AWS) have their pricing set, so it looks promising at first but gets **really** expensive once your business grows. With Appwrite, you can choose your own server provider and scale without spending half of your budget.
I can happily confirm that Appwrite will stay open-sourced and keep all updates for free even after it gets released (1.0.0). Appwrite plans to provide cloud hosting and other juicy features for companies, but they don't intend to have any cloud-exclusive features!

![GIF about money](https://media.giphy.com/media/SsTcO55LJDBsI/giphy.gif)

## 2. 🤩 Wonderful community

I have joined many developer communities to learn about technology... Heck, I even hit the 100 server limit on Discord that made me upgrade to Discord nitro!

Without the slightest hesitation, I can tell you that Appwrite has the most friendly, active and helpful Discord community I have ever seen. It doesn't matter if you are a student learning to build your first project or a senior with ten years of experience; there is always someone to answer your questions on your level. Alongside the Appwrite core team and moderators, there are always at least 200 online members on the server ready to chat with you about anything. Yep, anything! A few days ago, we talked about [API](https://isevenapi.xyz/) to check if a number is even 🧠

![GIF about community](https://media.giphy.com/media/evB90wPnh5LxG3XU5o/giphy.gif)

## 3. 🔥 1 production, 100 projects

Most open-source platforms are not built to handle multiple projects, and some are even unable to scale! That becomes a nightmare once your business grows, and you may be forced to switch to something else...

Great news for you! Appwrite can do both. You can host multiple projects on one Appwrite instance **AND** you can set up a Docker swarm to scale it across multiple servers.

{% post https://dev.to/appwrite/30daysofappwrite-docker-swarm-integration-2io9 %}

I personally find this **really** useful because only the Appwrite itself uses hardware resources, not the project. You can prepare a website for small local businesses and host it pretty much for free since your server hardware will barely notice their tiny traffic.

![GIF about production](https://media.giphy.com/media/NTur7XlVDUdqM/giphy.gif)
<figcaption>This is not a Firebase reference</figcaption>

## 4. 📈 Usage statistics

This is pretty related to the previous point...

Let's say you used Appwrite on 30 projects for your clients. Do you know how much to invoice the client for when talking about server expenses? Thanks to usage statistics, you can easily see which projects take the most space, have the most requests, or use the most CPU time for function executions. You can also see how many errors happened to functions in the past, so we could say you have a tiny alerting system in your hands. Last but not least, you can see bandwidth usage on each project separately and debug most of "it's slow" problems quickly.

> Oh man, at this point, I was already impressed by what Appwrite is capable of, and it is only the middle of this article! 🔥

![GIF about statistics](https://media.giphy.com/media/3orieVe5VYqTdT16qk/giphy.gif)


## 5. 🧰 API for everything

Appwrite tries to provide as many APIs as possible, so you can build the application without having to bundle 10 API servers together. Appwrite can help you to get:

- List of countries and their flags, continents, currencies, languages, phone codes, browser icons, credit card icons...
- Image preview (resize, rotate, ...)
- Placeholder photo of a user (their initials)
- QR code from a text
- Favicon from website URL

Can you see it? 😮 With Appwrite, you can focus on preparing the application instead of searching for *the best API* to do tiny tasks for your applications.

![GIF about APIs](https://media.giphy.com/media/Nx85vtTY70T3W/giphy.gif)

## 6. 📃 Task manager

We have all been there... We have... We have all created CRONS on a Linux server, tested it for half of the week to make sure it works properly and then it stopped working anyway because the server got restarted...

I personally have been looking for a good cron alternative and **fell in love** with Appwrite's task manager. Actually, if someone would use Appwrite only to host functions and run tasks, I would not be surprised.

Using Appwrite, you can schedule an automatic function execution using cron syntax. This function can do anything from sending newsletter emails to buying you a pizza. No limitations **at all**.

![GIF about crons](https://media.giphy.com/media/aSZSj0mT8f6tW/giphy.gif)


## 7. 💪 Continuous improvement

Appwrite is still in active development, so we can expect awesome new features with every update! From the Discord community, I found about these features:

- **Database refactor** to speed up the database and introduce new possibilities
- **Realtime** to easily keep frontend and backend in sync
- **Synchronous functions** that makes using Appwrite functions as a custom API server possible
- **Static hosting** to deploy your web application directly into Appwrite
- **Webhooks improvement** so we can not only send webhook requests but also receive them
- **Storage buckets** to increase the security of file storage
- **Locale API improvements** so you can translate your whole application using Appwrite

![GIF about improvement](https://media.giphy.com/media/55kiN4lkOPJrKg9hdv/giphy.gif)

## 8. 🦄 Over 10 SDKs

Appwrite has done an **amazing** job getting as close to developers as possible. No matter what coding language you use, you can easily start using Appwrite thanks to their client and server-side SDK libraries. **Instead of the developer adapting to a platform, the platform adapted to the developer.**

As far as I am concerned, Appwrite is actively improving Flutter SDK and is working on Unity SDK to deliver the platform to even more developers.

There is a whole repository for [Appwrite SDK generator](https://github.com/appwrite/sdk-generator) that helps **any** developer prepare SDK for **any** programming language. This tool helps keep all SDKs up to date with Appwrite features and easily fixable if there is some new error introduced by a new language version.

![GIF about sdks](https://media.giphy.com/media/3ofSBs4Q1f8Q4aRFkc/giphy.gif)

Let's play a game 🎲 Can you figure out the coding language from a tiny snippet of Appwrite code?

---

```javascript
// #1
let executionPromise = sdk.functions.createExecution("[FUNCTION_ID]", { 
  paymentType: "onetime"
});
```
{% spoiler Answer #1: %}
Javascript? Node? Deno? All of them!
{% endspoiler %}

---

```dart
// #2
Future result = account.create(
  email: 'email@example.com',
  password: 'password',
);
```
{% spoiler Answer #2: %}
Dart, Flutter!
{% endspoiler %}

```java
// #3
val avatars = Avatars(client)
GlobalScope.launch {
  val result = avatars.getQR(
    text = "https://appwrite.io/",
  )
   println(result); // Resource URL        
}
```
{% spoiler Answer #3: %}
Java, Kotlin!
{% endspoiler %}

---

```php
// #4
$health = new Health($client);
$result = $health->getTime();
```
{% spoiler Answer #4: %}
PHP!
{% endspoiler %}

---

```python
# #5
from appwrite.client import Client
from appwrite.services.locale import Locale

client = Client()
locale = Locale(client)
result = locale.get()
```
{% spoiler Answer #5: %}
Python
{% endspoiler %}

---

```ruby
# #6
functions = Appwrite::Functions.new(client);

response = functions.get_tag(function_id: '[FUNCTION_ID]', tag_id: '[TAG_ID]');

```
{% spoiler Answer #6: %}
Ruby
{% endspoiler %}

---


```bash
appwrite functions listTags --functionId="[FUNCTION_ID]" --search="[SEARCH]" --limit="0" --offset="0" --orderType="ASC"
```
{% spoiler Answer #7: %}
CLI
{% endspoiler %}

---

Did you answer them all correctly? Maybe you didn't? It's fine! We are learning something new every day. Everyone is. Either way, I've got a joke for you as a reward!
{% spoiler Do you know why this article only has eight points and not ten? %}
Because it's a matter of time when Appwrite trips and it will become:
**♾ reasons to fall in ❤️ with Appwrite** 🤯

{% endspoiler %}

---

That's it! I hope this article helped you understand why I fell in ❤️ with Appwrite. Fun fact, you just read the word `Appwrite` **over 40 times**. Appwrite! If you have any questions, feel free to join Appwrite's Discord server and chat with their amazing community: https://appwrite.io/discord

---

![Graphics made by SABO Design](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3ruvpuzbln9h1r9o31j.png)
<figcaption>Cover made by SABO Design.</figcaption>
🔗 [SABO Design](https://www.facebook.com/akorandordesigns
)