1
0
Fork 0
mirror of synced 2024-05-21 05:02:37 +12:00
appwrite/CONTRIBUTING.md

77 lines
3.6 KiB
Markdown
Raw Normal View History

2019-08-17 20:01:45 +12:00
# Contributing
2019-08-17 20:11:56 +12:00
We would love for you to contribute to Appwrite and help make it even better than it is today! As a contributor, here are the guidelines we would like you to follow:
## Code of Conduct
2019-08-18 18:19:15 +12:00
Help us keep Appwrite open and inclusive. Please read and follow our [Code of Conduct](/CODE_OF_CONDACT.md).
2019-08-17 20:11:56 +12:00
2019-08-17 20:01:45 +12:00
## Technology Stack
To start helping us to improve Appwrite server, prior knowledge of Appwrite 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.
### Other Technologies
* Redis - for managing cache and in-memory data (currently, we do not use Redis for persistent data)
* MariaDB - for database storage and queries
* InfluxDB - for managing stats and time-series based data
* Statsd - for sending data over UDP protocol (using telegraf)
* ClamAV - for validating and scanning storage files
* Imagemagick - for manipulating and managing image media files.
* Webp - for better compression of images on supporting clients
* SMTP - for sending email messages and alerts
* Resque - for managing data queues and scheduled tasks over a Redis server
## 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.
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.
Appwrite uses PHPs Composer for managing dependencies on the server-side and JS NPM for managing dependencies on the frontend side.
2019-08-18 21:29:57 +12:00
## Coding Standards
2019-08-17 20:01:45 +12:00
## Scalability
## Architecture
2019-08-18 18:19:15 +12:00
## Security & Privacy
2019-09-04 09:47:33 +12:00
Security and privacy are extremly important to Appwrite, developers and users alike. Make sure to follow the best industry standards and practices. To help you make sure you are doing as best as possible we have setup our security checklist for pull requests and contributers. Please make sure to follow the list before sending a pull request.
## Dependencies
Please avoid intoducing new dependencies to Appwrite without consulting the team. New dependencies can be very helpfull but also introduce new security and privacy issues, complexity and impact total docker image size.
Adding a new dependancy should have vital value on the product with minumum possible risk.
2019-08-18 18:19:15 +12:00
## Setup
To set up a working development environment just clone the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack.
```bash
git clone git@github.com:appwrite/appwrite.git
cd appwrite
composer update --ignore-platform-reqs --optimize-autoloader --no-dev --no-plugins --no-scripts
npm install
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.
2019-08-17 20:01:45 +12:00
## Build
2019-08-18 18:19:15 +12:00
To build a new version of the Appwrite server all you need to do is run the build.sh file like this:
```bash
bash ./build.sh 1.0.0
```
Before running the command make sure you have proper write permissions to Appwrite docker hub team.