PeerTube/support/doc/development/server/code.md

2.6 KiB

Server code documentation

The server is a web server developed with TypeScript/Express.

Technologies

Files

The server main file is server.ts. The server modules description are in the package.json at the project root. All other server files are in the server directory:

server.ts -> app initilization, main routes configuration (static routes...)
config    -> server YAML configurations (for tests, production...)
scripts   -> Scripts files for npm run
server
|__ controllers  -> API routes/controllers files
|__ helpers      -> functions used by different part of the project (logger, utils...)
|__ initializers -> functions used at the server startup (installer, database, constants...)
|__ lib          -> library function (WebTorrent, OAuth2, ActivityPub...)
|__ middlewares  -> middlewares for controllers (requests validators, requests pagination...)
|__ models       -> Sequelize models for each SQL tables (videos, users, accounts...)
|__ tests        -> API tests and real world simulations (to test the decentralized feature...)

Conventions

Uses JavaScript Standard Style.

Architecture

The server is composed by:

  • a REST API (Express framework)
  • a WebTorrent Tracker

A video is seeded by the server with the WebSeed protocol (HTTP).

Architecture scheme

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.

Newcomers

The server entrypoint is server.ts. You can begin to look at this file. Then you can try to understand the controllers: they are the entrypoint of each API request.