Contribution doc (#408)
Adding the contribution doc to help new developers setup their local machines and contribute to Appsmith. Co-authored-by: Arpit Mohan <arpit@appsmith.com>
This commit is contained in:
parent
c253b7430b
commit
60393ba29c
119
CONTRIBUTING.md
Normal file
119
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
# Contributing to Appsmith
|
||||||
|
|
||||||
|
Thank you for your interest in Appsmith and taking the time to contribute on this project. 🙌
|
||||||
|
Appsmith is a project by developers for developers and there are a lot of ways you can contribute.
|
||||||
|
Feel free to propose changes to this document in a pull request.
|
||||||
|
|
||||||
|
### Table of contents
|
||||||
|
- [Code of conduct](CODE_OF_CONDUCT.md)
|
||||||
|
- [How can I contribute?](#how-can-i-contribute)
|
||||||
|
- [How to set up local development?](#how-to-set-up-local-development)
|
||||||
|
- [How to run tests?](#how-to-run-tests)
|
||||||
|
|
||||||
|
## How can I contribute?
|
||||||
|
There are many ways in which we/one can to contribute to Appsmith. All contributions are highly appreciated.
|
||||||
|
|
||||||
|
- Beta testing
|
||||||
|
- Raise Issues
|
||||||
|
- Feature Requests
|
||||||
|
- Documentation
|
||||||
|
- Code contribution
|
||||||
|
- Widgets
|
||||||
|
- Datasources
|
||||||
|
|
||||||
|
|
||||||
|
## 👨💻 How to set up local development
|
||||||
|
|
||||||
|
### Client
|
||||||
|
Appsmith's client (UI/frontend) uses the ReactJS library and Typescript. The application also uses libraries like react-redux and redux-saga for workflows.
|
||||||
|
|
||||||
|
##### Pre-requisites:
|
||||||
|
|
||||||
|
On your development machine, please ensure that:
|
||||||
|
|
||||||
|
1. You have `docker` installed in your system. If not, please visit: [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)
|
||||||
|
2. You have `mkcert` installed. Please visit: [https://github.com/FiloSottile/mkcert#installation](https://github.com/FiloSottile/mkcert#installation) for details. For `mkcert` to work with firefox you may require the `nss` utility to be installed. Details are in the link above.
|
||||||
|
3. You have `envsubst` installed. use `brew install gettext` on macOS. Linux machines usually have this installed.
|
||||||
|
4. You have cloned the repo in your local machine.
|
||||||
|
|
||||||
|
##### Create local HTTPS certificates:
|
||||||
|
|
||||||
|
1. Run the following command from the project root.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd app/client/docker && mkcert -install && mkcert "*.appsmith.com" && cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will end up creating 2 files in the `docker/` directory:
|
||||||
|
|
||||||
|
- `_wildcard.appsmith.com-key.pem`
|
||||||
|
- `_wildcard.appsmith.com.pem`
|
||||||
|
|
||||||
|
2. Copy the `.env.example` file and rename the new file to `.env` in the same directory. Populate the entries in the `.env` file with values to enable/toggle features.
|
||||||
|
|
||||||
|
3. Run the script `start-https.sh` in order to start the nginx container that will proxy the frontend code on your local system.
|
||||||
|
|
||||||
|
##### Steps to build & run the code:
|
||||||
|
|
||||||
|
1. Add a domain like `dev.appsmith.com` to `/etc/hosts`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo "127.0.0.1 dev.appsmith.com" | sudo tee -a /etc/hosts
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Run `cd app/client`
|
||||||
|
2. Run `yarn`
|
||||||
|
3. Run `yarn build` (optional)
|
||||||
|
4. Run `yarn start` if you are hitting [https://release-api.appsmith.com](https://release-api.appsmith.com) (Staging environment) as your API backend.
|
||||||
|
5. If you are hitting any other API endpoint,
|
||||||
|
- Please run:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
REACT_APP_ENVIRONMENT=DEVELOPMENT HOST=dev.appsmith.com craco start
|
||||||
|
```
|
||||||
|
|
||||||
|
- Change the API endpoint in the Nginx configuration available in `docker/templates/nginx-linux.conf.template` or `docker/templates/nginx-mac.conf.template`. You will have to run `start-https.sh` script again after making the change.
|
||||||
|
|
||||||
|
6. Go to [https://dev.appsmith.com](https://dev.appsmith.com) on your browser
|
||||||
|
|
||||||
|
#### If you are unable to run docker:
|
||||||
|
|
||||||
|
1. Make the values in `nginx-mac.conf.template` empty. None of those properties are required.
|
||||||
|
2. `proxy_pass` value must be changed from `http://host.docker.internal:3000` to `http://localhost:3000`
|
||||||
|
3. Generate the certificates manually via `mkcert`. Check the command in `start-https-server.sh` file.
|
||||||
|
4. Change the value of the certificate location for keys `ssl_certificate` & `ssl_certificate_key` to the place where these certificates were generated.
|
||||||
|
|
||||||
|
### Server
|
||||||
|
- We use the Spring framework in Java for all backend development.
|
||||||
|
- We use `maven` as our build tool.
|
||||||
|
- We use pf4j as a library for plugins.
|
||||||
|
- We use MongoDB for our database.
|
||||||
|
|
||||||
|
1. After cloning the repository, change your directory to `app/server`
|
||||||
|
2. Run `mvn clean compile`. This generates a bunch of classes required by IntelliJ for compiling the rest of the source code.
|
||||||
|
3. Create a copy of the `envs/dev.env.example`
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
cp envs/dev.env.example envs/dev.env
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 How to run tests
|
||||||
|
|
||||||
|
##### Client
|
||||||
|
1. In order to run the Cypress integration tests, run:
|
||||||
|
```bash
|
||||||
|
yarn run test
|
||||||
|
```
|
||||||
|
|
||||||
|
2. In order to run the Jest unit tests, run:
|
||||||
|
```bash
|
||||||
|
yarn run test:unit
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Server
|
||||||
|
1. Ensure that you have Redis running on your local system.
|
||||||
|
|
||||||
|
2. Run the command to execute tests
|
||||||
|
```bash
|
||||||
|
mvn clean package
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue
Block a user