From 35a12fee2f639f43e9b0c48f6eeb355ff71a065f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 1 Dec 2016 22:16:38 +0100 Subject: [PATCH] Add client documentation --- .github/CONTRIBUTING.md | 2 + support/doc/client/code.md | 69 +++++++++++++++++++++++++ support/doc/client/components-tree.png | Bin 0 -> 47396 bytes 3 files changed, 71 insertions(+) create mode 100644 support/doc/client/code.md create mode 100644 support/doc/client/components-tree.png diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 78a914abc..3764eb7c4 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -28,6 +28,8 @@ Do not hesitate to talk about the functionnality you want to develop by creating The client is a web application developed with [TypeScript](https://www.typescriptlang.org/)/[Angular2](https://angular.io/) +Newcommer? You can find a documentation of the server code/architecture [here](https://github.com/Chocobozzz/PeerTube/blob/master/support/doc/client/code.md). + ## Write documentation diff --git a/support/doc/client/code.md b/support/doc/client/code.md new file mode 100644 index 000000000..3c2029847 --- /dev/null +++ b/support/doc/client/code.md @@ -0,0 +1,69 @@ +# Client code documentation + +The client is a HTML/CSS/JavaScript web application (single page application -> SPA) developed with [TypeScript](https://www.typescriptlang.org/)/[Angular 2](https://angular.io/). + + +## Technologies + + * [TypeScript](https://www.typescriptlang.org/) -> Language + * [Angular 2](https://angular.io) -> JavaScript framework + * [SASS](http://sass-lang.com/) -> CSS framework + * [Webpack 2](https://webpack.github.io/docs/) -> Source builder (compile TypeScript, SASS files, bundle them...) + * [Bootstrap](http://getbootstrap.com/) -> CSS framework + * [WebTorrent](https://webtorrent.io/) -> JavaScript library to make P2P in the browser + * [VideoJS](http://videojs.com/) -> JavaScript player framework + + +## Files + +The client files are in the `client` directory. The Webpack 2 configurations files are in `client/config` and the source files in `client/src`. +The client modules description are in the [client/package.json](https://github.com/Chocobozzz/PeerTube/blob/master/client/package.json). There are many modules that are used to compile the web application in development or production mode. +Here is the description of the useful `client` files directory: + + tslint.json -> TypeScript linter rules + tsconfig.json -> TypeScript configuration for the compilation + .bootstraprc -> Bootstrap configuration file (which module we need) + config -> Webpack configuration files + src + |__ app -> TypeScript files for Angular 2 application + |__ assets -> static files (images...) + |__ sass -> SASS files that are global for the application + |__ standalone -> files outside the Angular application (embed HTML page...) + |__ index.html -> root HTML file for our Angular 2 application + |__ main.ts -> Main TypeScript file that boostraps our Angular 2 application + |__ polyfills.ts -> Polyfills imports (ES 2015...) + |__ vendor.ts -> Vendor imports (Angular, Bootstrap...) + +Details of the Angular 2 application file structure. It tries to follow [the official Angular 2 styleguide](https://angular.io/docs/ts/latest/guide/style-guide.html). + + app + |__ account -> Account components (password change...) + |__ admin -> Admin components (friends, users...) + |__ core -> Core components/services + |__ login -> Login component + |__ shared -> Shared components/services (search component, REST services...) + |__ videos -> Video components (list, watch, upload...) + |__ app.component.{html,scss,ts} -> Main application component + |__ app.module.ts -> Angular 2 root module that imports all submodules we need + +## Conventions + +Uses [TSLint](https://palantir.github.io/tslint/) for TypeScript linting and [Angular 2 styleguide](https://angular.io/docs/ts/latest/guide/style-guide.html). + +## Developing + + * Install [the dependencies](https://github.com/Chocobozzz/PeerTube#dependencies) + * Run `npm install` at the root directory to install all the dependencies + * Run MongoDB + * 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. +If you are not familiar with Angular 2 I recommend you to read the [quickstart guide](https://angular.io/docs/ts/latest/quickstart.html). + +## Components tree + +![Components tree](https://github.com/Chocobozzz/PeerTube/blob/master/support/doc/client/components-tree.png) + +## Newcomers + +The main client component is `app.component.ts`. You can begin to look at this file. Then you could navigate in the different submodules to see how components are built. diff --git a/support/doc/client/components-tree.png b/support/doc/client/components-tree.png new file mode 100644 index 0000000000000000000000000000000000000000..cd89aa02b21e62ce5e1202215ec07fb0fda9f06d GIT binary patch literal 47396 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