{"id":21141708,"url":"https://github.com/elschnagoo/xserver","last_synced_at":"2025-10-01T23:31:43.216Z","repository":{"id":180002983,"uuid":"655793638","full_name":"Elschnagoo/XServer","owner":"Elschnagoo","description":"GrandLineX Full Stack Demo Project - Video Server","archived":false,"fork":false,"pushed_at":"2024-07-30T05:52:53.000Z","size":2519,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-20T07:38:00.187Z","etag":null,"topics":["demo","full-stack","grandlinex","postgresql","react","typescript","video-streaming"],"latest_commit_sha":null,"homepage":"https://www.grandlinex.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Elschnagoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-19T15:56:35.000Z","updated_at":"2024-07-30T05:52:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"bd2e7cb0-ff65-4fc1-baef-4e43975a2a64","html_url":"https://github.com/Elschnagoo/XServer","commit_stats":null,"previous_names":["elschnagoo/xserver"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elschnagoo%2FXServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elschnagoo%2FXServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elschnagoo%2FXServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elschnagoo%2FXServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Elschnagoo","download_url":"https://codeload.github.com/Elschnagoo/XServer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234909112,"owners_count":18905505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["demo","full-stack","grandlinex","postgresql","react","typescript","video-streaming"],"created_at":"2024-11-20T07:33:19.123Z","updated_at":"2025-10-01T23:31:37.789Z","avatar_url":"https://github.com/Elschnagoo.png","language":"TypeScript","readme":"# XServer - [GrandLineX](https://www.grandlinex.com) Full Stack Demo Project\n\n\u003e Video Server with automatic metadata extraction and download service\n\n![img](./img/img_1.png)\n\n## Includes\n\n\n- Backend\n  - Video Server with single user\n  - User Authentication (Admin only)\n  - In time streaming with ffmpeg \n  - Video thumbnail generation (ffmpeg, imagemagick)\n  - Download service with yt-dlp or youtube-dl\n  - Automatic video metadata extraction (ffmpeg, ffprobe)\n  - Videos can be manuel labeled with tags\n  - Postgres Database connection\n\n- Frontend\n  - Login Page\n  - Video List Page\n  - Single Video Detail Page\n  - Video Download Page\n  - Label management Page\n\n## Used GLX-Packages\n\n- Backend\n  - [Express Kernel](https://www.grandlinex.com/kernel)   \n    - Base backend package\n  - [Elogger](https://www.grandlinex.com/bundle-elogger)\n    - File Logging package \n  - [Postgresql](https://www.grandlinex.com/bundle-postgresql)\n    - Postgress database integration\n  - [Swagger-Mate](https://www.grandlinex.com/swagger-mate)\n    - Automatic api generation for the React frontend\n\n- Frontend\n  - [React-Components](https://www.grandlinex.com/react-components)\n    - React component library\n  - [Swagger-Mate](https://www.grandlinex.com/swagger-mate)\n    - Automatic api generation for the React frontend\n\n## Quickstart Demo\n\n- `docker compose  -f demo.docker-compose.yml up -d`\n- Open `http://localhost:8080`\n- Login with the demo pw `x_server_demo`\n- Add library folder `/video` and set download = true\n- Add media\n  - Download a video from YouTube or other sources in the download section\n  - Copy files to the `./demo/video` folder and start a rescan in the library section\n\n## Quickstart\n### Requirements\n- [NodeJS](https://nodejs.org/en/) \u003e= 16\n- [ffmpeg](https://ffmpeg.org/)\n- [imagemagick](https://imagemagick.org/index.php)\n- [youtube-dl](https://youtube-dl.org/) or [yt-dlp](https://github.com/yt-dlp/yt-dlp)\n- \n\u003e make sure that ffmpeg, ffprobe, imagemagick and youtube-dl are in your PATH or set in the backend .env file\n- Alternatively you can use the pre build container to run the backend (All requirements are included in the container)\n\n### Install\n1. Setup a postgres database\n   - Use the docker-compose.yml in the root folder\n   - Copy the `.env.example` file to `.env` and fill in the database credentials\n   - start the database with `$ docker compose up -d`\n2. Prepare the backend\n   - `$ cd backend`\n   - Copy the `.env.example` file to `.env` and fill in the database credentials and the SERVER_PASSWORD\n     - The SERVER_PASSWORD is used as the admin password (user: `admin`)\n   - `$ npm install`\n   - `$ npm run start-dev`\n3. Prepare the frontend\n   1. First Option use static frontend served by the backend\n      - run the `installFrontend.sh`(Unix) or `installFrontend.ps1`(Windows) script in the root folder\n      - use the url `http://localhost:9257` to access the frontend\n\n   1. Second Option use the dev hot reload frontend served by the webpack dev server\n      - run the `installFrontend.sh`(Unix) or `installFrontend.ps1`(Windows) script in the root folder\n      - run `$ cd frontend` and `$ npm run start`\n      - use the url `http://localhost:9001` to access the dev frontend\n\n4. Done 🎉\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felschnagoo%2Fxserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felschnagoo%2Fxserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felschnagoo%2Fxserver/lists"}