# vikrant-choudhary06/cutcrew architecture

> Architecture diagram of the GitHub repository vikrant-choudhary06/cutcrew, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vikrant-choudhary06/cutcrew
- Repository: https://github.com/vikrant-choudhary06/cutcrew

## Overview

CutCrew is a multi-platform movie, series, and anime streaming product. The main workflow is discover or search a title, inspect its details, start playback, and retain watch progress and a personal list. The backend also supports catalog and playback services plus an admin-managed Telegram-backed media archive. The graph preserves documented capabilities and sampled wiring; several route, player, and provider internals are unsampled, so those links are omitted or marked unverified.

Main entry points: [`frontend/src/App.jsx`](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/App.jsx) (Web app), [`backend/src/app.js`](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/app.js) (Backend API), [`frontend/src/components/LibraryContext.jsx`](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/components/LibraryContext.jsx) (Library state), [`backend/src/routes/adminStorage.js`](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/routes/adminStorage.js) (Storage admin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Apps and browsing"]
  node_web["Web app<br/>[App.jsx]"]
  node_android["Android app<br/>[index.tsx]"]
  node_windows["Windows app<br/>[main.rs]"]
end

subgraph group_catalog["Discovery and catalog"]
  node_catalog["Catalog routes"]
  node_anime["Anime services<br/>[animeService.js]"]
  node_movie["Movie metadata<br/>[movieService.js]"]
  node_search["Search page<br/>[SearchPage.jsx]"]
  node_title["Title pages<br/>[TitlePage.jsx]"]
end

subgraph group_playback["Playback and providers"]
  node_watch["Watch pages<br/>[WatchPage.jsx]"]
  node_player["Video player<br/>[VideoPlayer.jsx]"]
  node_anime_provider["Anime provider<br/>[BaseProvider.ts]"]
  node_movie_provider["Movie providers"]
end

subgraph group_library["Accounts and library"]
  node_library_ui["Library state<br/>[LibraryContext.jsx]"]
  node_account["Account routes<br/>[account.js]"]
end

subgraph group_operations["Backend and storage"]
  node_api["Backend API<br/>[app.js]"]
  node_archive_api["Storage admin<br/>[adminStorage.js]"]
  node_storage_config["Storage settings<br/>[videoStorage.js]"]
  node_storage_repo["Video index"]
  node_database[("PostgreSQL<br/>[db.js]")]
  node_telegram_adapter["Telegram storage"]
  node_telegram_service["Telegram client<br/>[telegramStorage.js]"]
  node_maintenance["Storage maintenance"]
  node_auto_archive["Auto archive<br/>[autoArchive.js]"]
end

node_viewer(("Viewer"))

node_viewer -->|"browses"| node_web
node_viewer -->|"browses"| node_android
node_viewer -->|"uses"| node_windows
node_web -->|"opens"| node_search
node_web -->|"opens"| node_title
node_web -->|"opens"| node_watch
node_web -->|"provides"| node_library_ui
node_viewer -->|"discovers titles"| node_catalog
node_viewer -->|"starts playback"| node_watch
node_watch -.->|"renders"| node_player
node_viewer -->|"tracks progress"| node_library_ui
node_library_ui -.->|"syncs account data"| node_account
node_web -.->|"requests data"| node_api
node_android -.->|"requests data"| node_api
node_api -->|"mounts routes"| node_catalog
node_api -->|"tracks activity"| node_anime
node_api -.->|"dispatches playback"| node_movie_provider
node_api -.->|"dispatches anime playback"| node_anime_provider
node_archive_api -->|"reads configuration"| node_storage_config
node_archive_api -->|"queries assets"| node_storage_repo
node_storage_config -->|"reads settings"| node_telegram_service
node_storage_repo -->|"queries"| node_database
node_maintenance -->|"checks assets"| node_storage_repo
node_telegram_adapter -->|"calls storage API"| node_telegram_service
node_auto_archive -.->|"manages archive"| node_archive_api
node_viewer -->|"saves titles"| node_library_ui
node_viewer -->|"searches titles"| node_catalog

click node_web "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/App.jsx"
click node_android "https://github.com/vikrant-choudhary06/cutcrew/blob/main/android/src/app/(tabs)/index.tsx"
click node_windows "https://github.com/vikrant-choudhary06/cutcrew/blob/main/desktop/src-tauri/src/main.rs"
click node_api "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/app.js"
click node_catalog "https://github.com/vikrant-choudhary06/cutcrew/tree/main/backend/src/routes"
click node_anime "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/animeService.js"
click node_movie "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/movieService.js"
click node_search "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/SearchPage.jsx"
click node_title "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/TitlePage.jsx"
click node_library_ui "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/components/LibraryContext.jsx"
click node_account "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/routes/account.js"
click node_watch "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/WatchPage.jsx"
click node_player "https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/components/VideoPlayer.jsx"
click node_anime_provider "https://github.com/vikrant-choudhary06/cutcrew/blob/main/provider/anime/animeparadise/src/providers/BaseProvider.ts"
click node_movie_provider "https://github.com/vikrant-choudhary06/cutcrew/tree/main/provider/movie"
click node_archive_api "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/routes/adminStorage.js"
click node_storage_config "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/config/videoStorage.js"
click node_storage_repo "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/videoStorageRepository.js"
click node_database "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/config/db.js"
click node_telegram_adapter "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/videoStorageAdapter.js"
click node_telegram_service "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/telegramStorage.js"
click node_maintenance "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/storageMaintenance.js"
click node_auto_archive "https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/autoArchive.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web,node_android,node_windows,node_viewer toneBlue
class node_catalog,node_anime,node_movie,node_search,node_title toneAmber
class node_watch,node_player,node_anime_provider,node_movie_provider toneMint
class node_library_ui,node_account toneRose
class node_api,node_archive_api,node_storage_config,node_storage_repo,node_database,node_telegram_adapter,node_telegram_service,node_maintenance,node_auto_archive toneIndigo
```

## Components

### Apps and browsing

- [Web app](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Android app](https://github.com/vikrant-choudhary06/cutcrew/blob/main/android/src/app/(tabs)/index.tsx): `android/src/app/(tabs)/index.tsx`
- [Windows app](https://github.com/vikrant-choudhary06/cutcrew/blob/main/desktop/src-tauri/src/main.rs): `desktop/src-tauri/src/main.rs`

### Discovery and catalog

- [Catalog routes](https://github.com/vikrant-choudhary06/cutcrew/tree/main/backend/src/routes): `backend/src/routes`
- [Anime services](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/animeService.js): `backend/src/services/animeService.js`
- [Movie metadata](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/movieService.js): `backend/src/services/movieService.js`
- [Search page](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/SearchPage.jsx): `frontend/src/pages/SearchPage.jsx`
- [Title pages](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/TitlePage.jsx): `frontend/src/pages/TitlePage.jsx`

### Playback and providers

- [Watch pages](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/pages/WatchPage.jsx): `frontend/src/pages/WatchPage.jsx`
- [Video player](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/components/VideoPlayer.jsx): `frontend/src/components/VideoPlayer.jsx`
- [Anime provider](https://github.com/vikrant-choudhary06/cutcrew/blob/main/provider/anime/animeparadise/src/providers/BaseProvider.ts): `provider/anime/animeparadise/src/providers/BaseProvider.ts`
- [Movie providers](https://github.com/vikrant-choudhary06/cutcrew/tree/main/provider/movie): `provider/movie`

### Accounts and library

- [Library state](https://github.com/vikrant-choudhary06/cutcrew/blob/main/frontend/src/components/LibraryContext.jsx): `frontend/src/components/LibraryContext.jsx`
- [Account routes](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/routes/account.js): `backend/src/routes/account.js`

### Backend and storage

- [Backend API](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/app.js): `backend/src/app.js`
- [Storage admin](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/routes/adminStorage.js): `backend/src/routes/adminStorage.js`
- [Storage settings](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/config/videoStorage.js): `backend/src/config/videoStorage.js`
- [Video index](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/videoStorageRepository.js): `backend/src/services/videoStorageRepository.js`
- [PostgreSQL](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/config/db.js): `backend/src/config/db.js`
- [Telegram storage](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/videoStorageAdapter.js): `backend/src/services/videoStorageAdapter.js`
- [Telegram client](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/telegramStorage.js): `backend/src/services/telegramStorage.js`
- [Storage maintenance](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/storageMaintenance.js): `backend/src/services/storageMaintenance.js`
- [Auto archive](https://github.com/vikrant-choudhary06/cutcrew/blob/main/backend/src/services/autoArchive.js): `backend/src/services/autoArchive.js`

### Other components

- **Viewer**

## Connections

- Viewer → Web app: browses (evidence: `README.md`)
- Viewer → Android app: browses (evidence: `README.md`)
- Viewer → Windows app: uses (evidence: `README.md`)
- Web app → Search page: opens (evidence: `frontend/src/App.jsx`)
- Web app → Title pages: opens (evidence: `frontend/src/App.jsx`)
- Web app → Watch pages: opens (evidence: `frontend/src/App.jsx`)
- Web app → Library state: provides (evidence: `frontend/src/main.jsx`)
- Viewer → Catalog routes: discovers titles (evidence: `README.md`)
- Viewer → Watch pages: starts playback (evidence: `README.md`)
- Watch pages → Video player: renders
- Viewer → Library state: tracks progress (evidence: `README.md`)
- Library state → Account routes: syncs account data
- Web app → Backend API: requests data
- Android app → Backend API: requests data
- Backend API → Catalog routes: mounts routes (evidence: `backend/src/app.js`)
- Backend API → Anime services: tracks activity (evidence: `backend/src/app.js`)
- Backend API → Movie providers: dispatches playback
- Backend API → Anime provider: dispatches anime playback
- Storage admin → Storage settings: reads configuration (evidence: `backend/src/routes/adminStorage.js`)
- Storage admin → Video index: queries assets (evidence: `backend/src/routes/adminStorage.js`)
- Storage settings → Telegram client: reads settings (evidence: `backend/src/config/videoStorage.js`)
- Video index → PostgreSQL: queries (evidence: `backend/src/services/videoStorageRepository.js`)
- Storage maintenance → Video index: checks assets (evidence: `backend/src/services/storageMaintenance.js`)
- Telegram storage → Telegram client: calls storage API (evidence: `backend/src/services/videoStorageAdapter.js`)
- Auto archive → Storage admin: manages archive (evidence: `backend/src/routes/adminStorage.js`)
- Viewer → Library state: saves titles (evidence: `README.md`)
- Viewer → Catalog routes: searches titles (evidence: `README.md`)
