mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
	
		
			2.4 KiB
		
	
	
	
	
			
		
		
	
	
			2.4 KiB
		
	
	
	
	
Server code documentation
The server is a web server developed with TypeScript/Express.
Technologies
- TypeScript -> Language
- PostgreSQL -> Database
- Redis -> Job queue/cache
- Express -> Web server framework
- Sequelize -> SQL ORM
- WebTorrent -> BitTorrent tracker and torrent creation
- Mocha -> Test framework
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 initialization, 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).
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.
