# chrisbanes/tivi

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/chrisbanes-tivi).**

6,732 stars · 897 forks · Kotlin · apache-2.0 · archived

## Links

- GitHub: https://github.com/chrisbanes/tivi
- awesome-repositories: https://awesome-repositories.com/repository/chrisbanes-tivi.md

## Topics

`android-application` `jetpack-compose` `kotlin` `kotlin-coroutines` `kotlin-multiplatform-mobile` `trakt`

## Description

Tivi is a cross-platform application for discovering and tracking television shows, built with Kotlin Multiplatform and Compose Multiplatform to share its user interface across Android, iOS, and desktop platforms. The app follows the Model-View-Intent (MVI) architecture pattern, where user actions are modelled as sealed class intents that reduce into a single immutable state object, ensuring predictable and unidirectional data flow managed through Kotlin coroutines and StateFlow.

The application uses Hilt for compile-time dependency injection and SQLDelight for type-safe local data storage, combining remote API calls with offline caching through a repository pattern. Navigation is enforced at compile time using sealed class route definitions, and large lists of TV shows are loaded incrementally with the Paging library. The codebase is organized into a shared multiplatform module containing business logic, domain models, and network client code that compiles to Android, iOS, and JVM targets.

Tivi enables users to browse a catalog of TV shows, manage a personal watchlist with status tracking, and synchronize watch progress across all devices by connecting to a third-party service. The app supports tracking watched episodes and shows across multiple streaming services, with data syncing to keep viewing history consistent everywhere.

## Tags

### Business & Productivity Software

- [TV Show Trackers](https://awesome-repositories.com/f/business-productivity-software/tv-show-trackers.md) — Provides a cross-platform app for discovering, tracking, and syncing TV show watch progress across devices.

### Software Engineering & Architecture

- [Compose Multiplatform Implementations](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development/multiplatform-code-sharing/multiplatform-ui-libraries/compose-multiplatform-implementations.md) — Builds its user interface using Compose Multiplatform to share UI code across platforms.
- [MVI Patterns](https://awesome-repositories.com/f/software-engineering-architecture/architectural-patterns/mvi-patterns.md) — Follows the Model-View-Intent pattern with immutable state and unidirectional data flow.
- [Multiplatform Code Sharing](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development/multiplatform-code-sharing.md) — Shares business logic, domain models, and network client across Android, iOS, and JVM targets.
- [Compose Multiplatform UI Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development/multiplatform-code-sharing/multiplatform-ui-libraries/compose-multiplatform-ui-frameworks.md) — Shares the entire user interface across Android, iOS, and desktop using Compose Multiplatform.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Uses Hilt for compile-time dependency injection to wire object graphs.
- [Reactive State Management](https://awesome-repositories.com/f/software-engineering-architecture/reactive-state-management.md) — Exposes reactive state as StateFlow coroutines with lifecycle-aware collection.
- [Unidirectional Data Flow Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/unidirectional-data-flow-architectures.md) — Implements the MVI pattern with sealed class intents and immutable state objects for predictable UI updates.
- [Compile-Time Validators](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/dependency-graph-compilers/compile-time-validators.md) — Resolves dependency graphs entirely at compile time using Hilt annotations and Dagger modules.
- [Page Navigation Prefetching](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/frontend-rendering-loading/page-navigation-prefetching.md) — Loads large data lists in chunked pages with automatic prefetching and cancellation.
- [Paging Library Data Loading](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/frontend-rendering-loading/page-navigation-prefetching/paging-library-data-loading.md) — Loads large lists of TV shows incrementally using the Paging library with prefetching.

### Part of an Awesome List

- [Dependency Injection](https://awesome-repositories.com/f/awesome-lists/devtools/dependency-injection.md) — Wires object dependencies automatically using Hilt, a compile-time DI framework.
- [Dependency Injection Macros](https://awesome-repositories.com/f/awesome-lists/devtools/dependency-injection-macros.md) — Resolves dependency graphs entirely at compile time using Hilt annotations and Dagger modules.
- [Typed Route Navigators](https://awesome-repositories.com/f/awesome-lists/devtools/routing-and-navigation/typed-route-navigators.md) — Enforces compile-time type safety for navigation routes using sealed class definitions.

### Content Management & Publishing

- [Content Watchlists and Blocklists](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/content-architecture-modeling/content-organization-systems/media-content-managers/content-watchlists-and-blocklists.md) — Organizes shows into watchlist categories and links them to streaming services.
- [TV Show Watchlists](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/content-architecture-modeling/content-organization-systems/media-content-managers/content-watchlists-and-blocklists/tv-show-watchlists.md) — Logs watched episodes and manages a personal list of shows with status tracking.

### Data & Databases

- [Type-Safe Local Storage](https://awesome-repositories.com/f/data-databases/type-safe-data-abstractions/type-safe-local-storage.md) — Uses SQLDelight to generate type-safe Kotlin APIs for persistent local data storage.
- [SQLDelight Implementations](https://awesome-repositories.com/f/data-databases/type-safe-data-abstractions/type-safe-local-storage/sqldelight-implementations.md) — Uses SQLDelight for type-safe local data storage, caching API responses and enabling offline access.
- [Repository Patterns](https://awesome-repositories.com/f/data-databases/backend-data-access-layers/repository-patterns.md) — Abstracts data access through repository layers combining remote API calls with local caching.
- [Offline Caching Repositories](https://awesome-repositories.com/f/data-databases/backend-data-access-layers/repository-patterns/offline-caching-repositories.md) — Combines Retrofit network calls with SQLDelight local caching for offline data access.
- [Media Progress Syncs](https://awesome-repositories.com/f/data-databases/cross-device-state-synchronization/media-progress-syncs.md) — Automatically syncs watched show data and progress across Android, iOS, and desktop devices.
- [Viewing Progress Synchronizers](https://awesome-repositories.com/f/data-databases/data-synchronization-tools/viewing-progress-synchronizers.md) — Synchronizes media playback position and library status across multiple devices. ([source](https://cdn.jsdelivr.net/gh/chrisbanes/tivi@main/README.md))
- [Watch Progress Syncs](https://awesome-repositories.com/f/data-databases/data-synchronization/cross-device-synchronization-engines/cross-device-media-experiences/watch-progress-syncs.md) — Synchronizes watch progress and show data seamlessly between Android, iOS, and desktop devices.
- [Offline Caching](https://awesome-repositories.com/f/data-databases/offline-caching.md) — Combines Retrofit network calls with SQLDelight local caching for offline data access.
- [SQL-to-Language Generators](https://awesome-repositories.com/f/data-databases/sql-to-language-generators.md) — Generates type-safe Kotlin APIs from hand-written SQL statements using SQLDelight.

### Development Tools & Productivity

- [Media Watch Progress Syncs](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/user-data-syncing-utilities/media-watch-progress-syncs.md) — Pull and push viewing data from a third-party service to keep watched status consistent across devices. ([source](https://cdn.jsdelivr.net/gh/chrisbanes/tivi@main/README.md))

### Graphics & Multimedia

- [TV Show Catalogs](https://awesome-repositories.com/f/graphics-multimedia/media-category-browsing/tv-show-catalogs.md) — Provides a browsable catalog of TV shows for discovery and watchlist addition. ([source](https://cdn.jsdelivr.net/gh/chrisbanes/tivi@main/README.md))

### Mobile Development

- [TV Applications](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/tv-applications.md) — A cross-platform application for discovering and tracking television shows with synchronized progress.
- [TV Show Trackers](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/tv-applications/tv-show-trackers.md) — A cross-platform application for discovering and tracking TV shows with synchronized watch progress.
- [Watched Episode Loggers](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/tv-applications/watched-episode-loggers.md) — Tracks watched television series by connecting to a third-party service across platforms. ([source](https://cdn.jsdelivr.net/gh/chrisbanes/tivi@main/README.md))

### Programming Languages & Runtimes

- [StateFlow State Management](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/synchronization-primitives/channel-based-concurrency/fiber-based-schedulers/coroutines/stateflow-state-management.md) — Manages UI state reactively using Kotlin StateFlow with structured concurrency.

### User Interface & Experience

- [Cross-Platform UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/cross-platform-ui-frameworks.md) — Shares UI code across Android, iOS, and desktop using Compose Multiplatform. ([source](https://cdn.jsdelivr.net/gh/chrisbanes/tivi@main/README.md))

### Web Development

- [Sealed Intent Reducers](https://awesome-repositories.com/f/web-development/frontend-development-tools/state-data-management/state-logic-patterns/reducer-state-management/sealed-intent-reducers.md) — Models user actions as sealed class intents that reduce into a single immutable state object.
- [Coroutine Frameworks](https://awesome-repositories.com/f/web-development/server-side-frameworks/kotlin-frameworks/coroutine-frameworks.md) — Exposes reactive state as StateFlow coroutines with lifecycle-aware collection.
