Pelagica is an alternative web frontend for Jellyfin built using React. It aims to provide a fast, modern, and customizable user experience for browsing and watching your media library.
- Customizable Sections: Tailor your homepage with sections like "Continue Watching", "Recently Added", or completely custom queries.
- Media Bars: Add custom media bars to feature specific content.
- Search: Quickly find media across your library from anywhere using
Cmd+K/Ctrl+K. - Video Player: Integrated video player for movies and TV shows.
- Music Player: A music player that allows you to listen to your music albums or playlists while browsing your library.
- Responsive Design: Works seamlessly on both desktop and mobile devices.
- Theming: Light and dark mode support as well as custom themes
- Localization: Supports multiple languages through community contributions.
You can find a roadmap of planned features and improvements in the GitHub Projects.
If you want to suggest new features or report bugs, please use the GitHub Issues section.
- Streamystats: Get your streamystats recommendations directly on your home page.
- kefintweaks Watchlist: View and manage your kefintweaks watchlist within Pelagica.
|
|
|
|
Screenshots may include media artwork used for demonstration purposes only.
You can find a live demo of Pelagica at:
You can use the demo.jellyfin.org/stable server with the demo user to test, or use your own Jellyfin server if it is publicly accessible. If you are experiencing issues with the Jellyfin demo server, this is because of cors restrictions on that server.
For production use, it is highly recommended to self-host Pelagica using Docker or another method.
The easiest way to run Pelagica is using Docker. This provides a production-ready setup with nginx web server.
-
Create a directory for Pelagica:
mkdir -p pelagica && cd pelagica
-
Run the container:
docker run -d \ --name pelagica \ -p 8080:80 \ -v "$(pwd)/config:/config" \ --restart unless-stopped \ kartoffelchipss/pelagica:latestMake sure to replace
$(pwd)/configwith the actual path where your config files should be located (e.g./mnt/user/appdata/pelagica) -
Access Pelagica:
Open your browser to http://localhost:8080
# View logs
docker logs -f pelagica
# Stop the container
docker stop pelagica
# Start the container
docker start pelagica
# Update to latest version
docker pull kartoffelchipss/pelagica:latest
docker stop pelagica
docker rm pelagica
# Then run the docker run command again from Quick StartIf you prefer using docker-compose, create a docker-compose.yml file:
services:
pelagica:
image: kartoffelchipss/pelagica:latest
container_name: pelagica
ports:
- '8080:80'
volumes:
- /path/to/your/config:/config
restart: unless-stoppedReplace /path/to/your/config with the actual path where your config files should be located (e.g. /mnt/user/appdata/pelagica)
Then run: docker-compose up -d
If you want to build the Docker image from source instead of using prebuilt images:
# Clone the repository
git clone https://github.com/KartoffelChipss/pelagica.git
cd pelagica
# Build and start
docker-compose up -d --buildYou can find instructions on how to build and/or publish custom themes here.
Join the Pelagica community on Discord for support, discussions, and updates: https://discord.gg/yCe4unuVGQ
Pelagica supports multiple languages and depends on community contributions for translations. If you'd like to help translate Pelagica into your language, you can contribute via GitLocalize.
-
Switch to the frontend directory:
cd frontend -
Install dependencies:
pnpm install
-
Start development server:
pnpm dev
-
Access at: http://localhost:3000
-
Switch to the backend directory:
cd backend -
Start the server:
CONFIG_PATH="./config.json" go run main.go
You can also use the dev.sh script to start both frontend and backend with hot reloading.
Issues and pull requests are welcome. Please open an issue to discuss larger changes before submitting a PR.
You might be wondering about the name "Pelagica". Since I didn't want to call it the usual "*fin" or "jelly*" names, I looked for synonyms related to the sea. "Pelagic" refers to living in the deep ocean, which felt fitting for a Jellyfin frontend.
Pelagica’s design was inspired by the finetic Jellyfin frontend.
No code was used; this project is an independent implementation.
This project is a third-party frontend for Jellyfin and is not affiliated with the Jellyfin project.
Jellyfin is a media server designed to organize and stream legally obtained media. This project does not provide, host, or encourage access to pirated content.
The movie posters and images shown in the examples are not owned by me and are only used for demonstration purposes. All rights belong to their respective owners.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.




