]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - .github/CONTRIBUTING.md
Remove unnecessary env variables now we have a .env file
[github/Chocobozzz/PeerTube.git] / .github / CONTRIBUTING.md
index 98908772891f70861667bddc66de988d9de27976..c70bc44e21ceba324f6497b5150e52c1c1049d19 100644 (file)
@@ -1,14 +1,18 @@
 # Welcome to the contributing guide for PeerTube
 
 # Welcome to the contributing guide for PeerTube
 
-Interesting in contributing? Awesome :)
+Interesting in contributing? Awesome!
 
 **Quick Links:**
 
 
 **Quick Links:**
 
+  * [Translate](#translate)
   * [Give your feedback](#give-your-feedback)
   * [Give your feedback](#give-your-feedback)
-  * [Develop on the Server side](#develop-on-the-server-side)
-  * [Develop on the Client side](#develop-on-the-client-side)
-  * [Get started with development](#get-started-with-development)
   * [Write documentation](#write-documentation)
   * [Write documentation](#write-documentation)
+  * [Develop](#develop)
+
+
+## Translate
+
+You can help us to translate the PeerTube interface to many languages! See [the documentation](/support/doc/translation.md) to know how.
 
 
 ## Give your feedback
 
 
 ## Give your feedback
@@ -16,58 +20,63 @@ Interesting in contributing? Awesome :)
 You don't need to know how to code to start contributing to PeerTube! Other
 contributions are very valuable too, among which: you can test the software and
 report bugs, you can give feedback on potential bugs, features that you are
 You don't need to know how to code to start contributing to PeerTube! Other
 contributions are very valuable too, among which: you can test the software and
 report bugs, you can give feedback on potential bugs, features that you are
-interested in, user interace, design, decentralized architecture...
-
+interested in, user interface, design, decentralized architecture...
 
 
-## Development
 
 
-## Develop on the Server side
-
-The server is a web server developed with
-[NodeJS](https://nodejs.org)/[Express](http://expressjs.com).
-
-Newcomer? You can find a documentation of the server code/architecture
-[here](https://github.com/Chocobozzz/PeerTube/blob/master/support/doc/server/code.md).
+## Write documentation
 
 
-Don't hesitate to talk about features you want to develop by creating an issue
-before you start working on them :).
+You can help to write the documentation of the REST API, code, architecture,
+demonstrations.
 
 
+For the REST API you can see the documentation in [/support/doc/api](/support/doc/api) directory.
+Then, you can just open the `openapi.yaml` file in a special editor like [http://editor.swagger.io/](http://editor.swagger.io/) to easily see and edit the documentation.
 
 
-## Develop on the Client side
+Some hints:
+ * Routes are defined in [/server/controllers/](/server/controllers/) directory
+ * Parameters validators are defined in [/server/middlewares/validators](/server/middlewares/validators) directory
+ * Models sent/received by the controllers are defined in [/shared/models](/shared/models) directory
 
 
-The client is a web application developed with
-[TypeScript](https://www.typescriptlang.org/)/[Angular2](https://angular.io/).
 
 
-Newcomer? You can find a documentation of the server code/architecture
-[here](https://github.com/Chocobozzz/PeerTube/blob/master/support/doc/client/code.md).
+## Develop
 
 
+Don't hesitate to talk about features you want to develop by creating/commenting an issue
+before you start working on them :).
 
 
-## Get started with development
+### Prerequisites
 
 
-In this mode, the server will run requests between instances more quickly, the
-video durations are limited to a few seconds.
+First, make sure that you have followed 
+[the steps](/support/doc/dependencies.md) 
+to install the dependencies.
 
 
-### Prerequisites
+Then clone the sources and install node modules:
 
 
-First, make sure that you have followed the steps to install the dependencies.
+```
+$ git clone https://github.com/Chocobozzz/PeerTube
+$ cd PeerTube
+$ yarn install --pure-lockfile
+```
 
 Then, create a postgres database and user with the values set in the
 `config/default.yaml` file. For instance, if you do not change the values
 there, the following commands would create a new database called `peertube_dev`
 and a postgres user called `peertube` with password `peertube`:
 
 
 Then, create a postgres database and user with the values set in the
 `config/default.yaml` file. For instance, if you do not change the values
 there, the following commands would create a new database called `peertube_dev`
 and a postgres user called `peertube` with password `peertube`:
 
-```bash
-    # sudo -u postgres createuser -P peertube
-    Enter password for new role: peertube
-    # sudo -u postgres createdb -O peertube peertube_dev
 ```
 ```
+# sudo -u postgres createuser -P peertube
+Enter password for new role: peertube
+# sudo -u postgres createdb -O peertube peertube_dev
+```
+
+In dev mode, administrator username is **root** and password is **test**.
 
 ### Server side
 
 
 ### Server side
 
+You can find a documentation of the server code/architecture [here](/support/doc/development/server/code.md).
+
 To develop on the server-side:
 
 To develop on the server-side:
 
-```bash
-    $ npm run dev:server
+```
+$ npm run dev:server
 ```
 
 Then, the server will listen on `localhost:9000`. When server source files
 ```
 
 Then, the server will listen on `localhost:9000`. When server source files
@@ -76,21 +85,81 @@ restart.
 
 ### Client side
 
 
 ### Client side
 
+You can find a documentation of the server code/architecture
+[here](/support/doc/development/client/code.md).
+
+
 To develop on the client side:
 
 To develop on the client side:
 
-```bash
-    $ npm run dev:client
+```
+$ npm run dev:client
 ```
 
 The API will listen on `localhost:9000` and the frontend on `localhost:3000`.
 Client files are automatically compiled on change, and the web browser will
 reload them automatically thanks to hot module replacement.
 
 ```
 
 The API will listen on `localhost:9000` and the frontend on `localhost:3000`.
 Client files are automatically compiled on change, and the web browser will
 reload them automatically thanks to hot module replacement.
 
-**Username**: *root* <br/>
-**Password**: *test*
+### Client and server side
 
 
+The API will listen on `localhost:9000` and the frontend on `localhost:3000`.
+File changes are automatically recompiled, injected in the web browser (no need to refresh manually)
+and the web server is automatically restarted.
 
 
-## Write documentation
+```
+$ npm run dev
+```
 
 
-You can help to write the documentation of the REST API, code, architecture,
-demonstrations...
+### Federation
+
+Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user.
+Then, we can create the databases (if they don't already exist):
+
+```
+$ sudo -u postgres createuser you_username --createdb
+$ createdb -O peertube peertube_test{1,2,3}
+```
+
+Build the application and flush the old tests data:
+
+```
+$ npm run build
+$ npm run clean:server:test
+```
+
+This will run 3 nodes:
+
+```
+$ npm run play
+```
+
+Then you will get access to the three nodes at `http://localhost:900{1,2,3}`
+with the `root` as username and `test{1,2,3}` for the password.
+
+Instance configurations are in `config/test-{1,2,3}.yaml`.
+
+### Unit tests
+
+Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user.
+
+Then, we can create the databases (if they don't already exist):
+
+```
+$ sudo -u postgres createuser you_username --createdb --superuser
+$ createdb -O peertube peertube_test{1,2,3,4,5,6}
+```
+
+Build the application and run the unit/integration tests:
+
+```
+$ npm run build
+$ npm test
+```
+
+If you just want to run 1 test:
+
+```
+$ npm run mocha -- --exit --require ts-node/register/type-check --bail server/tests/api/index.ts
+```
+
+Instance configurations are in `config/test-{1,2,3,4,5,6}.yaml`.
+Note that only instance 2 has transcoding enabled.
\ No newline at end of file