Appwrite is now available as a DigitalOcean 1-click app! Click to install! πŸš€
Community

Announcing Appwrite 1.0

Posted by Eldad Fux, Founder & CEO

After 48 version releases, +12,000 commits, +600 contributors, and over 24,000 GitHub stargazers, we're thrilled, excited, and honored to announce the release of Appwrite 1.0, our biggest milestone to date! This version is a major step in Appwrite's mission toward reducing software development complexity and making software development accessible and more enjoyable for all developers.

Version 1.0 is the first stable release of Appwrite. We have spent countless hours perfecting the Appwrite architecture, stack, and API to reach the point where we're confident in releasing the first stable and fully backward compatible version of Appwrite.

Building a backend as a service is a hard task. Sometimes it feels as hard as building ten different products at the same time. Reaching this milestone is another great evidence of the power the open source community has. Without it, it would probably take a few more years to get where we are right now. It is also great evidence of what values like transparency, trust, and collaboration which are the foundation of the Appwrite community, can help us all achieve together.

This milestone was only possible by thousands of developers using, testing, and playing with earlier versions of Appwrite, providing feedback, and contributing in many ways to make Appwrite better. Thank you.

What is Appwrite?

Appwrite is an open-source backend-as-a-service solution that provides all the core APIs required for building a modern web or mobile application. The different Appwrite services have APIs for managing Authentication, Databases, Storage, and Functions with support for most of the popular coding languages.

Appwrite was designed to abstract away all the common backend complexity and repetitiveness bound with modern software development. Appwrite is doing so by emphasizing ease of use, simplicity, and meeting developers where they are without forcing them to learn new methodologies or technologies unique to Appwrite.

What is Appwrite All About?

Simplicity

The focus on simplicity can be shown across the entire Appwrite developer journey. It's shown in the way we structured the getting started guide, the API docs, the many SDKs and integrations, the design of our APIs, and the focus on consistency and predictability of the developer experience across the platform.

Learning just one Appwrite service means you will easily understand the others. If you are familiar with the Appwrite Authentication service, you probably already know how to use Storage and Functions. Developers' experience shouldn't be taken lightly, just like user experience shouldn't be taken for granted. It's not just about enabling developers to build cool stuff. It's also about making the process of building innovative products fun and inspiring.

Flexibility

For Appwrite to meet developers where they are, we have gone the extra mile to ensure we build a platform that is flexible, rely on common standards, and focuses on making the Appwrite learning curve as small as possible.

Appwrite relies on common industry protocols for accessing the Appwrite API. As of now, the Appwrite API can be consumed using either a REST API, a Realtime API built on top of a WebSocket server, or one of the many Appwrite SDKs. GraphQL support is also expected soon. Appwrite supports 12 different SDKs for accessing the API for client and server applications. New SDKs are being released regularly to help developers stick to their platforms of choice and still harness the capabilities of Appwrite and build apps faster.

Appwrite also comes with support for dozens of integrations for OAuth providers, Storage solutions, logging services, and more.

To go even further, we have created over ten runtime environments for running serverless functions. Using Appwrite to build a Flutter application? Use Dart for coding instead of compromising or learning a new programming language that you or your team might not feel comfortable with. Building for iOS or Android? Use Appwrite's Swift, Java, or Kotlin runtimes.

Privacy and Security

Appwrite is designed with data privacy and security in mind. Not only that, Appwrite can be hosted wherever needed. It allows full ownership and control of data.

Appwrite has many advanced security features to protect data. This includes data encryption for all your secrets and sensitive information. Audit logging keeps track of all admins and user activity logs. Built-in SSL certificates that are auto-generated with Let's Encrypt, ensuring secure communication with clients at all times. Appwrite also automatically takes care of all certificate renewals.

The Appwrite built-in abuse and rate-limiting protection mechanism protects against malicious users. Appwrite supports a variety of password hashing algorithms available to securely protect users' passwords and import users from legacy platforms with their older hashing algorithms like Bcrypt, MD5, SHA, or Scrypt. Appwrite supports many more advanced security-focused features like virus scanning, CSRF protection, and more.

Open Source

Appwrite is 100% open source, not just for the show but because this is deeply rooted in who we are. Built-in the open with the support and contribution of a wide open source community.

With over 24,000 GitHub stargazers, Appwrite is also one of the fastest-growing open-source projects on the planet. Appwrite is built and maintained by over +600 maintainers and code contributors. The power of the community doesn't only help Appwrite move faster. It also helps us build better tools for developers.

Over 9,000 Discord members, +100k followers on social media, thousands of GitHub issues, pull requests, and discussions full of ideas, bug reports, and suggestions. Our active community acts as a secret sauce that helps us move in the right direction. The open source community is the critical ingredient in making Appwrite stand out, and this is also core to our values as an organization. Open source is all about transparency, collaboration, and trust, the same values that are core to what Appwrite is about.

Self-Hosting or Cloud

Self-hosting is excellent when focusing on security and privacy. It allows data ownership and enables hosting data everywhere needed. No matter if the cloud of choice is AWS, GCP, or DigitalOcean, Appwrite can even run on a Raspberry Pi device. Self-hosting allows better control over cloud costs, which doesn't always mean cheaper, but at times it will be. Self-hosting is also great for products that are bound to regulations like HIPAA or GDPR. This is an area where Appwrite shines as an alternative to solutions like Firebase.

Self-hosting is also a great way to play with Appwrite on a local setup quickly. Appwrite's self-hosted version was designed to be easy to install, has no disabilities or hidden quirks, and is ready to scale in production. Appwrite can quickly be deployed on a single core machine with 2GB memory with a single command

While our self-hosted version will always be there, it's not necessarily everyone's cup of tea. In the coming weeks, we will release our closed beta for the Appwrite Cloud, based on the same open-source version of Appwrite but with a fully managed solution to reduce the friction required for getting started. Early signup is available on our coming soon page for the Appwrite Cloud.

What is Included?

Appwrite comes bundled with all the core APIs and services required for building modern web, mobile, or desktop applications. All the APIs and services follow the same patterns and are accessible in the same way through the Appwrite REST or Realtime APIs and the different supported SDKs.

Authentication

Appwrite Authentication

Appwrite supports multiple authentication methods and has support for over 30 OAuth providers. Besides the classic email and password, there is also support for more authentication methods such as Anonymous, OTP, Magic URL, Invites, and JWT.

Appwrite Authentication also comes bundled with Users and Teams APIs. The Users API manages users' settings, permissions, activity logs, and active sessions. The Teams API allows the management of memberships and team roles and enables sharing of project resources such as buckets, files, database collections, and documents between the team members.

The Authentication service also includes advanced features like managing the hashing algorithms used for storing passwords, limiting the number of users allowed per project, and more security-focused features.

Databases

Appwrite Databases

The Appwrite Databases service exposes a JSON-based REST API that enables the management of application and users' data on top of the developer’s database of choice. The Appwrite Databases API allows developers to connect their database to client or server applications using a secure API integrated with Appwrite's permissions, authentication, rate-limiting, and access control capabilities. An interesting way to look at it is giving the under-the-hood database backend-as-a-service superpowers.

The Appwrite Databases service offers different database adapters and currently supports MariaDB and MySQL. Using the adapter design pattern, Appwrite could support more SQL or NoSQL adapters in the future, such as MongoDB (coming very soon!) or Postgres. Appwrite can also be connected to a managed database, whether it's located on AWS, GCP, Azure, or DigitalOcean, by setting the correct credentials.

While each adapter has its own obvious limitations due to its underlying technology, this approach still provides maximum flexibility by allowing you to use your database of choice and still enjoy all the capabilities that Appwrite brings to the table, including authentication, access control, security, functions, storage, abuse protection, logs and more.

Using the Appwrite Realtime API, you can listen to all the changes and events your database triggers and react to them in real-time.

Storage

Appwrite Storage

Appwrite's Storage service provides buckets to store application and user files. Each bucket has advanced compression and encryption capabilities. Appwrite also has an Anti-Virus integration to help application users to scan their files before they access them.

Each bucket can be configured to have maximum file size and a list of allowed file types. The Appwrite Storage API supports chunked upload and resumable downloads and has a preview API. The Preview API enables you to get preview thumbnails for your images and perform advanced image transformations to ensure you get the right images to display in your product.

Image Transformation

The Appwrite storage API also supports advanced compression algorithms to ensure your users can get their images in the fastest and most efficient way possible. Currently, the API supports the conversion of traditional image formats such as PNG, JPG, GIF, and Webp. Support for the AVIF format is also planned and should be expected soon. Starting with Appwrite 1.0, the storage compression now supports Zstd compression alongside the classic Gzip algorithm.

Like other Appwrite services, the Storage service also provides a lot of built-in integrations that allow you to host files on any of the supported storage providers or on a local machine. Some of the supported storage providers include adapters for S3, Backblaze, Wasabi, Linode, or DigitalOcean Spaces.

Functions

Appwrite Functions

Appwrite Functions allow developers to customize everything within Appwrite without deploying their own servers. Functions support over 10 different runtime environments, including Node, Python, PHP, Ruby, Dart, Kotlin, Swift, and more.

Functions in Appwrite can be triggered either manually through the dashboard, using the REST API, Appwrite CLI, by listening to a system event or by defining them with a CRON schedule for recurring execution.

Each function can set execution timeouts and has detailed logs and usage stats. Appwrite Functions are also very fast, with execution duration for some languages reaching a latency of less than 1ms.

Realtime

Appwrite Realtime

Realtime in Appwrite is supported by default everywhere. Unlike other traditional providers, Realtime is not enabled for just databases but is also available for the rest of the Appwrite services in the same way.

Using the Appwrite events, you can listen to any event that happens on your project and set a callback to respond. This includes document creation, file upload, or user signup. Appwrite supports hundreds of different events to allow full flexibility and control.

More!

Appwrite has more services like our avatars, locale, and health APIs that allow developers to shift focus towards building their products. While we constantly continue to improve our existing services by adding more depth, reliability, and enhanced performance, we also have exciting plans for the future with new services coming. We want Appwrite to become the complete platform for developers who seek to use top-class core APIs, have exceptional dev experience and focus on creating top-class products for their end-users.

What's New in Version 1.0?

Appwrite 1.0 is not only about becoming stable. We also added a lot of exciting new features and bug fixes like we like to do in every release. If you're already using Appwrite, you should read the full coverage of all the new updates and review the full release changelog on our GitHub repository.

What is Coming Next?

Appwrite still has lots of room to grow and evolve. We're excited for the future roadmap of Appwrite and confident in the potential of Appwrite to revolutionize how software is built and maintained. Together with the open-source community and wider developers community, we believe Appwrite has endless possibilities to simplify developers' lives and allow all of us to focus on innovation.

Get Involved!

Appwrite is built and designed by a community of passionate open-source developers. Getting started in the Appwrite community and becoming more involved is very easy. While many love to support the project with code contributions, there are other great ways to give a hand. Helping in the Discord community or through GitHub issues, sharing your feedback, reporting bugs, or spreading the word by creating written or video content and engaging with other developers on social media. Every contribution counts and helps us make Appwrite better.

First published on Sep 21th 2022