Skip to content

mensadilabs/Immich-Gallery

Repository files navigation

Build Status Platform Language

Immich Gallery for Apple TV

A native Apple TV app for browsing your self-hosted Immich photo library with a beautiful, TV-optimized interface.

Features

  • πŸ–ΌοΈ Photo Grid View: Browse all your photos in a responsive grid layout with infinite scrolling
  • πŸ‘₯ People Recognition: View and browse photos by people detected in your library
  • πŸ“ Album Support: View and navigate through your Immich albums
  • 🏷️ Tag Support with animated thubnails: Browse photos by tags (optional, configurable)
  • 🎬 Slideshow Mode: Full-screen slideshow with optional clock overlay
  • πŸ‘€ Multi-User Support: Multiple user accounts with easy switching
  • πŸ“Š EXIF Data: View detailed photo metadata including camera settings and location
  • πŸ”’ Privacy First: Self-hosted solution with secure credential storage, no data sent to third parties

Buy Me A Coffee

Simulator Screenshot - Apple TV 4K (3rd generation) - 2025-08-11 at 18 23 16 image
Untitled720p.mov
image image

Full screen view with people

Album tab

image Simulator Screenshot - Apple TV 4K (3rd generation) - 2025-07-29 at 16 59 04 Simulator Screenshot - Apple TV 4K (3rd generation) - 2025-07-29 at 17 00 05

Requirements

  • Apple TV (4th generation or later)
  • tvOS 15.0+
  • Immich server running and accessible
  • Network connectivity between Apple TV and Immich server

Quick Start

  1. Launch the app - You'll be prompted to sign in to your Immich server
  2. Enter server details - Server URL (e.g., https://your-immich-server.com), email, and password
  3. Browse your photos - Navigate using the Apple TV remote or Siri Remote

Technical Details

Architecture

Immich Gallery/
β”œβ”€β”€ Models/
β”‚   └── ImmichModels.swift          # Data models for Immich API responses
β”œβ”€β”€ Services/
β”‚   β”œβ”€β”€ AuthenticationService.swift # User authentication and session management
β”‚   β”œβ”€β”€ NetworkService.swift        # Core HTTP networking layer
β”‚   β”œβ”€β”€ AssetService.swift          # Photo/video asset management
β”‚   β”œβ”€β”€ AlbumService.swift          # Album data handling
β”‚   β”œβ”€β”€ PeopleService.swift         # People recognition integration
β”‚   β”œβ”€β”€ TagService.swift            # Tag-based photo organization
β”‚   └── ThumbnailCache.swift        # Efficient image caching system
β”œβ”€β”€ Views/
β”‚   β”œβ”€β”€ AssetGridView.swift         # Main photo grid interface
β”‚   β”œβ”€β”€ FullScreenImageView.swift   # Full-screen photo viewer
β”‚   β”œβ”€β”€ SlideshowView.swift         # Slideshow functionality
β”‚   └── Settings/                   # Configuration interfaces
β”œβ”€β”€ Extensions/
β”‚   └── DateFormatter+Extensions.swift
└── ContentView.swift               # Main app coordinator

Technology Stack

  • SwiftUI: Modern declarative UI framework
  • Async/Await: Modern Swift concurrency for network operations
  • URLSession: HTTP networking with custom authentication
  • UserDefaults: Secure credential storage with encryption
  • Core Image: Image processing and thumbnail generation
  • AVKit: Video playback support

Network & API Integration

  • Immich REST API: Full integration with Immich server endpoints
  • Authentication: Bearer token-based authentication with automatic refresh
  • Caching Strategy: Multi-layer caching for thumbnails and metadata
  • Error Handling: Comprehensive error boundaries and retry mechanisms

Performance Optimizations

  • Lazy Loading: Photos loaded on-demand as user scrolls
  • Thumbnail Caching: Persistent cache with configurable size limits
  • Memory Management: Efficient image loading with automatic cleanup
  • Background Processing: Non-blocking API calls for smooth UI

Security Features

  • Credential Encryption: Secure storage of server credentials
  • HTTPS Support: Encrypted communication with Immich server
  • Token Validation: Automatic token refresh and validation
  • No Telemetry: No data collection or external service communication

Configuration Options

  • Default Tab: Customizable startup tab (Photos, Albums, People, Tags)
  • Slideshow Settings: Configurable timing and overlay options
  • Cache Management: User-controlled cache size and cleanup
  • Multi-User: Support for multiple Immich accounts

Development

Building from Source

  1. Clone the repository
  2. Open Immich Gallery.xcodeproj in Xcode
  3. Select Apple TV target device
  4. Build and run

Dependencies

This project uses only system frameworks and has no external dependencies.

Troubleshooting

Authentication Issues

  • Verify server URL includes protocol (http:// or https://)
  • Ensure Immich server is accessible from Apple TV network
  • Check firewall settings and port configuration

Performance Issues

  • Monitor cache usage in Settings > Cache Management
  • Clear cached data if storage is full
  • Ensure stable network connection for optimal loading

Stats

Alt

Star History Chart

About

The most feature rich Apple TV client for Immich.

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Languages