Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Ipmake/Nevu
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.9.4
Choose a base ref
...
head repository: Ipmake/Nevu
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Dec 22, 2024

  1. Copy the full SHA
    fdff0f4 View commit details
  2. Copy the full SHA
    1cbb979 View commit details

Commits on Dec 23, 2024

  1. Feat: ENV for tls verify

    Ipmake authored Dec 23, 2024
    Copy the full SHA
    35e8d7a View commit details
  2. Correct TLS env check

    Ipmake authored Dec 23, 2024
    Copy the full SHA
    5115022 View commit details
  3. Update README.md

    Ipmake authored Dec 23, 2024
    Copy the full SHA
    4dc05c7 View commit details

Commits on Dec 27, 2024

  1. Update README.md

    Ipmake authored Dec 27, 2024
    Copy the full SHA
    cb5dc93 View commit details

Commits on Dec 30, 2024

  1. Copy the full SHA
    eb1ac4f View commit details
  2. Copy the full SHA
    225bd7d View commit details
  3. Copy the full SHA
    d01e9ef View commit details
  4. Copy the full SHA
    5dddf0f View commit details

Commits on Jan 4, 2025

  1. Update README.md

    Ipmake authored Jan 4, 2025
    Copy the full SHA
    20f4ef7 View commit details

Commits on Jan 13, 2025

  1. Copy the full SHA
    aaa3691 View commit details

Commits on Jan 14, 2025

  1. Added preview docker image

    Ipmake authored Jan 14, 2025
    Copy the full SHA
    9a0bed2 View commit details
  2. Merge pull request #31 from Ipmake/ver/1.0.0

    Redesign, Watchlist and support for new plex features
    Ipmake authored Jan 14, 2025
    Copy the full SHA
    4cb14d7 View commit details
  3. Merge pull request #32 from Ipmake/main

    Added preview docker image
    Ipmake authored Jan 14, 2025
    Copy the full SHA
    862fec1 View commit details
  4. Copy the full SHA
    2370766 View commit details
  5. Copy the full SHA
    c9e32de View commit details
  6. Copy the full SHA
    9078e99 View commit details

Commits on Jan 15, 2025

  1. Copy the full SHA
    d5847a9 View commit details
  2. Copy the full SHA
    aae8ad3 View commit details
  3. Copy the full SHA
    a8a303b View commit details
  4. Copy the full SHA
    2f8d111 View commit details
  5. Copy the full SHA
    0a203bd View commit details
  6. Copy the full SHA
    fac7816 View commit details
  7. Copy the full SHA
    eb77203 View commit details
  8. Copy the full SHA
    134b644 View commit details
  9. Copy the full SHA
    6d9cde0 View commit details
  10. Copy the full SHA
    728b5b9 View commit details
  11. feat: Update README

    Ipmake committed Jan 15, 2025
    Copy the full SHA
    2474b8a View commit details

Commits on Jan 22, 2025

  1. Copy the full SHA
    a2fe703 View commit details
  2. Copy the full SHA
    6d65c8f View commit details
  3. Copy the full SHA
    23e632a View commit details

Commits on Jan 23, 2025

  1. Copy the full SHA
    2995195 View commit details
  2. Copy the full SHA
    9cda3f0 View commit details
  3. Copy the full SHA
    49d8169 View commit details
  4. Copy the full SHA
    ed9a483 View commit details
  5. Copy the full SHA
    3b0f48e View commit details
  6. Update FUNDING.yml

    Ipmake authored Jan 23, 2025
    Copy the full SHA
    3194759 View commit details
  7. Update FUNDING.yml

    Ipmake authored Jan 23, 2025
    Copy the full SHA
    c3a35e2 View commit details
  8. Merge pull request #33 from Ipmake/main

    Changed funding
    Ipmake authored Jan 23, 2025
    Copy the full SHA
    288261a View commit details
  9. Copy the full SHA
    4355f85 View commit details

Commits on Jan 25, 2025

  1. Copy the full SHA
    4467e00 View commit details

Commits on Jan 27, 2025

  1. Copy the full SHA
    1e74c85 View commit details
  2. Copy the full SHA
    30eab07 View commit details

Commits on Jan 28, 2025

  1. Copy the full SHA
    fff0d7e View commit details
  2. Copy the full SHA
    0f43249 View commit details
  3. feat: Add react-intersection-observer for lazy loading MovieItem comp…

    …onents in LibraryScreen
    Ipmake committed Jan 28, 2025
    Copy the full SHA
    0a3e866 View commit details
  4. Copy the full SHA
    e4566b7 View commit details
  5. feat: Implement sorting functionality in LibraryScreen with LibrarySo…

    …rtDropDown component
    Ipmake committed Jan 28, 2025
    Copy the full SHA
    f01d039 View commit details
  6. feat: Update search functionality to use searchParams for navigation …

    …and add Escape key handling for clearing search
    Ipmake committed Jan 28, 2025
    Copy the full SHA
    1043110 View commit details
Showing with 7,058 additions and 1,460 deletions.
  1. +2 −1 .dockerignore
  2. +2 −1 .github/FUNDING.yml
  3. +0 −27 .github/workflows/docker-image.yml
  4. +50 −0 .github/workflows/docker-latest.yml
  5. +50 −0 .github/workflows/docker-preview.yml
  6. +7 −17 Dockerfile
  7. +44 −16 README.md
  8. BIN assets/screenshot1.png
  9. BIN assets/screenshot2.png
  10. BIN assets/screenshot3.png
  11. +4 −0 backend/.gitignore
  12. +351 −1 backend/package-lock.json
  13. +5 −2 backend/package.json
  14. +21 −0 backend/prisma/schema.prisma
  15. +5 −0 backend/run.sh
  16. +14 −0 backend/src/common/plex.ts
  17. +167 −0 backend/src/common/sync.ts
  18. +207 −12 backend/src/index.ts
  19. +111 −0 backend/src/types.ts
  20. +0 −12 buildall.sh
  21. +125 −2 frontend/package-lock.json
  22. +7 −2 frontend/package.json
  23. BIN frontend/public/icon.png
  24. +2 −2 frontend/public/index.html
  25. BIN frontend/public/logo.png
  26. BIN frontend/public/logoBig.png
  27. +85 −7 frontend/src/App.tsx
  28. +3 −1 frontend/src/backendURL.ts
  29. +3 −0 frontend/src/common/NumberExtra.ts
  30. +507 −35 frontend/src/components/AppBar.tsx
  31. +61 −0 frontend/src/components/BigReader.tsx
  32. +13 −11 frontend/src/components/CenteredSpinner.tsx
  33. +297 −142 frontend/src/components/HeroDisplay.tsx
  34. +230 −0 frontend/src/components/LibraryScreen.tsx
  35. +71 −0 frontend/src/components/LibrarySortDropDown.tsx
  36. +600 −259 frontend/src/components/MetaScreen.tsx
  37. +536 −329 frontend/src/components/MovieItem.tsx
  38. +534 −0 frontend/src/components/MovieItemLegacy.tsx
  39. +118 −61 frontend/src/components/MovieItemSlider.tsx
  40. +337 −0 frontend/src/components/PerPlexedSync.tsx
  41. +302 −0 frontend/src/components/ToastManager.tsx
  42. +455 −0 frontend/src/components/WatchShowChildView.tsx
  43. +35 −30 frontend/src/index.tsx
  44. +217 −20 frontend/src/pages/Browse.tsx
  45. +31 −9 frontend/src/pages/Home.tsx
  46. +41 −21 frontend/src/pages/Library.tsx
  47. +57 −35 frontend/src/pages/Login.tsx
  48. +58 −36 frontend/src/pages/Search.tsx
  49. +158 −0 frontend/src/pages/Startup.tsx
  50. +118 −0 frontend/src/pages/Utility.tsx
  51. +77 −0 frontend/src/pages/WaitingRoom.tsx
  52. +377 −78 frontend/src/pages/Watch.tsx
  53. +0 −116 frontend/src/pages/browse/Movie.tsx
  54. +0 −111 frontend/src/pages/browse/Show.tsx
  55. +3 −2 frontend/src/plex/QuickFunctions.ts
  56. +200 −18 frontend/src/plex/index.ts
  57. +54 −36 frontend/src/plex/plex.d.ts
  58. +49 −0 frontend/src/plex/plextv.ts
  59. +15 −2 frontend/src/states/SessionState.ts
  60. +168 −0 frontend/src/states/SyncSessionState.ts
  61. +32 −0 frontend/src/states/WatchListCache.ts
  62. +42 −0 frontend/src/types.d.ts
  63. +0 −6 package-lock.json
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
**/node_modules
**/node_modules
/backend/data
3 changes: 2 additions & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# These are supported funding model platforms

github: # [Ipmake]
github: [Ipmake]
custom: ["https://g.ipmake.dev/perplexed"]
27 changes: 0 additions & 27 deletions .github/workflows/docker-image.yml

This file was deleted.

50 changes: 50 additions & 0 deletions .github/workflows/docker-latest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Publish Docker image

on:
workflow_dispatch:
release:
types: [published]

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '22'

- name: Install dependencies
run: npm install
working-directory: frontend

- name: Build frontend
run: npm run build
working-directory: frontend

- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Create builder instance
run: docker buildx create --name nevuBuilder --use

- name: Build and push the amd64 image
run: docker buildx build --platform linux/amd64 -t ipmake/nevu:latest-amd64 . --push

- name: Build and push the arm64 image
run: docker buildx build --platform linux/arm64 -t ipmake/nevu:latest-arm64 . --push

- name: Build and push multi-platform Docker image
run: docker buildx imagetools create --tag ipmake/nevu:latest ipmake/nevu:latest-amd64 ipmake/nevu:latest-arm64
50 changes: 50 additions & 0 deletions .github/workflows/docker-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Publish Preview Docker image

on:
push:
branches:
- dev

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '22'

- name: Install dependencies
run: npm install
working-directory: frontend

- name: Build frontend
run: npm run build
working-directory: frontend

- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Create builder instance
run: docker buildx create --name nevuBuilder --use

- name: Build and push the amd64 image
run: docker buildx build --platform linux/amd64 -t ipmake/nevu:preview-amd64 . --push

- name: Build and push the arm64 image
run: docker buildx build --platform linux/arm64 -t ipmake/nevu:preview-arm64 . --push

- name: Build and push multi-platform Docker image
run: docker buildx imagetools create --tag ipmake/nevu:preview ipmake/nevu:preview-amd64 ipmake/nevu:preview-arm64
24 changes: 7 additions & 17 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
FROM node:20-bookworm-slim as frontend_builder

WORKDIR /app

COPY frontend/package*.json ./

# Install the app dependencies
RUN npm install

COPY frontend .

RUN npm run build

# /// Runner ///

FROM node:20-bookworm-slim as runner
FROM node:22-bookworm-slim as runner

WORKDIR /app

COPY backend/* /app

RUN apt-get update -y && apt-get install -y openssl

RUN npm install
RUN npx prisma db push
RUN npx tsc
RUN chmod +x /app/run.sh

EXPOSE 3000
VOLUME /app/data

COPY --from=frontend_builder /app/build/ /app/www/
COPY frontend/build/ /app/www/

CMD ["node", "dist/index.js"]
60 changes: 44 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,73 @@
# PerPlexed
# NEVU for Plex
Fixing Plex's old and simple UI.

[**Docker Hub**](https://hub.docker.com/r/ipmake/perplexed )
**PerPlexed is now Nevu!**

![PerPlexed](assets/screenshot1.png)
[**Docker Hub**](https://hub.docker.com/r/ipmake/nevu)

*Click image for video*
[![Nevu1](assets/screenshot1.png)](https://www.youtube.com/watch?v=PuTOw3Wg9oY)
![Nevu2](assets/screenshot2.png)


## Description

PerPlexed is a complete redesign of Plex's UI using the plex media server's API. It comes with its own web server. As the keen eye may notice, the UI is heavily inspired by Netflix's UI. It is currently only developed for desktops and laptops. It is not optimized for mobile or TV use.
Nevu is a complete redesign of Plex's UI using the Plex media server's API. It comes with its own web server. As the keen eye may notice, the UI is heavily inspired by Netflix's UI. It is currently only developed for desktops and laptops. It is not optimized for mobile or TV use.

PerPlexed currently supports Movie and TV Show libraries. You can also play media via the interface.
Nevu currently supports Movie and TV Show libraries. You can also play media via the interface.

It is currently not possible to edit media metadata or switch between different Plex servers. The "+" and Star buttons on the info pages for shows and movies are placeholders are currently not functional.
It is currently not possible to edit media metadata or switch between different Plex servers. The "+" and Star buttons on the info pages for shows and movies are placeholders and are currently not functional.

Mind that this project is still in development and may be unstable.


## Features
- Modern UI
- Seamless Plex integration
- Netflix-like UI
- Play media
- Browse libraries
- Search for media
- Watch Together (Nevu Sync)
- Get Recommendations
- Simple and easy to use
- Pro-User features (like special shortcuts etc.)

## Installation

### Docker

The easiest way to run PerPlexed is to use Docker. You can use the following command to run PerPlexed in a Docker container:
The easiest way to run Nevu is to use Docker. You can use the following command to run Nevu in a Docker container:

```bash
docker run --name perplexed -p 3000:3000 -e PLEX_SERVER=http://your-plex-server:32400 ipmake/perplexed
docker run --name nevu -p 3000:3000 -e PLEX_SERVER=http://your-plex-server:32400 ipmake/nevu
```

#### Environment Variables
| Name | Type | Required | Description |
|----------------|------------|----------|---------------------------------------------------|
| PLEX_SERVER | string | Yes | The url to your plex server starting with http |
| DISABLE_PROXY | true/false | No | Disable the PerPlexed proxy (Not Recommended) |
| Name | Type | Required | Description |
|------------------------|------------|----------|-----------------------------------------------------------------------------|
| PLEX_SERVER | string | Yes | The URL of the Plex server that the frontend will connect to |
| PROXY_PLEX_SERVER | string | No | The URL of the Plex server to proxy requests to |
| DISABLE_PROXY | true/false | No | If set to true, the proxy will be disabled and all requests go directly to the Plex server from the frontend (NOT RECOMMENDED) |
| DISABLE_TLS_VERIFY | true/false | No | If set to true, the proxy will not check any https ssl certificates |
| DISABLE_NEVU_SYNC | true/false | No | If set to true, Nevu sync (watch together) will be disabled |
| DISABLE_REQUEST_LOGGING| true/false | No | If set to true, the server will not log any requests |



## Contributing
Pull requests are welcome for any feature or bug fix. For major changes, please open an issue first to discuss what you would like to change.
Pull requests are welcome for any feature or a bug fix. For major changes, please open an issue first to discuss what you would like to change.

## Development

We use multi stage build with docker. Simply run following commands.
To develop you need 2 terminals for the front and the backend of Nevu

```bash
docker build -t perplexed .
docker run --name perplexed -p 3000:3000 -e PLEX_SERVER=http://your-plex-server:32400 perplexed
# Terminal 1
cd frontend
npm start

# Terminal 2
cd backend
PLEX_SERVER=http://plex-server:32400 npm start
```
Binary file modified assets/screenshot1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/screenshot2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/screenshot3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
# Keep environment variables out of version control
.env
/data
Loading