From adffe2af3a855f1dc40b93144b6d1e39d6611ee6 Mon Sep 17 00:00:00 2001 From: "Eldad A. Fux" Date: Sat, 5 Sep 2020 09:06:46 +0300 Subject: [PATCH 1/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b8905c1ad..9e54fcfb5c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

- +[![Hacktoberfest](https://badgen.net/badge/hacktoberfest/friendly/pink)](#contributing) [![Discord](https://img.shields.io/discord/564160730845151244?label=discord)](https://discord.gg/GSeTUeA) [![Docker Pulls](https://badgen.net/docker/pulls/appwrite/appwrite)](https://travis-ci.org/appwrite/appwrite) [![Travis CI](https://badgen.net/travis/appwrite/appwrite?label=build)](https://travis-ci.org/appwrite/appwrite) From 7de9d08d85f379b1fbba22bb71369d8156486643 Mon Sep 17 00:00:00 2001 From: "Eldad A. Fux" Date: Sat, 5 Sep 2020 09:23:56 +0300 Subject: [PATCH 2/5] Update CONTRIBUTING.md --- CONTRIBUTING.md | 94 +++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e6d85ab42..f362e3953e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,38 +6,28 @@ We would ❤️ for you to contribute to Appwrite and help make it better! We wa If you are worried or don’t know where to start, check out our next section explaining what kind of help we could use and where can you get involved. You can reach out with questions to [Eldad Fux (@eldadfux)](https://twitter.com/eldadfux) or [@appwrite_io](https://twitter.com/appwrite_io) on Twitter, and anyone from the [Appwrite team on Discord](https://discord.gg/GSeTUeA). You can also submit an issue, and a maintainer can guide you! -## Where to Start? - -Pull requests are great, but there are many other areas where you can help Appwrite. - -### Blogging & Speaking - -Blogging, speaking about, or creating tutorials about one of Appwrite’s many features. Mention [@appwrite_io](https://twitter.com/appwrite_io) on Twitter and/or email team [at] appwrite [dot] io so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite]() repo on GitHub. - -### Presenting at Meetups - -Presenting at meetups and conferences about your Appwrite projects. Your unique challenges and successes in building things with Appwrite can provide great speaking material. We’d love to review your talk abstract/CFP, so get in touch with us if you’d like some help! - -### Sending Feedbacks & Reporting Bugs - -Sending feedback is a great way for us to understand your different use cases of Appwrite better. If you had any issues, bugs, or want to share about your experience, feel free to do so on our GitHub issues page or at our [Discord channel](https://discord.gg/GSeTUeA). - -### Submitting New Ideas - -If you think Appwrite could use a new feature, please open an issue on our GitHub repository, stating as much information as you can think about your new idea and it's implications. We would also use this issue to gather more information, get more feedback from the community, and have a proper discussion about the new feature. - -### Improving Documentation - -Submitting documentation updates, enhancements, designs, or bug fixes. Spelling or grammar fixes will be very much appreciated. - -### Helping Someone - -Searching for Appwrite on Discord, GitHub or StackOverflow and helping someone else who needs help. You can also help by reaching others how to contribute to Appwrite's repo! - ## Code of Conduct Help us keep Appwrite open and inclusive. Please read and follow our [Code of Conduct](/CODE_OF_CONDUCT.md). +## Setup From Source + +To set up a working **development environment**, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. + +> If you just want to install Appwrite for day-to-day usage and not as a code maintainer use this [installation guide](https://github.com/appwrite/appwrite#installation). + +Please note that these instructions are for setting a functional dev environment. If you want to set up an Appwrite instance to integrate into your app, you should probably try and install Appwrite by using the instructions in the [getting started guide](https://appwrite.io/docs/getting-started-for-web) or in the main [README](README.md) file. + +```bash +git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git + +cd appwrite + +docker-compose up -d +``` + +After finishing the installation process, you can start writing and editing code. To compile new CSS and JS distribution files, use 'less' and 'build' tasks using gulp as a task manager. + ## Technology Stack To start helping us to improve the Appwrite server by submitting code, prior knowledge of Appwrite's technology stack can help you with getting started. @@ -125,24 +115,6 @@ This will allow the Appwrite community to have sufficient discussion about the n This is also important for the Appwrite lead developers to be able to give technical input and different emphasize regarding the feature design and architecture. -## Setup From Source - -To set up a working **development environment**, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. - -> If you just want to install Appwrite for day-to-day usage and not as a code maintainer use this [installation guide](https://github.com/appwrite/appwrite#installation). - -Please note that these instructions are for setting a functional dev environment. If you want to set up an Appwrite instance to integrate into your app, you should probably try and install Appwrite by using the instructions in the [getting started guide](https://appwrite.io/docs/getting-started-for-web) or in the main [README](README.md) file. - -```bash -git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git - -cd appwrite - -docker-compose up -d -``` - -After finishing the installation process, you can start writing and editing code. To compile new CSS and JS distribution files, use 'less' and 'build' tasks using gulp as a task manager. - ## Build To build a new version of the Appwrite server, all you need to do is run the build.sh file like this: @@ -194,3 +166,33 @@ From time to time, our team will add tutorials that will help contributors find * [Adding Support for a New OAuth2 Provider](./docs/tutorials/add-oauth2-provider.md) * [Appwrite Environment Variables](./docs/tutorials/environment-variables.md) * [Running in Production](./docs/tutorials/running-in-production.md) + + +## Other Ways to Helo + +Pull requests are great, but there are many other areas where you can help Appwrite. + +### Blogging & Speaking + +Blogging, speaking about, or creating tutorials about one of Appwrite’s many features. Mention [@appwrite_io](https://twitter.com/appwrite_io) on Twitter and/or email team [at] appwrite [dot] io so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite]() repo on GitHub. + +### Presenting at Meetups + +Presenting at meetups and conferences about your Appwrite projects. Your unique challenges and successes in building things with Appwrite can provide great speaking material. We’d love to review your talk abstract/CFP, so get in touch with us if you’d like some help! + +### Sending Feedbacks & Reporting Bugs + +Sending feedback is a great way for us to understand your different use cases of Appwrite better. If you had any issues, bugs, or want to share about your experience, feel free to do so on our GitHub issues page or at our [Discord channel](https://discord.gg/GSeTUeA). + +### Submitting New Ideas + +If you think Appwrite could use a new feature, please open an issue on our GitHub repository, stating as much information as you can think about your new idea and it's implications. We would also use this issue to gather more information, get more feedback from the community, and have a proper discussion about the new feature. + +### Improving Documentation + +Submitting documentation updates, enhancements, designs, or bug fixes. Spelling or grammar fixes will be very much appreciated. + +### Helping Someone + +Searching for Appwrite on Discord, GitHub or StackOverflow and helping someone else who needs help. You can also help by reaching others how to contribute to Appwrite's repo! + From 31dddc20b61c13af78197a8232cee270a7d95716 Mon Sep 17 00:00:00 2001 From: "Eldad A. Fux" Date: Sat, 5 Sep 2020 09:28:21 +0300 Subject: [PATCH 3/5] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f362e3953e..26766ad50d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,6 +81,10 @@ When contributing code, please take into account the following considerations: Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures, but our final goal, as we grow, is to be using only microservices. +--- +![Appwrite](docs/specs/overview.drawio.svg) +--- + ### The Monolithic Part Appwrite's main API container is designed as a monolithic app. This is a decision we made to allow us to develop the project faster while still being a very small team. From 96931e349e1556258979f3c1ae0d0a19062f9b6b Mon Sep 17 00:00:00 2001 From: "Eldad A. Fux" Date: Sat, 5 Sep 2020 09:31:23 +0300 Subject: [PATCH 4/5] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 26766ad50d..cae9769682 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -172,7 +172,7 @@ From time to time, our team will add tutorials that will help contributors find * [Running in Production](./docs/tutorials/running-in-production.md) -## Other Ways to Helo +## Other Ways to Help Pull requests are great, but there are many other areas where you can help Appwrite. From 0d6d76e68739f2354ed26c0a4f5a05302f176c84 Mon Sep 17 00:00:00 2001 From: "Eldad A. Fux" Date: Sat, 5 Sep 2020 12:40:44 +0300 Subject: [PATCH 5/5] Update CONTRIBUTING.md --- CONTRIBUTING.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cae9769682..f918b450b6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,26 @@ docker-compose up -d After finishing the installation process, you can start writing and editing code. To compile new CSS and JS distribution files, use 'less' and 'build' tasks using gulp as a task manager. +## Architecture + +Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures, but our final goal, as we grow, is to be using only microservices. + +--- +![Appwrite](docs/specs/overview.drawio.svg) +--- + +### The Monolithic Part + +Appwrite's main API container is designed as a monolithic app. This is a decision we made to allow us to develop the project faster while still being a very small team. + +Although the Appwrite API is a monolithic app, it has a very clear separation of concern as each internal service or worker is separated by its container, which will allow us as we grow to start breaking services for better maintenance and scalability. + +### The Microservice Part + +Each container in Appwrite is a microservice on its own. Each service is an independent process that can scale without regard to any of the other services. + +Currently, all of the Appwrite microservices are intended to communicate using the TCP protocol over a private network. You should be aware to not expose any of the services to the public-facing network, besides the public port 80 and 443, who, by default, are used to expose the Appwrite HTTP API. + ## Technology Stack To start helping us to improve the Appwrite server by submitting code, prior knowledge of Appwrite's technology stack can help you with getting started. @@ -77,26 +97,6 @@ When contributing code, please take into account the following considerations: * Background Jobs * Task Execution Time -## Architecture - -Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures, but our final goal, as we grow, is to be using only microservices. - ---- -![Appwrite](docs/specs/overview.drawio.svg) ---- - -### The Monolithic Part - -Appwrite's main API container is designed as a monolithic app. This is a decision we made to allow us to develop the project faster while still being a very small team. - -Although the Appwrite API is a monolithic app, it has a very clear separation of concern as each internal service or worker is separated by its container, which will allow us as we grow to start breaking services for better maintenance and scalability. - -### The Microservice Part - -Each container in Appwrite is a microservice on its own. Each service is an independent process that can scale without regard to any of the other services. - -Currently, all of the Appwrite microservices are intended to communicate using the TCP protocol over a private network. You should be aware to not expose any of the services to the public-facing network, besides the public port 80 and 443, who, by default, are used to expose the Appwrite HTTP API. - ## Security & Privacy Security and privacy are extremely important to Appwrite, developers, and users alike. Make sure to follow the best industry standards and practices.