{"id":13588788,"url":"https://github.com/CouchBuddy/couch-buddy","last_synced_at":"2025-04-08T06:32:46.726Z","repository":{"id":37868573,"uuid":"254683411","full_name":"CouchBuddy/couch-buddy","owner":"CouchBuddy","description":"A Media Center with Cast support that belongs to this millennium","archived":false,"fork":false,"pushed_at":"2023-03-13T20:33:40.000Z","size":6103,"stargazers_count":10,"open_issues_count":40,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-06T08:43:15.584Z","etag":null,"topics":["chromecast","javascript","koa","media-center","media-player","movie-database","nodejs","subtitles","tailwindcss","tv-series","vue"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CouchBuddy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2020-04-10T16:31:26.000Z","updated_at":"2023-04-13T16:57:58.000Z","dependencies_parsed_at":"2024-06-12T07:32:55.381Z","dependency_job_id":null,"html_url":"https://github.com/CouchBuddy/couch-buddy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CouchBuddy%2Fcouch-buddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CouchBuddy%2Fcouch-buddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CouchBuddy%2Fcouch-buddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CouchBuddy%2Fcouch-buddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CouchBuddy","download_url":"https://codeload.github.com/CouchBuddy/couch-buddy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247792178,"owners_count":20996878,"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":["chromecast","javascript","koa","media-center","media-player","movie-database","nodejs","subtitles","tailwindcss","tv-series","vue"],"created_at":"2024-08-01T15:06:55.913Z","updated_at":"2025-04-08T06:32:41.714Z","avatar_url":"https://github.com/CouchBuddy.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","javascript","vue"],"sub_categories":[],"readme":"# Couch Buddy\n\n\u003e From 12 May 2020, Couch Buddy versions have been moved to packages.\n\n\u003e The server (from v0.4.0) has been ported to TypeScript and the DB model slightly changed (to use an existing DB, see [DB Migration](#db-migration)).\n\nCouch Buddy is a free and open-source Media Center\nfor managing your digital media collection.\n\nYou can install it on PCs, servers, RaspberryPi and anywhere NodeJS can run,\nyou can access it from any browser or from Couch Buddy mobile app\nand you can stream content to ChromeCast devices!\n\n![All movies](https://raw.githubusercontent.com/lucafaggianelli/couch-buddy/master/docs/screenshots/all-movies.png)\n\nThis repository includes the **Media Server** and the **Web Client**.\nHere the [mobile app repository](https://github.com/CouchBuddy/couch-buddy-mobile).\n\nTypical usage of Couch Buddy is to install it on a laptop, a NAS, a Raspberry PI and then casting content to a smart TV or to a ChromeCast, Couch Buddy doesn't need to run on hardware attached to the TV HDMI.\n\n## Features\n\n* Organize your media files into an easy to use app\n* Find movies and TV series info automatically from [The Movie DB](https://www.themoviedb.org/)\n* Watch any content in the browser or in the mobile app\n* Stream any content to ChromeCast\n  (unsupported video files are converted on-the-fly)\n* Handle TV series with seasons and episodes\n\n![TV series](https://raw.githubusercontent.com/lucafaggianelli/couch-buddy/master/docs/screenshots/series.png)\n\n* Automatically download subtitles from [Open Subtitles](opensubtitles.org)\n* Integrated download manager/torrent client\n* Useful keyboad shortcut (press `?`)\n\n## Get started\n\nCurrently, there isn't a packaged option for Couch Buddy,\nso you need to install and run it as a Node JS project.\n\nInstall and build both the server and the client:\n\n\u003e Note: if you don't care about the web client\n  (maybe because you use the mobile app), you can run the\n  below commands from the `server/` dir.\n\n```sh\n# Run from main couch-buddy/ dir\nnpm run install\nnpm run build\n```\n\nBe sure to configure the server, see [Configuration](#configuration).\n\nThe first time you run the server, you must also initialize the DB (that is, creating the tables), just run this script:\n\n```sh\ncd server\nnpm run db:sync\ncd ..\n```\n\nFinally run the server:\n```sh\nnpm run start\n```\n\nNow open http://localhost:3000 in your browser\n\n## Configuration\n\n\u003e **Important**: Some configurations are optional, Couch Buddy can work without them, but functionalities may be lost.\n\nThe server is configured via environmental variables, the preferred way is to use a file\nnamed `.env` placed in the `server/` folder, at startup, CouchBuddy reads it and loads the\nconfiguration from it. An example configuration file is provided, just rename and edit it\nto your needs:\n\n```sh\ncp server/.env.sample server/.env\n# edit server/.env\n```\n\n### Server configuration\n\nThe only mandatory config is `MEDIA_DIR`, which is the directory where your media files are stored. The rest is optional, but you need `TMDB_API_KEY` to be able to scan the media directory and add files to your library.\n\n|Name               |Required|Default|Description|\n|-------------------|:-:|-------|-----------|\n|DB_SQLITE_PATH     | N | db.sqlite |SQLite DB file path, ex: `db.sqlite`|\n|MEDIA_DIR     | Y ||Directoty with your video files, ex: `/media/luca/MyHDD/videos/`|\n|OMDB_API_KEY           | N ||(*Deprecated*: please use TMDB) OMDb API key, needed for getting movies info. Register and get your key at http://www.omdbapi.com/apikey.aspx|\n|TMDB_API_KEY       | N ||The Movie Db API key, needed for getting movies info. Register and get your key at https://developers.themoviedb.org/3/getting-started\n|OPEN_SUBTITLES_UA   | N ||Open Subtitles UserAgent, needed for downloading movies subs. Request a UserAgent at https://trac.opensubtitles.org/projects/opensubtitles/wiki/DevReadFirst|\n|PORT               | N |3000|Port where the server listens|\n\n## DB Migration\n\nIf you want to use a DB generated before v0.4.0, you just need to rename the tables to use snake_case instead of camaelCase and to add few columns.\n\n**Rename tables**\n* *mediaFiles* to *media_files*\n* *subtitlesFiles* to *subtitles_files*\n\n**Add Columns**\n* In *movies* and *episodes* tables, add `TEXT backdrop` column\n* In *movies* and *episodes* tables, rename *ratingImdb* to *vote*\n\n## Development\n\nCouch Buddy is a web application developed in JavaScript and TypeScript,\nthe backend is fully written in TS and uses NodeJS + Koa and exposes only an HTTP REST API,\nwhile the frontend is a Vue Single Page App + Tailwind CSS for the UI.\n\nThis Git repository is organized in a multi-package, as it includes\nboth the server and client with their respective NPM `package.json` files,\nthus you can individually interact with them, for the server:\n\n```sh\ncd server\nnpm i\nnpm run dev\n```\n\nand for the client:\n\n```sh\ncd client\nnpm i\nnpm run serve\n```\n\nThe top-level `package.json` just includes useful NPM scripts\nfor running all the lower packages together (thanks to `npm-run-all`).\n\n### TypeORM\n\nTypeorm CLI should be run via the NPM script `typeorm`, to be able to load TS code `npm run typeorm`, see details [here](https://github.com/typeorm/typeorm/blob/master/docs/using-cli.md).\n\n#### Migrations\n\nTo generate migrations run:\n\n```bash\nnpm run typeorm migration:generate -n MigrationName\n```\n\n## Test\n\nRun the full test suite:\n\n```sh\nnpm test\n# or\nnpx mocha\n```\n\nYou can also run partial tests using *Mocha grep* feature, for example:\n\n```sh\n# Run all tests about /downloads REST API endpoints\nnpx mocha -g \"REST .* \\\\/downloads\"\n```\n\nSome test suites can also be run by file, i.e.:\n\n```sh\nnpm test test/test-utils.ts\n```\n\nThough, complex tests like the API and the library ones (and any test involving DB and services access), cannot be run in that way, as the initialization procedures are not included, those tests must be always run with `mocha --grep`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCouchBuddy%2Fcouch-buddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCouchBuddy%2Fcouch-buddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCouchBuddy%2Fcouch-buddy/lists"}