Appwrite is a secure end-to-end backend server for Web, Mobile, and Flutter developers that is packaged as a set of Docker containers for easy deployment ๐Ÿš€

Last update: May 27, 2022

Appwrite Logo

A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] app

Discord Docker Pulls Build Status Twitter Account Translate Swag Store

Appwrite 0.12 has been released! Learn what's new!

Appwrite is an end-to-end backend server for Web, Mobile, Native, or Backend apps packaged as a set of Docker microservices. Appwrite abstracts the complexity and repetitiveness required to build a modern backend API from scratch and allows you to build secure apps faster.

Using Appwrite, you can easily integrate your app with user authentication & multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, and more services.

Appwrite

Find out more at: https://appwrite.io

Table of Contents:

Installation

Appwrite backend server is designed to run in a container environment. Running your server is as easy as running one command from your terminal. You can either run Appwrite on your localhost using docker-compose or on any other container orchestration tool like Kubernetes, Docker Swarm, or Rancher.

The easiest way to start running your Appwrite server is by running our docker-compose file. Before running the installation command make sure you have Docker installed on your machine:

Unix

docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
    --entrypoint="install" \
    appwrite/appwrite:0.12.1

Windows

CMD

docker run -it --rm ^
    --volume //var/run/docker.sock:/var/run/docker.sock ^
    --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
    --entrypoint="install" ^
    appwrite/appwrite:0.12.1

PowerShell

docker run -it --rm ,
    --volume /var/run/docker.sock:/var/run/docker.sock ,
    --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ,
    --entrypoint="install" ,
    appwrite/appwrite:0.12.1

Once the Docker installation completes, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after installation completes.

For advanced production and custom installation, check out our Docker environment variables docs. You can also use our public docker-compose.yml file to manually set up an environment.

Upgrade from an Older Version

If you are upgrading your Appwrite server from an older version, you should use the Appwrite migration tool once your setup is completed. For more information regarding this, check out the Installation Docs.

Getting Started

Getting started with Appwrite is as easy as creating a new project, choosing your platform, and integrating its SDK into your code. You can easily get started with your platform of choice by reading one of our Getting Started tutorials.

Services

  • Account - Manage current user authentication and account. Track and manage the user sessions, devices, sign-in methods, and security logs.
  • Users - Manage and list all project users when in admin mode.
  • Teams - Manage and group users in teams. Manage memberships, invites, and user roles within a team.
  • Database - Manage database collections and documents. Read, create, update, and delete documents and filter lists of document collections using advanced filters.
  • Storage - Manage storage files. Read, create, delete, and preview files. Manipulate the preview of your files to fit your app perfectly. All files are scanned by ClamAV and stored in a secure and encrypted way.
  • Functions - Customize your Appwrite server by executing your custom code in a secure, isolated environment. You can trigger your code on any Appwrite system event, manually or using a CRON schedule.
  • Locale - Track your user's location, and manage your app locale-based data.
  • Avatars - Manage your users' avatars, countries' flags, browser icons, credit card symbols, and generate QR codes.

For the complete API documentation, visit https://appwrite.io/docs. For more tutorials, news and announcements check out our blog and Discord Server.

SDKs

Below is a list of currently supported platforms and languages. If you wish to help us add support to your platform of choice, you can go over to our SDK Generator project and view our contribution guide.

Client

  • โœ…   Web (Maintained by the Appwrite Team)
  • โœ…   Flutter (Maintained by the Appwrite Team)
  • โœ…   Apple - Beta (Maintained by the Appwrite Team)
  • โœ…   Android (Maintained by the Appwrite Team)

Server

  • โœ…   NodeJS (Maintained by the Appwrite Team)
  • โœ…   PHP (Maintained by the Appwrite Team)
  • โœ…   Dart - (Maintained by the Appwrite Team)
  • โœ…   Deno - Beta (Maintained by the Appwrite Team)
  • โœ…   Ruby (Maintained by the Appwrite Team)
  • โœ…   Python (Maintained by the Appwrite Team)
  • โœ…   Kotlin - Beta (Maintained by the Appwrite Team)
  • โœ…   Apple - Beta (Maintained by the Appwrite Team)
  • โœ…   .NET - Experimental (Maintained by the Appwrite Team)

Community

Looking for more SDKs? - Help us by contributing a pull request to our SDK Generator!

Architecture

Appwrite Architecture

Appwrite uses a microservices architecture that was designed for easy scaling and delegation of responsibilities. In addition, Appwrite supports multiple APIs (REST, WebSocket, and GraphQL-soon) to allow you to interact with your resources leveraging your existing knowledge and protocols of choice.

The Appwrite API layer was designed to be extremely fast by leveraging in-memory caching and delegating any heavy-lifting tasks to the Appwrite background workers. The background workers also allow you to precisely control your compute capacity and costs using a message queue to handle the load. You can learn more about our architecture in the contribution guide.

Contributing

All code contributions - including those of people having commit access - must go through a pull request and be approved by a core developer before being merged. This is to ensure a proper review of all the code.

We truly โค๏ธ pull requests! If you wish to help, you can learn more about how you can contribute to this project in the contribution guide.

Security

For security issues, kindly email us at [email protected] instead of posting a public issue on GitHub.

Follow Us

Join our growing community around the world! See our official Blog. Follow us on Twitter, Facebook Page, Facebook Group , Dev Community or join our live Discord server for more help, ideas, and discussions.

License

This repository is available under the BSD 3-Clause License.

GitHub

https://github.com/appwrite/appwrite
Comments
  • 1. Help Translate Appwrite Locale and Email templates

    Currently, Appwrite locale and email templates support 44 locales. We need help supporting more languages and improving current translations.

    Translating is as easy as adding a few PHP file with new locale as prefix in file names.

    Update (#Hacktoberfest 20)

    Please submit any PRs against branch 0.7.x with the updated file structure, as shown below โฌ‡๏ธ

    Structure

    List of file required for new locale are:

    Email Templates app/config/locale/translations/templates/en.email.auth.confirm.tpl app/config/locale/translations/templates/en.email.auth.invitation.tpl app/config/locale/translations/templates/en.email.auth.recovery.tpl

    Locale Lists and Settings app/config/locale/translations/en.php app/config/locale/translations/en.continents.php app/config/locale/translations/en.countries.php

    Configuration and Loading Add the new language to Appwrite config file: /app/config/locale/codes.php (order by ABC) Load the new translation here: ./app/init.php (line: 224) (order by ABC)

    Make sure to keep PHP array keys exactly the same.

    Template Status

    โœ… = Updated - You can still submit PRs with fixes or improvements โ›”๏ธ = Outdated - Update to match languages that are marked as updated ๐Ÿ†˜ = Missing - No translation has yet been contributed (fallback to english)

    New locales are always welcomed.

    | Locale | Phrases | Countries | Continents | Template - confirm | Template - invite | Template - recovery |--|--|--|--|--|--|--| | af | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ar | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | bn | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | cat | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | cz | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | de | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | en | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | es | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | fi | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | fo | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | fr | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | gr | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | he | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | hi | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | hu | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | hy | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | id | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | is | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | it | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ja | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | jv | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | km | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ko | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | lt | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ml | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | mr | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ms | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | nl | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | no | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | np | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ph | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | pl | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | pt-br | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | pt-pt | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ro | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ru | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | si | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | sl | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | sq | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | sv | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ta | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | th | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | tr | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | ua | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | vi | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | zh-cn | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… | | zh-tw | โœ… | โœ… | โœ… | โœ… | โœ… | โœ… |

    Reviewed by eldadfux at 2019-09-23 18:26
  • 2. ๐Ÿ“š Documentation: setup https

    ๐Ÿ’ญ Description

    Hi, I could not find in your documentation how to set up an https endpoint on an Ubuntu server. I have already set up my 443 port for my ssl certificate. How can I allow an appwrite endpoint on an SSL url (e.g. port 444). Thanks

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by kiloki-official at 2021-12-12 09:57
  • 3. Help developers by writing a blog post about Appwrite๐Ÿ—ž

    Introduction

    Appwrite has been and always will be a tool for developers. To emphasize this, we want to create the the best developer experience possible by providing enough guides and examples for new Appwriters.

    Your task is to write a blog post about Appwrite. It can be anything! A story about your Appwrite journey, what concepts you learned by using Appwrite, guide how to connect Appwrite to something... You are limited only by your imagination. It can be anywhere! We accept submissions of articles on any well-known platform, whether it is Medium, Dev.to, HashNode or something else.

    Requirements:

    • Your article has to be publicly available
    • Your article must tag appwrite in any way (hashtag, embedded, link...)
    • Your article must be at least 1000 words long
    • Your article should look nice ๐Ÿ‘€ (use titles, subtitles, screenshots, images, gifs, or even memes)

    Task summary:

    • [ ] Write a blog post about Appwrite
    • [ ] Publish an article on your favorite platform or website (Medium, Dev.to, HashNod...)
    • [ ] Share the article on social media (Reddit / HackerNews / Twitter / Facebook / Other) - optional
    • [ ] Submit PR to appwrite/awesome-appwrite with a link to your article

    This issue does not require assignment, and can be contributed by anyone! Just let us know you're working on it!

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? Go ahead! We are accepting as many articles as the community can create. One note, quality over quantity.

    Happy Appwriting!

    Reviewed by Meldiron at 2021-09-30 08:10
  • 4. Implement generateUnsplashImage() Appwrite Function โšก

    Introduction

    Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code ๐Ÿคฉ You can learn more at our official Appwrite Functions docs.

    Your task is to implement generateUnsplashImage function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should take a keyword as an input, use it as a keyword for Unsplash search, pick the first image and return imageUrl and imageAuthor.

    Please make sure to store all configurable parameters as environment variables, so others can start using your script without having to edit it. If some data is different for each execution, make sure to use APPWRITE_FUNCTION_EVENT_DATA or APPWRITE_FUNCTION_DATA environment variable.

    Tasks summary:

    • [ ] Fork & clone Appwrite's demos-for-function repository- [ ] Create feat-implement-generate-unsplash-image-X branch where X is programming language you used
    • [ ] Write code for the function
    • [ ] Test the function using Appwrite
    • [ ] Write a README.md explaining what function does, how to use and customize it. Here is an example.
    • [ ] Submit pull request to our demos-for-function repository

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š There are 9 languages in which you can implement this function. When requesting to be assigned, please mention which language would you like to use.

    Assignees table

    โœ… = Done - This language has already been finished โš’ = In progress - Someone is already working on this language โŒ = Unassigned yet - This language can be assigned to you

    | Function / Language | Deno | NodeJS | PHP | Python | Ruby | Dart | .NET | Java | Kotlin | | --------------------- | ---- | ------ | --- | ------ | ---- | ---- | ---- | ---- | ------ | | generateUnsplashImage | โš’ crossphoton | โš’ bistaastha | โš’๏ธ piopi | โš’ avats-dev | โŒ | โš’ DonnC | โš’ VictorLlanir | โš’ peterchu999 | โš’๏ธ Hardik Sachan |

    Happy Appwriting!

    Reviewed by Meldiron at 2021-09-29 11:34
  • 5. ๐Ÿ› Bug Report: cloud functions with Dart 2.14 runtime not working

    ๐Ÿ‘Ÿ Reproduction steps

    • Create a small functions that prints hello world in dart.
    • push it to the function worker
    • execute the function

    ๐Ÿ‘ Expected behavior

    Prints hello world

    ๐Ÿ‘Ž Actual Behavior

    empty stdout and stderr

    ๐ŸŽฒ Appwrite version

    Different version (specify in environment)

    ๐Ÿ’ป Operating system

    Linux

    ๐Ÿงฑ Your Environment

    uses 0.11 version

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by Silfalion at 2021-10-25 09:02
  • 6. Implement generateCloudConvertThumbnail() Appwrite Function โšก

    Introduction

    Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code ๐Ÿคฉ You can learn more at our official Appwrite Functions docs.

    Your task is to implement generateCloudConvertThumbnail function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should take an ID of the file in Appwrite Storage as input, send it to CloudConvert Thumbnails API, wait for the job to finish and save newly created thumbnail image into Appwrite Storage. Finally, return ID of the new file.

    Please make sure to store all configurable parameters as environment variables, so others can start using your script without having to edit it. If some data is different for each execution, make sure to use APPWRITE_FUNCTION_EVENT_DATA or APPWRITE_FUNCTION_DATA environment variable.

    Tasks summary:

    • [ ] Fork & clone Appwrite's demos-for-function repository
    • [ ] Create feat-implement-generate-cloud-convert-thumbnail-X branch where X is programming language you used
    • [ ] Write code for the function in folder X/generate-cloud-convert-thumbnail/ where X is programming language you used
    • [ ] Test the function using Appwrite
    • [ ] Write a README.md explaining what function does, how to use and customize it. Here is an example.
    • [ ] Submit pull request to our demos-for-function repository

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š There are 9 languages in which you can implement this function. When requesting to be assigned, please mention which language would you like to use.

    Assignees table

    โœ… = Done - This language has already been finished โš’ = In progress - Someone is already working on this language โŒ = Unassigned yet - This language can be assigned to you

    | Function / Language | Deno | NodeJS | PHP | Python | Ruby | Dart | .NET | Java | Kotlin | | ------------------- | ---- | ------ | --- | ------ | ---- | ---- | ---- | ---- | ------ | | generateCloudConvertThumbnail | ๐Ÿ› ๏ธ papuruth | ๐Ÿ› ๏ธ papuruth | ๐Ÿ› ๏ธ deepto98 | โš’ Amdbase1 | โŒ | โŒ | โŒ | โš’๏ธ zeroplusone | โš’๏ธ Hardik Sachan |

    Happy Appwriting!

    Reviewed by Meldiron at 2021-10-05 14:56
  • 7. Implement sendMessageBirdSMS() Appwrite Function โšก

    Introduction

    Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code ๐Ÿคฉ You can learn more at our official Appwrite Functions docs.

    Your task is to implement sendMessageBirdSMS function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should take phoneNumber and text as input, send request to send message using MessageBird SMS API and provide status as an input (if the SMS was successfully sent or not).

    Please make sure to store all configurable parameters as environment variables, so others can start using your script without having to edit it. If some data is different for each execution, make sure to use APPWRITE_FUNCTION_EVENT_DATA or APPWRITE_FUNCTION_DATA environment variable.

    Tasks summary:

    • [ ] Fork & clone Appwrite's demos-for-function repository
    • [ ] Create feat-implement-send-message-bird-sms-X branch where X is programming language you used
    • [ ] Write code for the function in folder X/send-message-bird-sms/ where X is programming language you used
    • [ ] Test the function using Appwrite
    • [ ] Write a README.md explaining what function does, how to use and customize it. Here is an example.
    • [ ] Submit pull request to our demos-for-function repository

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š There are 9 languages in which you can implement this function. When requesting to be assigned, please mention which language would you like to use.

    Assignees table

    โœ… = Done - This language has already been finished โš’ = In progress - Someone is already working on this language โŒ = Unassigned yet - This language can be assigned to you

    | Function / Language | Deno | NodeJS | PHP | Python | Ruby | Dart | .NET | Java | Kotlin | | ------------------- | ---- | ------ | --- | ------ | ---- | ---- | ---- | ---- | ------ | | sendMessageBirdSMS | โš’๏ธ manuelabarca | โš’ soumyo123-prog | โš’ ramdevcm | โš’ eigengravy | โŒ | โš’ siddhantdixit | โš’๏ธ pr0grammm | โš’๏ธ zeroplusone | โš’๏ธ Hardik Sachan |

    Happy Appwriting!

    Reviewed by Meldiron at 2021-10-05 12:00
  • 8. Implement generateWebsiteScreenshot() Appwrite Function โšก

    Introduction

    Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code ๐Ÿคฉ You can learn more at our official Appwrite Functions docs.

    Your task is to implement generateWebsiteScreenshot function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should take url of a website as input, send it to CloudConvert CaptureWebsite API, wait for the job to finish and save newly created screenshot image into Appwrite Storage. Finally, return ID of the new file.

    Please make sure to store all configurable parameters as environment variables, so others can start using your script without having to edit it. If some data is different for each execution, make sure to use APPWRITE_FUNCTION_EVENT_DATA or APPWRITE_FUNCTION_DATA environment variable.

    Tasks summary:

    • [ ] Fork & clone Appwrite's demos-for-function repository
    • [ ] Create feat-implement-generate-website-screenshot-X branch where X is programming language you used
    • [ ] Write code for the function in folder X/generate-website-screenshot/ where X is programming language you used
    • [ ] Test the function using Appwrite
    • [ ] Write a README.md explaining what function does, how to use and customize it. Here is an example.
    • [ ] Submit pull request to our demos-for-function repository

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š There are 9 languages in which you can implement this function. When requesting to be assigned, please mention which language would you like to use.

    Assignees table

    โœ… = Done - This language has already been finished โš’ = In progress - Someone is already working on this language โŒ = Unassigned yet - This language can be assigned to you

    | Function / Language | Deno | NodeJS | PHP | Python | Ruby | Dart | .NET | Java | Kotlin | | ------------------------- | ---- | ------ | --- | ------ | ---- | ---- | ---- | ---- | ------ | | generateWebsiteScreenshot | โš’ krishguptadev | โš’ luisorbaiceta | โš’๏ธ piopi | โš’ siddhantdixit | โŒ | โš’๏ธ highonweb | โŒ | ๐Ÿ› ๏ธ DevanshK08 | โš’๏ธ Ananya Misra |

    Happy Appwriting!

    Reviewed by Meldiron at 2021-10-05 13:59
  • 9. Help improve Appwrite's Hindi language translation โœ๏ธ

    Introduction

    Did you know Appwrite's Locale API has support for returning responses in your own locale based on the value of the X-Appwrite-Locale header? ๐Ÿ˜ฎ We already support 56 languages and need your help to improve them! ๐Ÿ’ช

    Your task is to update Appwrite's Hindi language translations. We recently added new features, so some translations might be missing. You can find a complete in-depth tutorial in our official tutorial for adding translations.

    This is what missing translation would look like:

    "emails.magicSession.footer": "",
    

    Tasks summary:

    • [ ] Fork & clone Appwrite
    • [ ] Update translations for Hindi in app/config/locale/translations/hi.json
    • [ ] Test the translations
    • [ ] Push changes and submit pull request

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š

    Happy Appwriting!


    โš ๏ธ NOTE โš ๏ธ

    Please ensure that you are a native Hindi speaker before we assign this to you.

    Reviewed by Meldiron at 2021-09-29 06:30
  • 10. Appwrite 'Cloud Functions'

    Adding cloud functions is one of the most requested Appwrite features to date. Before we finalize the feature spec, we would love to get as many community feedback and suggestions as possible.

    Goal

    The goal of this feature is to create a sandbox where user-generated code can execute both on-demand and on existing system event (user.create, document.update, file.create, etc...). Each sandbox will be provided with both event-specific data and user provider env vars. This feature will help users trying to avoid the overhead of setting up a full backend server alongside Appwrite for specific custom tasks.

    Cross Platform & Language Agnostic

    On of Appwrite main goals is to stay cross-platform and framework agnostic. We treat all tech stacks equally, so this feature should allow us to run code from multiple languages. We would probably support Node.js, PHP, Ruby, and Python first, but potentially any language can be supported.

    Security & Isolation

    We are going to use Docker and Appwrite built-in queuing engine to execute the tasks in a completely and isolated environment.

    Performance & Scalability

    To make sure performance is optimized, we will review the possibility to pre-download the core docker images so run time should only be depended on the code running.

    All tasks will run in async way using our job workers. This will also allow us to scale very easily by adding new workers as demand grow.

    Abuse Protection

    We should possibly also create some sort of a timeout to help protect smaller Appwrite instances running on a single server from being abused.

    Packaging

    This is one of the bigger question marks. Since we need to support multiple languages and make sure the final package can be easily executed using a base Docker image, we need to allow developers to package and upload their code easily.

    Some open questions:

    • Should we create a CLI for uploading code packages?
    • Can we create a single CLI that will be able to deal with different coding languages? (Should we use Docker to package the CLI?)
    • Should we integrate with VCS directly? (can be very time consuming for v1 of this feature)
    • Should we support version control?
    • How do other cloud function services manage code uploading?
    • Should we allow built-in IDE in Appwrite dashboard for simple functions?
    • Should we store the code in an encrypted way? How will this influence performance and time-to-start?
    Reviewed by eldadfux at 2020-04-01 07:53
  • 11. Implement getInternetSpeed() Appwrite Function โšก

    Introduction

    Appwrite Functions allow you to extend and customize your Appwrite server functionality by executing your custom code ๐Ÿคฉ You can learn more at our official Appwrite Functions docs.

    Your task is to implement getInternetSpeed function. You can look at the existing Appwrite Functions demo in the coding language you prefer to see how it works.

    This function should use any Speedtest provider to check the download and upload speed of the server. The results should be provided as an output of the function.

    Please make sure to store all configurable parameters as environment variables, so others can start using your script without having to edit it. If some data is different for each execution, make sure to use APPWRITE_FUNCTION_EVENT_DATA or APPWRITE_FUNCTION_DATA environment variable.

    Tasks summary:

    • [ ] Fork & clone Appwrite's demos-for-function repository- [ ] Create feat-implement-get-internet-speed-X branch where X is programming language you used
    • [ ] Write code for the function
    • [ ] Test the function using Appwrite
    • [ ] Write a README.md explaining what function does, how to use and customize it. Here is an example.
    • [ ] Submit pull request to our demos-for-function repository

    If you need any help, reach out to us on our Discord server.

    Are you ready to work on this issue? ๐Ÿค” Let us know, and we will assign it to you ๐Ÿ˜Š There are 9 languages in which you can implement this function. When requesting to be assigned, please mention which language would you like to use.

    Assignees table

    โœ… = Done - This language has already been finished โš’ = In progress - Someone is already working on this language โŒ = Unassigned yet - This language can be assigned to you

    | Function / Language | Deno | NodeJS | PHP | Python | Ruby | Dart | .NET | Java | Kotlin | | ------------------- | ---- | ------ | --- | ------ | ---- | ---- | ---- | ---- | ------ | | getInternetSpeed | โš’ eigengravy | โš’ mukeshmjn | โš’๏ธ piopi | โš’ jyuvaraj03 | โš’ akashgp09 | โš’ GunjanDhanuka | โš’ nCodesDotEU | โŒ | โŒ |

    Happy Appwriting!

    Reviewed by Meldiron at 2021-09-29 11:34
  • 12. ๐Ÿš€ Feature: Stacktrace in logs

    ๐Ÿ”– Feature description

    There should be proper error handling on CF side, error such as: type '_OneByteString' is not a subtype of type 'Map<String, dynamic>?'

    ๐ŸŽค Pitch

    Are not really helpful, unless you get full trace back to line number

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by r-dev-limited at 2022-05-27 01:17
  • 13. ๐Ÿ› Bug Report: APPWRITE_FUNCTION_EVENT_DATA should contain change

    ๐Ÿ‘Ÿ Reproduction steps

    perform change/update to your DB

    ๐Ÿ‘ Expected behavior

    triggered function should receive "a change" ie OLD data vs NEW data

    ๐Ÿ‘Ž Actual Behavior

    You will get dump of updated data, but you have no idea what was there before. So how we should "act" onUpdate?

    ๐ŸŽฒ Appwrite version

    Version 0.14.x

    ๐Ÿ’ป Operating system

    MacOS

    ๐Ÿงฑ Your Environment

    docker

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by r-dev-limited at 2022-05-27 00:43
  • 14. ๐Ÿ› Bug Report: type 'Null' is not a subtype of type 'int'

    ๐Ÿ‘Ÿ Reproduction steps

    Attempting to create a session from dart/flutter on version 5.0.0 throws type 'Null' is not a subtype of type 'int'

    account.createSession(email: email, password: password);

    However the create call works fine.

    account.create(email: email, password: password, userId: 'unique()');

    If I down grade to 3.0.1 both call work fine.

    I am new to appwrite and dart, so this may just be me not knowing what I am doing.

    Thanks.

    ๐Ÿ‘ Expected behavior

    Create a sesstion

    ๐Ÿ‘Ž Actual Behavior

    Throws exception

    ๐ŸŽฒ Appwrite version

    Version 0.14.x

    ๐Ÿ’ป Operating system

    Linux

    ๐Ÿงฑ Your Environment

    No response

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by nmharmon8 at 2022-05-26 20:16
  • 15. ๐Ÿš€ Feature: gitlab oauth for other instances

    ๐Ÿ”– Feature description

    GitLab oauth asks for an serveraddress. So any (selfhostet) gitlab instant can be used.

    ๐ŸŽค Pitch

    GitLab is often selfhostet and with this change any gitlab instant can be used for oauth.

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    Reviewed by omia at 2022-05-26 15:34

Related

A flutter widget that animates scrolling through a set of fixed size containers.
A flutter widget that animates scrolling through a set of fixed size containers.

Spinner This flutter package implements a simple Spinner animation that cycles through any number of fixed size child widgets. Useful for selecting a

Aug 3, 2021
A server app built using Shelf, configured to enable running with Docker
A server app built using Shelf, configured to enable running with Docker

A server app built using Shelf, configured to enable running with Docker. This sample code handles HTTP GET requests to / and /echo/<message> Requests

Jan 26, 2022
A server app built using Shelf, configured to enable running with Docker
A server app built using Shelf, configured to enable running with Docker

A server app built using Shelf, configured to enable running with Docker. Project Structure Running the sample Running with the Dart SDK You can run t

Jan 12, 2022
Buildpack dart - A server app built using Shelf, configured to enable running with Docker

Hosted at https://dart-buildpack-demo-ruyjilv5wq-uc.a.run.app/ Buildpack defined

Mar 27, 2022
Tea talks - An end-to-end encrypted chat app with Firebase as backend and an in-app synced browser to enjoy watching videos together
Tea talks - An end-to-end encrypted chat app with Firebase as backend and an in-app synced browser to enjoy watching videos together

Tea-Talks is a chat ?? application where you can create rooms to chat ??๏ธ and wa

Feb 15, 2022
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.

supabase_flutter Flutter package for Supabase. What is Supabase Supabase is an open source Firebase alternative. We are a service to: listen to databa

May 17, 2022
Making Appwrite Authentication Easy

FlAppwrite Account Kit A Flutter wrapper for Appwrite's Accounts service, makes it easy to use manage authentication and account features. Under devel

May 22, 2022
An easy configurable and secure open-source personal password manager.
An easy configurable and secure open-source personal password manager.

An easy configurable and secure open-source personal password manager. Anyone can you this project and generate his own personal mobile app. All the passwords will be saved into your own Firebase Firestone database with encryption.

May 4, 2022
CARP Mobile Sensing for Flutter, including mobile sensing framework, data backend support, and the CARP mobile sensing app.
CARP Mobile Sensing for Flutter, including mobile sensing framework, data backend support, and the CARP mobile sensing app.

This repo hold the source code for the CACHET Research Platform (CARP) Mobile Sensing (CAMS) Flutter software. It contains the source code for CACHET

May 25, 2022
flutter web app with given code and example. Step by step teaching how to build a flutter web app with backend

flutter_web A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

May 26, 2022
DEVS: Developer Board and Jobs Listing | For Developers, By Developers
DEVS: Developer Board and Jobs Listing | For Developers, By Developers

devs Setup Currently, this DEVS project is using the master channel of the Flutter SDK. TODO: Migrate to beta Clone the project git clone https://gith

Apr 16, 2022
Mobile secure keyboard to prevent KeyLogger attack and screen capture.
Mobile secure keyboard to prevent KeyLogger attack and screen capture.

Mobile secure keyboard to prevent KeyLogger attack and screen capture. Screenshots Alphanumeric Numeric Getting started To use this plugin, add flutte

May 13, 2022
Mentorup App developed using Flutter/Dart and Aqueduct as backend server is an app to help the startups
Mentorup App developed using Flutter/Dart and Aqueduct as backend server is an app to help the startups

Mentorup App developed using Flutter/Dart and Aqueduct as backend server is an app to help the startups of various domains initiated by the budding entrepreneurs to get guidance and funding from the mentors and funders respectively.

Dec 14, 2021
Fancy Containers Flutter Package
Fancy Containers Flutter Package

Fancy Containers Fancy container package lets you add a beautiful gradient container to your Flutter app. Installation Add the latest version of packa

Feb 4, 2022
Feb 16, 2022
Remote Flutter/Dart Compiler for CloudRun and Docker

flutter_remote_compiler Running the Application Locally Run aqueduct serve from this directory to run the application. For running within an IDE, run

Oct 5, 2020
The one and only Docker Tool you will ever need again

# container_tool A new Flutter project. ## Getting Started This project is a starting point for a Flutter application. A few resources to get you

Nov 17, 2021
This application was created using the Dart language and it is an application that contains a set of different questions and at the end shows you the number of correct answers you have answered , made by flutter

exams_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Dec 28, 2021