No description
  • JavaScript 58.8%
  • HTML 20.8%
  • TypeScript 10%
  • Java 5.4%
  • CSS 4.8%
  • Other 0.2%
Find a file
2026-10-08 17:08:21 +05:30
.agents/rules feat(agents): add caveman and ponytail rule definitions 2026-09-06 16:58:31 +05:30
.claude/rules docs: add Claude and Antigravity rule configurations 2026-08-28 20:18:38 +05:30
.clinerules Merge branch 'feat/trakt-fixes' into feat/trakt-auto-source-integration 2026-08-29 14:23:45 +05:30
.github feat: add Copilot instructions for build, test, and architecture guidelines 2026-07-06 14:25:57 +05:30
.idea fix(player): safe cast for MediaCodec tunneling setup 2026-07-25 22:41:31 +05:30
.vscode docs: update handover and stream test matrix documents for merge 2026-07-24 17:55:16 +05:30
app chore: bump version to 5.15.3 2026-10-08 16:51:15 +05:30
docs fix(miruro): migrate Android to v1 REST API and fix domain benchmarks 2026-10-05 21:33:52 +05:30
electron chore(build): update build timestamp for 5.15.3 2026-10-08 17:08:21 +05:30
gradle/wrapper New home paging list 2024-03-21 05:32:29 +07:00
graphify-out docs: add knowledge graph and update agent guidelines for graphify 2026-09-20 15:09:39 +05:30
keystore Japan Title Settings & Cache 2024-02-11 23:41:01 +07:00
scripts feat(build): add automated Windows ARM64 installer and portable zip pipeline 2026-08-29 15:15:30 +05:30
src fix(miruro): migrate Android to v1 REST API and fix domain benchmarks 2026-10-05 21:33:52 +05:30
tools chore: bump version to 5.15.3 2026-10-08 16:51:15 +05:30
.editorconfig feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
.gitattributes Auto line ending git 2023-06-08 23:03:17 +07:00
.gitignore Merge branch 'feat/trakt-fixes' into feat/trakt-auto-source-integration 2026-08-29 14:23:45 +05:30
.prettierrc feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
AGENTS.md docs: add knowledge graph and update agent guidelines for graphify 2026-09-20 15:09:39 +05:30
build.gradle Fix hianime stream 2024-12-14 17:02:17 +07:00
CHANGELOGS.md chore: bump version to 5.15.3 2026-10-08 16:51:15 +05:30
CLAUDE.md docs: add knowledge graph and update agent guidelines for graphify 2026-09-20 15:09:39 +05:30
CONTRIBUTING.md docs: add CONTRIBUTING, GOVERNANCE, and PR Guard workflow for community handover 2026-05-26 04:44:53 +08:00
eslint.config.mjs feat: add core types (Result, Option, pipe) and domain layer 2026-05-21 06:46:45 +08:00
FIXLIST.md refactor(arch): resolve all 13 architecture review findings 2026-05-21 09:07:24 +08:00
GEMINI.md docs: add knowledge graph and update agent guidelines for graphify 2026-09-20 15:09:39 +05:30
GOVERNANCE.md docs: add CONTRIBUTING, GOVERNANCE, and PR Guard workflow for community handover 2026-05-26 04:44:53 +08:00
gradle.properties fix(build): remove hardcoded Linux Java path from gradle.properties 2026-08-29 13:35:49 +05:30
gradlew fix(anime): mark anikoto source dead and update default provider 2026-08-03 12:14:51 +00:00
gradlew.bat Initial commit 2023-05-30 01:47:42 +07:00
Jenkinsfile refactor(jenkins): update build steps to use shell commands and clean up commented code 2026-09-20 18:00:06 +05:30
LICENSE add LICENSE 2023-09-03 00:52:18 +07:00
package-lock.json chore: bump version to 5.15.3 2026-10-08 16:51:15 +05:30
package.json chore: bump version to 5.15.3 2026-10-08 16:51:15 +05:30
README.md docs: add comprehensive system architecture and navigation portal 2026-09-20 12:45:57 +05:30
README_ARCHITECTURE.md docs: add comprehensive system architecture and navigation portal 2026-09-20 12:45:57 +05:30
settings.gradle Initial commit 2023-05-30 01:47:42 +07:00
TRACKER.md fix: simplify search screen D-pad navigation order 2026-06-06 03:31:51 +08:00
tsconfig.json wip: clean architecture refactoring in progress 2026-05-22 02:49:06 +08:00
vitest.config.mts fix: remove "type": "module" to restore Electron CJS compatibility 2026-05-21 07:47:06 +08:00
WEB_FEASIBILITY_REPORT.md docs: add architecture brief and web feasibility report 2026-07-28 14:05:01 +05:30

AnimeTV for Android TV & Google TV

AnimeTV is Android TV application for watching your favorite anime series and movies on your Android TV, It also runs on non-TV Android devices (Phones and Tablets) with some UI limitations.

Source data is from one anime streaming website and I don't have any affiliation with it, and it may break on site updates. Take a look at source code for more info

AnimeTV

Donation & More Information

Features

  • NEW - UI Interface with Trailer Video
  • NEW - 20+ Anime, Movie & TV Source Providers
  • NEW - List reorder / management
  • NEW - Auto Update App, Over-the-Air (OTA) JS bundle updates & in-app nightly builds
  • NEW - Airing Schedule & Discovery Hub
  • NEW - MAL, AniList & Trakt Integration
  • NEW - DNS over HTTPS and Multiple HTTP Client selection (OkHttp, Cronet)
  • NEW - Mirror Stream Server & Hot-swappable Provider Plugins
  • NEW - Soft-subtitle & Auto Translate to 134 Languages (Only for supported contents)
  • NEW - Settings panel
  • NEW - Change Theme Color & Animation performance
  • NEW - Soft-subtitle Text Style Configuration
  • NEW - Playback Speed (0.5x - 3.00x)
  • NEW - Include Non-Japan Anime Settings
  • Search and Advance Search with Genre, Format, Year & Anime Type filters
  • Preact-based Search Island with Virtual Keyboard and Spatial Navigation
  • Auto Next episode
  • Auto Skip Intro & Outro (AniSkip & TheIntroDB integration)
  • Auto Skip Filler Episode
  • Genre & Type Tags
  • Video display style ( Centered, Fit, Scaled ) for non widescreen videos.
  • Easy to navigate with Android TV Remote / D-pad
  • Home Anime List
    • Hot
    • Recently Updated
    • Dub Update
    • Top Anime
    • Trending Episodes
    • Random Anime
    • Watchlist Anime – You can set anime as favorite to watch
    • Watch History – All anime has been watched before with last timestamp
  • List of episodes and seasons for show
  • Recommendation anime for current show
  • Support for Android TV / Google TV home list and PlayNext
  • All Watchlist & History is saved locally – I don’t have any server to save your watch & history 🤣 So don’t worry.

Architecture (Clean Architecture — TypeScript)

The new src/ directory implements a Clean Architecture refactor of the core logic. It sits alongside the legacy code in electron/src/ and app/src/main/assets/view/ and will progressively replace it.

For a beginner-friendly explanation of how the whole project fits together, including Android APK builds, Electron desktop builds, and contribution workflow, see docs/STUDENT_PROJECT_GUIDE.md.

src/
├── core/              ← Shared primitives (no dependencies)
│   ├── types/         Result<T,E>, Option<T> — typed error handling
│   ├── errors/        AppError hierarchy (Stream, Auth, Data, Config, Validation)
│   └── utils/         pipe(), compose(), pipeAsync() — FP composition
│
├── domain/            ← Business rules (depends only on core)
│   ├── entities/      Anime, Episode, StreamSource, AuthToken
│   ├── repositories/  Port interfaces (AnimeRepository, AuthRepository)
│   └── usecases/      GetStreamSources, GetEpisodes, SearchAnime, Authenticate
│
├── data/              ← Infrastructure adapters (depends on domain + core)
│   ├── network/       HttpClient interface + ElectronHttpClient implementation
│   ├── datasources/   MiruroPipe, ServerConfig, OneAnime typed interfaces + impls
│   └── repositories/  AnimeRepositoryImpl (DTO→Entity mapping, provider fallback)
│
├── presentation/      ← UI/Controller layer (depends on domain + data)
│   ├── state/         Immutable AppState, reducer, minimal store (Redux-like)
│   └── interceptor/   CDN Registry, declarative Request Router
│
└── di/                ← Dependency injection (wires everything)
    └── container.ts   Pure-function DI — no decorators or reflection

Key Design Decisions

Decision Rationale
Result<T, E> instead of exceptions Forces callers to handle errors; no uncaught crashes
Immutable entities (readonly everywhere) Prevents accidental mutation bugs
Repository port interfaces Domain doesn't know about HTTP, Electron, or any CDN
CDN Registry (single source of truth) Previously duplicated 3× across interceptor.js
Declarative route table Each route is testable in isolation; no 600-line if/else
Pure-function DI container No decorators/reflection — just functions calling functions

Running the new layer

# Type-check
npx tsc --noEmit

# Run tests (71 tests)
npx vitest run

# Lint + format
npx eslint src/
npx prettier --check src/

Open Source

Source code is available at github ( https://github.com/AnimeTV-Fork/AnimeTV ). Release of source code may make source website prevent this apps to run, but hope it work fine for long, and you will help me update it when it break 😂.

And Please Contribute your bugfixes, reports & suggestions for next better update. If you find it useful, donation is welcome.

WebView Based?

Yes, it was webview based application. UI and Data Fetch Method is using webview, because I don't have access to source website database, I just load the web in headless webview and fetch site data info with javascript injection, because it's not possible to use only http client to get data.

Almost all data need javascript to make it available (It's not pure HTML that can easily parsed from text). The site also use QUIC rather than HTTP1X, so I need to include CronetEngine to make it works.

But the good news is AnimeTV will block any analytics and ads domain (dns) when requesting & fetching data. All data like watchlist & watch history also stored local in localStorage.

DISCLAIMER

  • AnimeTV only scrapes links from various websites and makes it easier for users to find anime.

  • AnimeTV or any of its developer doesn't host any of the contents found inside the app. All images and anime information found in the app are taken from various public APIs.

  • All anime found in AnimeTV are taken from various 3rd party anime hosting websites.

  • AnimeTV or it's owners aren't liable for any misuse of any of the contents found inside or outside of the app and cannot be held accountable for the distribution of any of the contents found inside the app.

  • By using AnimeTV, you comply to the fact that the developer of the app is not responsible for any of the contents found in the app; nonetheless they may or may not be from their legitimate sources.

  • If the internet infringement issues are involved, please contact the source website. The developer does not assume any legal responsibility.

License

Copyright 2026 AnimeTV Community

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.