sample-2.mp4
APERTÚRE is a clean, modern Jellyfin client built with Next.js — designed for speed, simplicity, and elegance.
It builds upon the solid foundation of Finetic while introducing extended functionality and removing unnecessary complexity.
Join Discord Community - Discord Invite
Special Thanks to @AyaanZaveri, this is based on his work on finetic, but I am building it upon my personal preferences.
- Rich Media Experience – Native support for Video Backdrops, Theme Songs, and Trickplay thumbnails.
- Smart Connectivity – Quick Connect login support and intelligent Direct Play/Transcoding selection.
- Advanced Library Support – Integrated support for Collections (Box Sets) and Live TV (WIP).
- Theming – Multiple theme variations including "Cinematic Theatre Black".
- Redesigned Playback Engine – A seamless, rebuilt playback subsystem aligned with Jellyfin best practices for reliable and smooth streaming.
- Hero Media Bar – A new, visually striking "Hero" section at the top of the interface to showcase your highlighted content.
- Smart Episodic Features – Native support for Intro and Outro skipping to make binge-watching effortless (requires the Intro Skipper plugin on your server).
- Mini Player – Keep watching your content while browsing the rest of your library with the new Picture-in-Picture mode.
Better Connectivity – Added Local Network Discovery and saved server preferences to make connecting (and staying connected) easier.Note: Removed this due to inaccuracy- Refined Startup – A proper Splash Screen now handles initialization, ensuring the app launches smoothly and efficiently every time.
- Seerr Integration - Built-in support to integrate Jellyseerr or Overseerr, Once connected, requests can be made directly on the discover page or using the existing search component.
- Frontend: Next.js, TypeScript
- Styling: Tailwind v4, shadcn/ui, Framer Motion
- State Management: Jotai
- Media Backend: Jellyfin Server API, Seerr OpenAPI
DEFAULT_SERVER_URL=your_server_urlDocker is the recommended way to run the app. The Docker image is directly available on Docker Hub at akhilmulpuri/aperture-web.
Using Docker Compose (docker-compose.yml)
services:
aperture:
image: akhilmulpuri/aperture-web:latest
ports:
- "3000:3000"
restart: unless-stoppeddocker-compose up -dUsing Docker Run
docker run -d -p 3000:3000 --name aperture-web --restart unless-stopped akhilmulpuri/aperture-web:latest- Install dependencies
bun install
- Start the Next.js dev server
bun dev
- Visit
http://localhost:3000and sign in with your Jellyfin instance credentials.
Hot reloading is enabled by default, so UI changes are reflected immediately.
Create an optimized bundle served by any static host (Vercel, Netlify, S3, etc.):
bun build
bun preview # optional sanity checkThe generated assets live in dist/. Configure your host to fall back to index.html for SPA routing.
The hosted app at https://aperture.vercel.app runs over HTTPS. Modern browsers block requests from an HTTPS site to public HTTP endpoints for security reasons, which means remote servers such as http://23.x.x.x:8096 cannot be reached. To use Apertúre with a public server:
- Add HTTPS to your Jellyfin instance (Let's Encrypt, Caddy/NGINX reverse proxy, Cloudflare tunnel, etc.), or
- Run Apertúre locally (bun dev, Docker) over HTTP.
LAN/private IPs (192.168.x.x, 10.x.x.x, etc.) generally still work over HTTP because browsers treat them as “private network” resources, but for anything exposed to the internet you’ll need HTTPS.







