- JavaScript 58.8%
- HTML 20.8%
- TypeScript 10%
- Java 5.4%
- CSS 4.8%
- Other 0.2%
| .agents/rules | ||
| .claude/rules | ||
| .clinerules | ||
| .github | ||
| .idea | ||
| .vscode | ||
| app | ||
| docs | ||
| electron | ||
| gradle/wrapper | ||
| graphify-out | ||
| keystore | ||
| scripts | ||
| src | ||
| tools | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| build.gradle | ||
| CHANGELOGS.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| eslint.config.mjs | ||
| FIXLIST.md | ||
| GEMINI.md | ||
| GOVERNANCE.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| Jenkinsfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| README_ARCHITECTURE.md | ||
| settings.gradle | ||
| TRACKER.md | ||
| tsconfig.json | ||
| vitest.config.mts | ||
| WEB_FEASIBILITY_REPORT.md | ||
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

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.