├── library ├── movies │ └── .gitkeep ├── downloads │ └── .gitkeep └── tvshows │ └── .gitkeep ├── packages ├── vpn │ └── .gitkeep ├── jackett │ ├── config │ │ └── .gitkeep │ └── downloads │ │ └── .gitkeep ├── transmission │ ├── config │ │ ├── .gitkeep │ │ └── settings.json │ └── watch │ │ └── .gitkeep ├── api │ ├── .dockerignore │ ├── module.d.ts │ ├── nest-cli.json │ ├── tsconfig.build.json │ ├── src │ │ ├── entities │ │ │ ├── dao │ │ │ │ ├── tag.dao.ts │ │ │ │ ├── file.dao.ts │ │ │ │ ├── movie.dao.ts │ │ │ │ ├── quality.dao.ts │ │ │ │ ├── torrent.dao.ts │ │ │ │ ├── media-view.dao.ts │ │ │ │ ├── parameter.dao.ts │ │ │ │ ├── tvshow.dao.ts │ │ │ │ ├── tvseason.dao.ts │ │ │ │ └── tvepisode.dao.ts │ │ │ ├── parameter.entity.ts │ │ │ ├── tag.entity.ts │ │ │ ├── torrent.entity.ts │ │ │ ├── quality.entity.ts │ │ │ ├── tvshow.entity.ts │ │ │ ├── file.entity.ts │ │ │ ├── movie.entity.ts │ │ │ ├── media-view.entity.ts │ │ │ ├── tvseason.entity.ts │ │ │ └── tvepisode.entity.ts │ │ ├── utils │ │ │ ├── format-number.ts │ │ │ ├── sanitize.ts │ │ │ ├── allowed-file-extensions.json │ │ │ ├── promise-resolve.ts │ │ │ ├── recursive-camel-case.ts │ │ │ └── winston-options.ts │ │ ├── modules │ │ │ ├── image-cache │ │ │ │ ├── image-cache.module.ts │ │ │ │ └── image-cache.controller.ts │ │ │ ├── redis │ │ │ │ ├── redis.module.ts │ │ │ │ ├── cache.dto.ts │ │ │ │ ├── invalidate-cache.interceptor.ts │ │ │ │ ├── redis.service.ts │ │ │ │ └── cache.interceptor.ts │ │ │ ├── omdb │ │ │ │ ├── omdb.module.ts │ │ │ │ ├── omdb.resolver.ts │ │ │ │ ├── omdb.dto.ts │ │ │ │ └── omdb.service.ts │ │ │ ├── transmission │ │ │ │ ├── transmission.module.ts │ │ │ │ ├── transmission.dto.ts │ │ │ │ ├── transmission.resolver.ts │ │ │ │ └── transmission.service.ts │ │ │ ├── health │ │ │ │ └── health.controller.ts │ │ │ ├── params │ │ │ │ ├── params.module.ts │ │ │ │ ├── params.dto.ts │ │ │ │ └── params.resolver.ts │ │ │ ├── jackett │ │ │ │ ├── jackett.resolver.ts │ │ │ │ ├── jackett.module.ts │ │ │ │ └── jackett.dto.ts │ │ │ ├── tmdb │ │ │ │ ├── tmdb.module.ts │ │ │ │ └── tmdb.resolver.ts │ │ │ ├── jobs │ │ │ │ ├── jobs.resolver.ts │ │ │ │ ├── jobs.module.ts │ │ │ │ └── jobs.service.ts │ │ │ └── library │ │ │ │ ├── library.module.ts │ │ │ │ └── library.dto.ts │ │ ├── main.ts │ │ ├── config.ts │ │ ├── app.module.ts │ │ └── app.dto.ts │ ├── Dockerfile │ ├── tsconfig.json │ ├── .gitignore │ └── package.json └── web │ ├── .dockerignore │ ├── public │ ├── favicon.ico │ ├── assets │ │ └── rating │ │ │ ├── IMDB.png │ │ │ ├── TMDB.png │ │ │ ├── metaCritic.png │ │ │ └── rottenTomatoes.png │ └── zeit.svg │ ├── .babelrc │ ├── queries │ ├── get-languages.query.graphql │ ├── get-tags.query.graphql │ ├── get-genres.query.graphql │ ├── get-movie-file-details.query.graphql │ ├── omdb-search.query.graphql │ ├── get-quality.query.graphql │ ├── get-params.query.graphql │ ├── get-library-tvshows.query.graphql │ ├── get-tv-show-seasons.query.graphql │ ├── get-library-movies.query.graphql │ ├── get-downloading.query.graphql │ ├── get-torrent-status.query.graphql │ ├── search-torrent.query.graphql │ ├── get-calendar.query.graphql │ ├── get-recommended.query.graphql │ ├── get-popular.query.graphql │ ├── search.query.graphql │ ├── get-missing.query.graphql │ ├── get-tv-season-details.query.graphql │ └── get-discovery.query.graphql │ ├── mutations │ ├── clear-cache.mutation.graphql │ ├── save-tags.mutation.graphql │ ├── remove-movie.mutation.graphql │ ├── remove-tv-show.mutation.graphql │ ├── track-movie.mutation.graphql │ ├── update-params.mutation.graphql │ ├── save-quality.mutation.graphql │ ├── track-tvshow.mutation.graphql │ ├── reset-library.mutation.graphql │ ├── download-own-torrent.mutation.graphql │ ├── jobs.mutation.graphql │ └── manual-download.mutation.graphql │ ├── components │ ├── home │ │ └── home.component.tsx │ ├── layout │ │ ├── layout.styles.tsx │ │ └── layout.component.tsx │ ├── discover │ │ ├── discover-filter-section.styles.tsx │ │ ├── discover-filter-section.component.tsx │ │ └── discover.styles.tsx │ ├── calandar │ │ ├── calendar.styles.tsx │ │ └── calendar.component.tsx │ ├── theme.ts │ ├── rating │ │ ├── rating.component.tsx │ │ └── rating.styles.tsx │ ├── settings │ │ ├── settings.helpers.ts │ │ ├── settings.component.tsx │ │ ├── settings.styles.tsx │ │ ├── settings-form.component.tsx │ │ ├── actions.component.tsx │ │ └── quality-params.component.tsx │ ├── manual-search │ │ ├── manual-search.styles.tsx │ │ └── manual-search.helpers.ts │ ├── fonts.ts │ ├── movie-details │ │ ├── rating-details.styles.ts │ │ ├── movie-file-details.component.tsx │ │ ├── rating-details.component.tsx │ │ ├── use-remove-library.hook.tsx │ │ ├── use-add-library.hook.tsx │ │ └── movie-details.styles.tsx │ ├── missing │ │ └── missing.styles.tsx │ ├── library-header │ │ └── library-header.component.tsx │ ├── movies │ │ ├── movies.styles.tsx │ │ └── movies.component.tsx │ ├── downloading │ │ ├── downloading.styles.tsx │ │ ├── downloading.component.tsx │ │ ├── searching-rows.component.tsx │ │ └── downloading-rows.component.tsx │ ├── navbar │ │ ├── navbar.component.tsx │ │ └── navbar.styles.tsx │ ├── tmdb-card │ │ ├── tmdb-card.styles.tsx │ │ └── tmdb-card.component.tsx │ ├── with-apollo.tsx │ ├── tvshow-details │ │ ├── use-get-seasons.hook.tsx │ │ └── tvshow-details.styles.tsx │ ├── tvshows │ │ └── tvshows.component.tsx │ ├── suggestions │ │ └── suggestions.component.tsx │ ├── search │ │ ├── search.styles.tsx │ │ └── carousel.component.tsx │ └── sortable │ │ └── sortable.component.tsx │ ├── next-env.d.ts │ ├── utils │ ├── api-url.ts │ ├── format-number.ts │ ├── redirect.ts │ ├── get-cached-image-url.ts │ ├── to-base64.ts │ ├── create-search-function.ts │ └── available-in.ts │ ├── Dockerfile │ ├── styled-components.d.ts │ ├── .gitignore │ ├── pages │ ├── search.tsx │ ├── calendar.tsx │ ├── discover.tsx │ ├── library │ │ ├── movies.tsx │ │ └── tvshows.tsx │ ├── settings.tsx │ ├── suggestions.tsx │ ├── _document.tsx │ └── _app.tsx │ ├── codegen.yml │ ├── next.config.js │ ├── tsconfig.json │ └── package.json ├── screenshot.png ├── .eslintignore ├── apollo.config.js ├── .eslintrc.js ├── docker-compose.dev.yml ├── .gitignore ├── .env ├── .github ├── stale.yml └── workflows │ ├── lint-and-build.yml │ ├── build-and-publish-api.yml │ └── build-and-puslish-web.yml ├── docker-compose.wireguard.yml ├── docker-compose.vpn.yml ├── LICENSE ├── package.json ├── scripts ├── bobarr.sh └── install.sh ├── docker-compose.yml ├── CHANGELOG.md └── CODE_OF_CONDUCT.md /library/movies/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/vpn/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /library/downloads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /library/tvshows/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/jackett/config/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/jackett/downloads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/transmission/config/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/transmission/watch/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/api/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /packages/web/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .next 3 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/screenshot.png -------------------------------------------------------------------------------- /packages/api/module.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'xml2json-light'; 2 | declare module 'lib-get-redirects'; 3 | -------------------------------------------------------------------------------- /packages/api/nest-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "collection": "@nestjs/schematics", 3 | "sourceRoot": "src" 4 | } 5 | -------------------------------------------------------------------------------- /packages/web/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/packages/web/public/favicon.ico -------------------------------------------------------------------------------- /packages/web/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["next/babel"], 3 | "plugins": [["styled-components", { "ssr": true }]] 4 | } 5 | -------------------------------------------------------------------------------- /packages/web/public/assets/rating/IMDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/packages/web/public/assets/rating/IMDB.png -------------------------------------------------------------------------------- /packages/web/public/assets/rating/TMDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/packages/web/public/assets/rating/TMDB.png -------------------------------------------------------------------------------- /packages/api/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/web/public/assets/rating/metaCritic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/packages/web/public/assets/rating/metaCritic.png -------------------------------------------------------------------------------- /packages/web/public/assets/rating/rottenTomatoes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iam4x/bobarr/HEAD/packages/web/public/assets/rating/rottenTomatoes.png -------------------------------------------------------------------------------- /packages/web/queries/get-languages.query.graphql: -------------------------------------------------------------------------------- 1 | query getLanguages { 2 | languages: getLanguages { 3 | code, 4 | language 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/web/mutations/clear-cache.mutation.graphql: -------------------------------------------------------------------------------- 1 | mutation clearCache { 2 | result: clearRedisCache { 3 | success 4 | message 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/web/components/home/home.component.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export function HomeComponent() { 4 | return
36 | {rate?.[0]}
37 | {rate?.[1]}
38 |