]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - .github/CONTRIBUTING.md
Increase max stalled count in job queue
[github/Chocobozzz/PeerTube.git] / .github / CONTRIBUTING.md
1 # Welcome to the contributing guide for PeerTube
2
3 Interesting in contributing? Awesome!
4
5 **Quick Links:**
6
7 * [Translate](#translate)
8 * [Give your feedback](#give-your-feedback)
9 * [Write documentation](#write-documentation)
10 * [Develop](#develop)
11
12
13 ## Translate
14
15 You can help us to translate the PeerTube interface to many languages! See [the documentation](/support/doc/translation.md) to know how.
16
17
18 ## Give your feedback
19
20 You don't need to know how to code to start contributing to PeerTube! Other
21 contributions are very valuable too, among which: you can test the software and
22 report bugs, you can give feedback on potential bugs, features that you are
23 interested in, user interface, design, decentralized architecture...
24
25
26 ## Write documentation
27
28 You can help to write the documentation of the REST API, code, architecture,
29 demonstrations.
30
31 For the REST API you can see the documentation in [/support/doc/api](/support/doc/api) directory.
32 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.
33
34 Some hints:
35 * Routes are defined in [/server/controllers/](/server/controllers/) directory
36 * Parameters validators are defined in [/server/middlewares/validators](/server/middlewares/validators) directory
37 * Models sent/received by the controllers are defined in [/shared/models](/shared/models) directory
38
39
40 ## Develop
41
42 Don't hesitate to talk about features you want to develop by creating/commenting an issue
43 before you start working on them :).
44
45 ### Prerequisites
46
47 First, make sure that you have followed
48 [the steps](/support/doc/dependencies.md)
49 to install the dependencies.
50
51 Then clone the sources and install node modules:
52
53 ```
54 $ git clone https://github.com/Chocobozzz/PeerTube
55 $ cd PeerTube
56 $ yarn install --pure-lockfile
57 ```
58
59 Then, create a postgres database and user with the values set in the
60 `config/default.yaml` file. For instance, if you do not change the values
61 there, the following commands would create a new database called `peertube_dev`
62 and a postgres user called `peertube` with password `peertube`:
63
64 ```
65 # sudo -u postgres createuser -P peertube
66 Enter password for new role: peertube
67 # sudo -u postgres createdb -O peertube peertube_dev
68 ```
69
70 In dev mode, administrator username is **root** and password is **test**.
71
72 ### Server side
73
74 You can find a documentation of the server code/architecture [here](/support/doc/development/server/code.md).
75
76 To develop on the server-side:
77
78 ```
79 $ npm run dev:server
80 ```
81
82 Then, the server will listen on `localhost:9000`. When server source files
83 change, these are automatically recompiled and the server will automatically
84 restart.
85
86 ### Client side
87
88 You can find a documentation of the server code/architecture
89 [here](/support/doc/development/client/code.md).
90
91
92 To develop on the client side:
93
94 ```
95 $ npm run dev:client
96 ```
97
98 The API will listen on `localhost:9000` and the frontend on `localhost:3000`.
99 Client files are automatically compiled on change, and the web browser will
100 reload them automatically thanks to hot module replacement.
101
102 ### Client and server side
103
104 The API will listen on `localhost:9000` and the frontend on `localhost:3000`.
105 File changes are automatically recompiled, injected in the web browser (no need to refresh manually)
106 and the web server is automatically restarted.
107
108 ```
109 $ npm run dev
110 ```
111
112 ### Federation
113
114 Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user.
115 Then, we can create the databases (if they don't already exist):
116
117 ```
118 $ sudo -u postgres createuser you_username --createdb
119 $ createdb -O peertube peertube_test{1,2,3}
120 ```
121
122 Build the application and flush the old tests data:
123
124 ```
125 $ npm run build
126 $ npm run clean:server:test
127 ```
128
129 This will run 3 nodes:
130
131 ```
132 $ npm run play
133 ```
134
135 Then you will get access to the three nodes at `http://localhost:900{1,2,3}`
136 with the `root` as username and `test{1,2,3}` for the password.
137
138 Instance configurations are in `config/test-{1,2,3}.yaml`.
139
140 ### Unit tests
141
142 Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user.
143
144 Then, we can create the databases (if they don't already exist):
145
146 ```
147 $ sudo -u postgres createuser you_username --createdb --superuser
148 $ createdb -O peertube peertube_test{1,2,3,4,5,6}
149 ```
150
151 Build the application and run the unit/integration tests:
152
153 ```
154 $ npm run build
155 $ npm test
156 ```
157
158 If you just want to run 1 test:
159
160 ```
161 $ npm run mocha -- --exit --require ts-node/register/type-check --bail server/tests/api/index.ts
162 ```
163
164 Instance configurations are in `config/test-{1,2,3,4,5,6}.yaml`.
165 Note that only instance 2 has transcoding enabled.