1
0
Fork 0
mirror of synced 2024-05-21 05:02:37 +12:00

Updated documentation and contributor guidelines.

This commit is contained in:
Silvia O'Dwyer 2019-10-05 16:20:41 +01:00
parent 8c29879756
commit b7e524f125
3 changed files with 23 additions and 20 deletions

View file

@ -1,6 +1,6 @@
# Contributing
We would ❤️ for you to contribute to Appwrite and help make it better! As a contributor, here are the guidelines we would like you to follow:
We would ❤️ for you to contribute to Appwrite and help make it better! As a contributor, here are the guidelines we would like you to follow:
## Code of Conduct
@ -8,7 +8,7 @@ Help us keep Appwrite open and inclusive. Please read and follow our [Code of Co
## Technology Stack
To start helping us to improve Appwrite server, prior knowledge of Appwrite technology stack can help you with getting started.
To start helping us to improve Appwrite server, prior knowledge of Appwrite's technology stack can help you with getting started.
Appwrite stack is combined from a variety of open-source technologies and tools. Appwrite backend API is written primarily with PHP version 7 and above on top of the Utopia PHP framework. Appwrite frontend is built with tools like gulp, less and litespeed.js. We use Docker as the container technology to package the Appwrite server for easy integration on cloud, on-premise or local hosts.
@ -26,9 +26,9 @@ Appwrite stack is combined from a variety of open-source technologies and tools.
## Package Managers
Appwrite is using a package manager for managing code dependencies for both backend and frontend development. We try our best to avoid creating any unnecessary and any new dependency to the project is subjected to a lead developer review and approval.
Appwrite uses a package manager for managing code dependencies for both backend and frontend development. We try our best to avoid creating any unnecessary and any new dependency to the project is subjected to a lead developer review and approval.
Many of Appwrite internal modules are also used as dependencies to allow other Appwrite's projects to reuse them and as a way to contribute them back to the community.
Many of Appwrite's internal modules are also used as dependencies to allow other Appwrite's projects to reuse them and as a way to contribute them back to the community.
Appwrite uses PHPs Composer for managing dependencies on the server-side and JS NPM for managing dependencies on the frontend side.
@ -44,7 +44,7 @@ Appwrite is built to scale. Please keep in mind that the Appwrite stack can run
We wish Appwrite will be as easy to set up and in a single, localhost and easy to grow to a large environment with thousands and even hundreds of instances.
When contributing code please take into account the following considerations:
When contributing code, please take into account the following considerations:
* Response Time
* Throughput
@ -57,11 +57,11 @@ When contributing code please take into account the following considerations:
## Architecture
Appwrite current structure is a combination of both Monolithic and Microservice architectures, but our final goal, as we grow is to be using only microservices.
Appwrite's current structure is a combination of both Monolithic and Microservice architectures, but our final goal, as we grow is to be using only microservices.
### The Monolithic Part
Appwrite 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.
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.
@ -121,6 +121,6 @@ Before running the command make sure you have proper write permissions to Appwri
## Tutorials
From time to time our team will add tutorials that will help contributors find there way in the Appwrite source code. Below is a list of currently available tutorials:
From time to time our team will add tutorials that will help contributors find their way in the Appwrite source code. Below is a list of currently available tutorials:
* [Adding Support for a New OAuth Provider](./docs/AddOAuthProvider.md)

View file

@ -1,24 +1,27 @@
# Adding a New OAuth Provider
This document is part of the Appwrite contributors' guide. Before you continue reading this document make sure you have read the [code of conduct](../CODE_OF_CONDUCT.md) and the [contributing guide](../CONTRIBUTING.md).
This document is part of the Appwrite contributors' guide. Before you continue reading this document make sure you have read the [Code of Conduct](../CODE_OF_CONDUCT.md) and the [Contributing Guide](../CONTRIBUTING.md).
## Getting Started
### Agenda
OAuth providers help users to log in easily to apps and websites without the need to provide passwords or any other type of credentials. Appwrite goal is to have support from as many **major** OAuth providers as possible.
OAuth providers help users to log in easily to apps and websites without the need to provide passwords or any other type of credentials. Appwrite's goal is to have support from as many **major** OAuth providers as possible.
As of the writing of these lines, we do not accept any minor OAuth providers. For us to accept some smaller and potentially unlimited number of OAuth providers, some product design and software architecture changes must be applied first.
### List Your new Provider
The first step to follow in adding a new OAuth provider is to add it to the list in providers config file array, located at:
The first step in adding a new OAuth provider is to add it to the list in providers config file array, located at:
```
./app/config/providers.php
```
Make sure to fill all data needed and that your provider array key name is in camelCase format and has no spaces or special characters.
Make sure to fill all data needed and that your provider array key name:
- is in camelCase format
- has no spaces or special characters.
### Add Provider Logo
@ -36,7 +39,7 @@ Create a new class that extends the basic OAuth provider abstract class in this
Note that the class name should start with a capital letter as PHP FIG standards suggest.
Once a new class is created, you can start to implement your new provider's login flow. The best way to do this right is to have a look at another provider's implementation and try to follow the same standards.
Once a new class is created, you can start to implement your new provider's login flow. The best way to do this corrrectly is to have a look at another provider's implementation and try to follow the same standards.
Please mention in your documentation what resources or API docs you used to implement the provider's OAuth protocol.
@ -46,4 +49,4 @@ After you finished adding your new provider to Appwrite you should be able to se
Add credentials and check both a successful and a failed login (where the user rejects integration on provider page).
If everything goes well, just send us the pull request and be ready to respond to any feedback which can arise during our code review.
If everything goes well, just submit a pull request and be ready to respond to any feedback which can arise during our code review.

View file

@ -6,15 +6,15 @@ Appwrite environment variables allow you to edit your server setup configuration
### _APP_ENV
Set your server running environment. By default the var is set to 'development' when deploying to production, change to: 'production'.
Set your server running environment. By default the var is set to 'development'. When deploying to production, change to: 'production'.
### _APP_OPTIONS_ABUSE
Allows you to disabled abuse checks and API rate limiting. By default set to 'enabled'. To cancel the abuse checking set to 'disabled'. It is not recommended to disable this check-in production environment.
Allows you to disable abuse checks and API rate limiting. By default set to 'enabled'. To cancel the abuse checking, set to 'disabled'. It is not recommended to disable this check in a production environment.
### _APP_OPENSSL_KEY_V1
This is your server private secret key that is used to encrypt all sensitive data on your server. Appwrite server is encrypting all secret data on your server like webhooks HTTP passwords, user sessions, and the storage files. The var is not set by default, if you wish to take advantage of Appwrite encryption capabilities you should change it and make sure to keep it a secret.
This is your server private secret key that is used to encrypt all sensitive data on your server. Appwrite server encrypts all secret data on your server like webhooks, HTTP passwords, user sessions, and storage files. The var is not set by default, if you wish to take advantage of Appwrite encryption capabilities you should change it and make sure to keep it a secret.
### _APP_CONSOLE_WHITELIST_EMAILS
@ -34,7 +34,7 @@ To enable activate this option, pass a list of allowed IP addresses separated by
## Redis Server
Appwrite is using a Redis server for managing cache, queues and scheduled tasks. The Redis env vars are used to allow Appwrite server to connect to the Redis container.
Appwrite uses a Redis server for managing cache, queues and scheduled tasks. The Redis env vars are used to allow Appwrite server to connect to the Redis container.
### _APP_REDIS_HOST
@ -70,7 +70,7 @@ MariaDB server database schema. Default value is: 'appwrite'
## InfluxDB
Appwrite is using an InfluxDB server for managing time-series data and server stats. The InfluxDB env vars are used to allow Appwrite server to connect to the InfluxDB container.
Appwrite uses an InfluxDB server for managing time-series data and server stats. The InfluxDB env vars are used to allow Appwrite server to connect to the InfluxDB container.
### _APP_INFLUXDB_HOST
@ -82,7 +82,7 @@ InfluxDB server TCP port. Default value is: '8086'
## StatsD
Appwrite is using a StatsD server for aggregating and sending stats data over a fast UDP connection. The StatsD env vars are used to allow Appwrite server to connect to the StatsD container.
Appwrite uses a StatsD server for aggregating and sending stats data over a fast UDP connection. The StatsD env vars are used to allow Appwrite server to connect to the StatsD container.
### _APP_INFLUXDB_HOST