I do not often touch upon backend as my main focus at the time of this writing would be frontend, but backend is just as important as frontend in terms of building a web application. It allows us developers to create features such as user authentication, information storage via databases, and much more. While browsing through several subreddits as well as Twitter, I came across Appwrite, an open-source backend service that is seeming to gain quite a bit of traction. Let's take a look at what this service is and what it offers!
Appwrite - What is it?
From their documentation:
Appwrite is a secure, open-source backend that abstracts the complexity of common, complex, and repetitive tasks required for building a modern app.
Straightforward and right to the point, should be simple enough to understand, right? Appwrite is a backend service that is designed to provide you various tools to establish your backend without worrying too much of the fine details that goes into creating your backend.
By accessing their various tools and APIs (REST, GraphQL, Realtime), we as developers can focus on creating our applications without worries of the finer details.
Appwrite Features - First Glance
Reading their documentation, Appwrite provide various features that any backend should have. Authentication, databases, file storage, server-side functions, and more.
Sounds quite similar to other cloud-based backend services like Supabase and Firebase, doesn't it?
First Experience
Since I initially wanted to try out Appwrite Cloud, I won't focus on any other architecture such as Docker.
Upon visiting their page, I went ahead and made an account to use their services. Username, email, password, the usual for any registration. First step done.
Dashboard
Once logged in, I am greeted with a prompt that asks me for my first project. I wanted to check their services out so I gave it a generic name "test" for now.
When clicking my project, I am then greeted a page that shows me the various Appwrite features for my project. Great, let's start exploring around!
Web SDK
For my case, I am probably gonna use Appwrite to create web applications, so let's take try adding a Web App SDK to our project.
Register your app by giving it a name and host name. For local development purposes, localhost is what you want. If you plan on deploying it, you can change the host name settings later.
Get the SDK and install it into your project with your preferred package manager. Afterwards, add it right into your project bundler.
Initiate the SDK by simply copy and pasting the provided example code they gave you.
Aaaaaaaand, that's it! Our dashboard will change and will show us various statistics such as bandwidth, API requests, databases, etc.
Authentication
Clicking the Auth tab directs us to the authentication page. Appwrite provides their own authentication service that allows us developers to create users for our applications as well as provide user sessions, user activities, and their information. There is quite a bit of options to look at so feel free to read around their documentation to learn more about the full extent of their authentication service by clicking here.
Databases
Clicking the Databases tab directs us to the database page. Here, we can see the statistics of all of our databases as well as create and manage new ones. Simple enough!
Upon creating a database, you are redirected to a page that allows you to create a Collection. Collections are essentially containers that store documents within that specific database. If you ever used the other cloud-based backend services like Supabase or Firebase, then you should be very familiar with how this process is as Appwrite Collections heavily resembles the usage of their NoSQL databases. If you wish to know more about Appwrite Collections and how it works, you can take a look at their documentation by clicking here.
For each collection, you must establish the attributes (or shape) of that collection. Here's an example: imagine you have a collection of cars. All cars should have a model, make, and color so you should define your collection to take those as attributes - quite a simple process.
Functions
Clicking the Functions tab directs us to the Function page, where we can define code that allows us to extend the functionality of Appwrite. As of this very moment, I do not plan on using this feature but for developers who wish to extend the functionality of Appwrite to meet their own use case (such as running certain code when a user registers via the Appwrite authentication system event triggers), then this section is definitely for you! Learn more by visiting their documentation here
Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code. Appwrite can execute your custom code in response to any Appwrite system event like account creation, user login, or document update. You can also schedule your functions or start them manually by triggering your function from an HTTP endpoint using the Appwrite client or server APIs.
Storage
Clicking the Storage tab directs us to a buckets page. Appwrite Storage allows us developers to storage various media and image files for our project needs as well as various APIs for accessing or downloading these files.
In addition, Appwrite even provides their own API that allows us to manipulate images as well. Crop, resize, rotate, you name it! As all things, you should definitely check out the documentation page to learn more about this service.
My Verdict on Appwrite
If you haven't noticed, for most of the features I checked out, I wanted to redirect you, the reader, to their documentation. I would like to say this as someone who has taken an interest in their service and read around their documentation:
Their documentation is absolutely fantastic!
Whenever I had a question regarding a specific feature, or have no idea where to start, the documentation resolved it for me. Not only that, whenever I wanted to implement an Appwrite service into my app, they even provided a clean example on how to actually implement it into your project.
It was quite easy to create a project and implement their services into my test application with little to no problems at all.
If I had to choose something to nitpick, then it would be their API limitation. I do understand that rate limits has to be set in stone to prevent abuse of services but be sure to know the limitation of the services you plan on using because more often than not, I ran into my hourly rate limit quite often while running tests for my application. Click here to view their rate limits
Besides that, you could say I am quite sold when it comes to utilizing Appwrite into my project; no wonder it's gaining traction in the community and for good reason!