Finetic.mp4
- Navigator: Interactive AI chat powered by Gemini for navigation
- Media Player: Feature-rich player with direct and transcoded playback, subtitle support, chapters, skip intro functionality
- Library Management: Browse and organize your movies, TV shows, and episodes
- Theme Support: Light and dark mode themes
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind v4, shadcn/ui, Framer Motion
- AI: Google Gemini 2.0 Flash with AI SDK
- State Management: Jotai for global state
- Node.js 18+
- A running Jellyfin server
- Google AI API key (for AI features)
-
Clone the repository:
git clone https://github.com/AyaanZaveri/finetic cd finetic
-
Install dependencies:
npm install # or yarn install # or bun install
-
Configure environment variables:
Create a
.env.local
file in the root directory and add your configuration:GOOGLE_GENERATIVE_AI_API_KEY=your_google_ai_api_key
-
Start the web development server:
npm run dev # or yarn dev # or bun dev
Open http://localhost:3000 to access the web app.
Build the web application:
npm run build
npm run start
The easiest way to run Finetic is using Docker Compose:
-
Clone the repository:
git clone https://github.com/AyaanZaveri/finetic.git cd finetic
-
Configure environment variables (optional):
cp .env.example .env.local # Edit .env.local and add your Google AI API key for AI features
-
Run with Docker Compose:
docker-compose up -d
The application will be available at http://localhost:3000
If you prefer to build and run manually:
-
Build the Docker image:
docker build -t finetic .
-
Run the container:
docker run -d \ --name finetic \ -p 3000:3000 \ -e GOOGLE_GENERATIVE_AI_API_KEY=your_api_key_here \ finetic
Variable | Description | Required |
---|---|---|
GOOGLE_GENERATIVE_AI_API_KEY |
Google AI API key for AI navigator features | No |
NODE_ENV |
Node.js environment (automatically set to production in Docker) | No |
- The Docker image uses Node.js 18 Alpine for optimal size and security
- The application runs as a non-root user for enhanced security
- Health checks are included to monitor container status
- The build uses multi-stage optimization to minimize the final image size
- Static files are properly served for optimal performance
To update to the latest version:
# With Docker Compose
docker-compose pull
docker-compose up -d
# Manual
docker pull finetic:latest
docker stop finetic
docker rm finetic
# Run command again with latest image
dev
- Start Next.js development server with Turbopackbuild
- Build the production applicationstart
- Start the production serverlint
- Run ESLint for code quality
- Server Configuration: On first launch, you'll be prompted to enter your Jellyfin server URL
- Authentication: Login with your Jellyfin credentials
- AI Features: The AI assistant will be available once you've configured your Google AI API key
- Press
β + K
to open the AI assistant - Ask questions like:
- "Play Inception"
- "Go to Breaking Bad"
- "Skip to the action scene"
- "Explain what's happening right now"
- "What's this movie about?"
The AI assistant has access to a comprehensive set of tools for media library interaction:
π Content Discovery & Search
searchMedia
- Search for movies, TV shows, or episodes by name or keywordgetPeople
- Search for people (directors, actors) related to media contentgetGenres
- Get list of all genres available in the library
πΊ Library Browse & Management
getMovies
- Get a list of recent movies from the librarygetTVShows
- Get a list of recent TV shows from the librarycontinueWatching
- Fetch list of media items currently being watched/continuedgetWatchlist
- Get user's watchlist or favorites (popular/highly-rated content)getMediaDetails
- Get detailed information about a specific movie or TV showgetSeasons
- Get seasons for a TV showgetEpisodes
- Get episodes for a TV show season
π¬ Playback & Navigation
navigateToMedia
- Navigate to a specific movie, TV show, or episode pageplayMedia
- Play a specific movie, TV show, or episode directly in the media player
π― Subtitle Analysis
skipToSubtitleContent
- Intelligently analyze subtitles and find the best timestamp based on user descriptions (doesn't require exact text matches)explainScene
- Analyze subtitles around current timestamp to explain what's happening in the sceneanalyzeMedia
- Analyze the entire movie/episode using subtitles to answer questions about plot, characters, themes, etc.
π App Controls
themeToggle
- Toggle or set the application theme between light, dark, or system mode
When media is actively playing, the AI can:
- Scene Navigation: "Skip to the part where they talk about love" or "Take me to the action sequence"
- Context Explanation: "What's happening in this scene?" or "Who is talking right now?"
- Content Analysis: "What is this movie about?" or "Summarize this episode"
- Uses semantic understanding to find scenes based on descriptions, not just exact text matches
The AI automatically expands common abbreviations and handles vague descriptions:
- "b99" β "Brooklyn Nine-Nine"
- "the movie with the blue people" β "Avatar"
- "the show about meth" β "Breaking Bad"
- "the wizard movie" β "Harry Potter"
Content Discovery:
- "Show me my continue watching list"
- "What genres are available?"
- "Find movies with Tom Hanks"
- "Show me recent sci-fi movies"
Navigation & Playback:
- "Go to Breaking Bad"
- "Play Inception"
- "Show me seasons of The Office"
Scene Navigation (during playback):
- "Skip to when they arrive at the destination"
- "Take me to the emotional conversation scene"
- "Jump to the plot twist"
Scene Analysis (during playback):
- "What's happening right now?"
- "Explain this scene"
- "What did I miss?"
- "Who are the main characters in this movie?"
App Control:
- "Toggle the theme"
- Click any media item to start playback
- Playback Options:
- Direct Play: Stream media files directly when supported by your browser
- Transcoding: Automatic transcoding for unsupported formats or network optimization
- The player automatically selects the best playback method based on your device and network conditions
- Skip Intro Button: Automatically detects and provides a skip button for TV show intros to jump directly to the main content
- Use keyboard shortcuts for control:
Space
- Play/Pauseβ/β
- Seek backward/forwardβ/β
- Volume controlF
- Toggle fullscreen
Please feel free to:
- Report bugs and issues
- Suggest new features
- Submit pull requests
- Improve documentation
If you find this project helpful, consider supporting its development:
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.