diff --git a/.eslintrc.js b/.eslintrc.js
index ee3dbce6..a5518f73 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,8 +1,8 @@
module.exports = {
root: true,
-
parser: '@typescript-eslint/parser', // Specifies the ESLint parser
extends: [
+ 'eslint:recommended',
'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
@@ -30,6 +30,8 @@ module.exports = {
'@typescript-eslint/explicit-function-return-type': 'off',
'prettier/prettier': ['error', { endOfLine: 'auto' }],
'formatjs/no-offset': 'error',
+ 'no-unused-vars': 'off',
+ '@typescript-eslint/no-unused-vars': ['error'],
},
overrides: [
{
@@ -52,6 +54,5 @@ module.exports = {
jest: true,
es6: true,
},
-
reportUnusedDisableDirectives: true,
};
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..c188c311
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 sct
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index be9cd226..19985f53 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,19 @@
+
+
+## Support
+
+- You can reach us for support on [Discord](https://discord.gg/ySfaEUcQ).
+- Bugs can be opened with an issue on [Github](https://github.com/sct/overseerr/issues).
## API Documentation
-- Coming soon
+Full API documentation will soon be published automatically and available outside of running the app. But currently, you can access the api docs by running Overseerr locally and visiting http://localhost:3000/api-docs
## Contribution
+Anyone is welcome to contribute to Docker and pull requests are greatly appreciated! Contributors will be recognized in the future on this very README.
+
+### Developing Overseerr
+
You can develop Overseer entirely in docker. Make sure you have [Docker Desktop](https://www.docker.com/products/docker-desktop) installed before continuing.
1. Make sure you have [Docker Desktop](https://www.docker.com/products/docker-desktop) installed.
-2. Run `docker-compose up -d` to start the server
+2. Run `docker-compose up -d` to start the server.
3. Access the container at http://localhost:3000
-That's it!
+If Docker isn't your jam, you can always run Overseer with the following yarn commands:
+
+```
+yarn
+yarn dev
+```
+
+You will need NodeJS installed. Once it's built and running, access it locally at http://localhost:3000 just like Docker.
+
+### Translation
+
+We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations so please feel free to contribute to localizing Overseerr!
diff --git a/package.json b/package.json
index 156616da..dbee0f2f 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"migration:run": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:run",
"format": "prettier --write ."
},
+ "license": "MIT",
"dependencies": {
"@svgr/webpack": "^5.4.0",
"axios": "^0.20.0",
@@ -36,6 +37,7 @@
"pug": "^3.0.0",
"react": "16.13.1",
"react-dom": "16.13.1",
+ "react-intersection-observer": "^8.31.0",
"react-intl": "^5.8.5",
"react-spring": "^8.0.27",
"react-toast-notifications": "^2.4.0",
@@ -46,14 +48,14 @@
"swagger-ui-express": "^4.1.4",
"swr": "^0.3.5",
"typeorm": "^0.2.26",
- "uuid": "^8.3.0",
+ "uuid": "^8.3.1",
"winston": "^3.3.3",
"xml2js": "^0.4.23",
"yamljs": "^0.3.0",
"yup": "^0.29.3"
},
"devDependencies": {
- "@babel/cli": "^7.11.6",
+ "@babel/cli": "^7.12.8",
"@commitlint/cli": "^11.0.0",
"@commitlint/config-conventional": "^11.0.0",
"@semantic-release/changelog": "^5.0.1",
@@ -68,38 +70,38 @@
"@types/email-templates": "^7.1.0",
"@types/express": "^4.17.8",
"@types/express-session": "^1.17.0",
- "@types/lodash": "^4.14.161",
- "@types/node": "^14.10.0",
+ "@types/lodash": "^4.14.165",
+ "@types/node": "^14.14.10",
"@types/node-schedule": "^1.3.1",
"@types/nodemailer": "^6.4.0",
- "@types/react": "^16.9.49",
- "@types/react-dom": "^16.9.8",
+ "@types/react": "^17.0.0",
+ "@types/react-dom": "^17.0.0",
"@types/react-toast-notifications": "^2.4.0",
"@types/react-transition-group": "^4.4.0",
"@types/swagger-ui-express": "^4.1.2",
"@types/uuid": "^8.3.0",
- "@types/xml2js": "^0.4.5",
+ "@types/xml2js": "^0.4.7",
"@types/yamljs": "^0.2.31",
- "@types/yup": "^0.29.9",
- "@typescript-eslint/eslint-plugin": "^4.0.0",
- "@typescript-eslint/parser": "^3.10.1",
+ "@types/yup": "^0.29.10",
+ "@typescript-eslint/eslint-plugin": "^4.9.1",
+ "@typescript-eslint/parser": "^4.9.1",
"autoprefixer": "^9",
"babel-plugin-react-intl": "^8.2.2",
"babel-plugin-react-intl-auto": "^3.3.0",
"commitizen": "^4.2.1",
"copyfiles": "^2.4.0",
"cz-conventional-changelog": "^3.3.0",
- "eslint": "^7.10.0",
- "eslint-config-prettier": "^6.11.0",
- "eslint-plugin-formatjs": "^2.7.10",
- "eslint-plugin-jsx-a11y": "^6.3.1",
- "eslint-plugin-prettier": "^3.1.4",
- "eslint-plugin-react": "^7.20.6",
- "eslint-plugin-react-hooks": "^4.1.2",
+ "eslint": "^7.15.0",
+ "eslint-config-prettier": "^7.0.0",
+ "eslint-plugin-formatjs": "^2.9.10",
+ "eslint-plugin-jsx-a11y": "^6.4.1",
+ "eslint-plugin-prettier": "^3.2.0",
+ "eslint-plugin-react": "^7.21.5",
+ "eslint-plugin-react-hooks": "^4.2.0",
"extract-react-intl-messages": "^4.1.1",
- "husky": "^4.3.0",
- "lint-staged": "^10.4.0",
- "nodemon": "^2.0.4",
+ "husky": "^4.3.5",
+ "lint-staged": "^10.5.3",
+ "nodemon": "^2.0.6",
"postcss": "^7",
"postcss-preset-env": "^6.7.0",
"prettier": "^2.1.2",
diff --git a/public/preview.png b/public/preview.png
new file mode 100644
index 00000000..7d90433e
Binary files /dev/null and b/public/preview.png differ
diff --git a/server/api/themoviedb.ts b/server/api/themoviedb.ts
index 2aad437c..4260cdfc 100644
--- a/server/api/themoviedb.ts
+++ b/server/api/themoviedb.ts
@@ -679,9 +679,10 @@ class TheMovieDb {
public getMovieTrending = async ({
page = 1,
timeWindow = 'day',
- }: { page?: number; timeWindow?: 'day' | 'week' } = {}): Promise<
- TmdbSearchMovieResponse
- > => {
+ }: {
+ page?: number;
+ timeWindow?: 'day' | 'week';
+ } = {}): Promise| - {intl.formatMessage(messages.jobname)} - | -- {intl.formatMessage(messages.nextexecution)} - | -- |
|---|---|---|
|
-
- {job.name}
-
- |
-
-
-
- |
- - - | -