Skip to content

Clean Architecture Implementation

The src/ directory implements a Clean Architecture model decoupled from platforms.

Dependency Rules & Layers

src/
├── core/              ← Primitives, typed errors, FP helpers (Result<T,E>, Option<T>)
├── domain/            ← Entities (Anime, Episode), repo interfaces, usecases
├── data/              ← Datasource interfaces/impls, caches, API repositories
├── presentation/      ← UI state, CDM Registry, route maps
└── di/                ← Container configuration

Flow Diagram

┌─────────────────────────────────────────┐
│              Presentation               │
│ (interceptor, appState, preact screens) │
└────────────────────┬────────────────────┘
                     │ calls

┌─────────────────────────────────────────┐
│                 Domain                  │
│       (usecases, entity mappings)       │
└────────────────────┬────────────────────┘
                     │ implements

┌─────────────────────────────────────────┐
│                  Data                   │
│ (repositories, Jikan, MiruroPipe, caches)│
└─────────────────────────────────────────┘

Legacy Modularization (m.js)

Legacy monolithic code resides in app/src/main/assets/view/modules/. It is dynamically bridged into clean TypeScript handlers via window.AnimeTV.*.

Module Index Map

IDFileRole
0000-config.jsConstants and OS flag detection
0101-anilist-cache.jsResponse cache store
0202-jikan-fallback.jsJikan API fallback metadata query
0303-source-domain.jsSource URLs configuration
0404-miruro.jsMiruro provider bindings
0505-gojo.jsGojo video source parser
0606-kaas.jsKickassAnime provider
0707-wave.jsAniwave and Anix scraping provider
0808-network.jsAjax network helpers
0909-utils.jsString formatting, list formatting utilities
1010-animeflix.jsIntegration interface
1111-input.jsRemote control spatial logic
1212-api.jsFacade controller interfacing with webview
1313-list.jsLocal watch history & bookmarks storage
1414-vtt.jsWebVTT subtitle formatting parser
1515-banner-cache.jsSlideshow backdrop banner image storage
1616-logo-fetcher.jsAnime logo assets fetch utility
1717-rating.jsUser rating system bindings
1818-playback.jsVideo engine integration wrapper
1919-app-shell.jsGlobal navigation controller
2020-anime-source.jsScrapers and metadata mappings for anime
2121-movies-source.jsTMDB API mappings & movie playback logic
2222-list-order.jsSorting algorithm helpers
2323-touch.jsTouch gestures integration for phones
2424-init.jsEntry initialization routine
2525-aniskip.jsIntro/outro skipping engine
2626-chromecast.jsCasting module bridge

Build Scripts

CommandGoal
npm run build:allCompiles clean architecture layer and packages Preact webview code
npm run build:webviewConcat + minify files to generated m.js using esbuild
npm run build:webview:debugConcat files to m.js without minification

Released under the Apache-2.0 License.