* Install [the dependencies](https://github.com/Chocobozzz/PeerTube#dependencies)
* Run `npm install` at the root directory to install all the dependencies
- * Run MongoDB
+ * Run PostgreSQL and create the database `peertube_dev`.
* Run `npm run dev` to compile the client and automatically run the server. Then the server will watch and compile the client files automatically. You just need to refresh the browser to see your modifications.
In a Angular 2 application, we create components that we put together. Each component is defined by an HTML structure, a TypeScript file and optionnaly a SASS file.
## Technologies
* [NodeJS](https://nodejs.org) -> Language
- * [MongoDB](https://www.mongodb.com/) -> Database
+ * [PostgreSQL](https://www.postgresql.org/) -> Database
* [Express](http://expressjs.com) -> Web server framework
- * [Mongoose](http://mongoosejs.com/) -> MongoDB object modeling
+ * [Sequelize](http://docs.sequelizejs.com/en/v3/) -> SQL ORM
* [WebTorrent](https://webtorrent.io/) -> BitTorrent tracker and torrent creation
* [Mocha](https://mochajs.org/) -> Test framework
|__ initializers -> functions used at the server startup (installer, database, constants...)
|__ lib -> library function (WebTorrent, OAuth2, friends logic...)
|__ middlewares -> middlewares for controllers (requests validators, requests pagination...)
- |__ models -> Mongoose models for each MongoDB collection (videos, users, pods...)
+ |__ models -> Sequelize models for each SQL tables (videos, users, pods...)
|__ tests -> API tests and real world simulations (to test the decentralized feature...)
* Install [the dependencies](https://github.com/Chocobozzz/PeerTube#dependencies)
* Run `npm install` at the root directory to install all the dependencies
- * Run MongoDB
+ * Run PostgreSQL and create the database `peertube_dev`.
* Run `npm run dev` to compile the client and automatically run the server. If the client files are already compiled you can simply run `NODE_ENV=test node server`
The `NODE_ENV=test` is set to speed up communications between pods (see [constants.js](https://github.com/Chocobozzz/PeerTube/blob/master/server/initializers/constants.js)).
![Architecture scheme](https://github.com/Chocobozzz/PeerTube/blob/master/support/doc/server/upload-video.png)
-When a user uploads a video, the rest API create the torrent file and then adds it to its Mongo database.
+When a user uploads a video, the rest API create the torrent file and then adds it to its database.
If a user wants to watch the video, the tracker will indicate all other users that are watching the video + the HTTP url for the WebSeed.