A native tvOS client for Jellyfin media servers
Features • Requirements • Installation • Development • Contributing
- Native SwiftUI interface designed for Apple TV
- Browse and stream your Jellyfin media library
- Support for movies, TV shows, and YouTube-style content
- Continue watching with playback progress sync
- Top Shelf integration for quick access to recent content
- Secure credential storage using Keychain
- tvOS 17.0+
- Jellyfin server (local or remote)
- Xcode 15.0+ (for development)
-
Clone the repository:
git clone https://github.com/mondominator/sashimi.git cd sashimi -
Run the setup script:
./scripts/setup.sh
-
Open
Sashimi.xcodeprojin Xcode -
Select your development team in Signing & Capabilities
-
Build and run on Apple TV Simulator or device
- Nuke - Image loading and caching
Sashimi/
├── App/ # App entry point
├── Services/ # API client, session management
├── ViewModels/ # MVVM view models
├── Views/ # SwiftUI views
│ ├── Home/ # Home screen
│ ├── Auth/ # Login/server connection
│ ├── Library/ # Media library browsing
│ ├── Detail/ # Media detail views
│ ├── Player/ # Video player
│ └── Components/ # Reusable UI components
├── Models/ # Data models
└── Resources/ # Assets
# Generate Xcode project (requires XcodeGen)
xcodegen generate
# Build with xcodebuild
xcodebuild -project Sashimi.xcodeproj -scheme Sashimi -destination 'platform=tvOS Simulator,name=Apple TV'
# Build with Swift Package Manager
swift buildThis project uses git hooks for code quality. After cloning, run:
git config core.hooksPath .githooksOr use the setup script which configures this automatically.
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Commit using conventional commits:
git commit -m "feat: add new feature" - Push to your fork:
git push origin feat/my-feature - Open a Pull Request
This project uses Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changesrefactor:- Code refactoringtest:- Test updateschore:- Maintenance tasks
This project is licensed under the MIT License - see the LICENSE file for details.
