dango is a lightweight, self-hosted Node.js application built for querying anime metadata, managing personal watchlists, and logging viewing progress through a fast local interface.
- Hardware Efficient: Engineered with a minimal footprint to run effortlessly on low-spec hardware, SBCs, and mobile environments.
- Metadata & Discovery: Browse trending titles, search catalog entries, and view release schedules locally.
- Multi-Provider Playback: Switch seamlessly between multiple third-party streaming providers directly within the player interface.
- Watchlist Tracking: Categorize titles (Watching, Completed, Plan to Watch) with fine-grained progress states.
- Library Insights: Built-in dashboard tracking viewing habits, personal stats, and completion ratios.
- Trackers & Sync: Bi-directional AniList sync and one-way MyAnimeList list imports.
- Expanded Media Hub: Dedicated interfaces for ASMR, Internet Radio, and TV/Movies.
- LAN Security: Optional LAN authentication with password enforcement for multi-device local network deployments.
| Requirement | Supported Version | Notes |
|---|---|---|
| Node.js | >= 22.5.0 |
Required runtime (Download) |
| npm | Latest with Node | Global binary installation |
Install the global CLI binary via npm:
npm install -g @serifpersia/dangoLaunch the interface from anywhere:
dangoImportant
Once the server initializes, navigate to http://localhost:3000 in your browser. The background process runs locally until terminated (Ctrl + C or q key press as well as window X button closing action).
Option 1: Termux Environment
Run standard dango via Termux:
Option 2: Standalone APK
A standalone bundle packaging Node.js, dango, and a local WebView container.
- Grab the latest
.apkfrom Releases. - Install the APK (allow Install from Unknown Sources when prompted).
- Open the app. Core runtimes auto-provision on first launch.
Compiling from Source:
cd android-app
python fetch-termux-node.py
# Windows
build-debug.bat
# Linux / macOS
chmod +x build-debug.sh && ./build-debug.shBuild requirements: Python 3, JDK 17+, Android SDK (Platform 36, Build-Tools 36.0.0).
The project is structured as an npm workspace (client and server) managed by a unified root lockfile.
# Clone the repository
git clone https://github.com/serifpersia/dango.git
cd dango
# Install dependencies (root + workspaces hoisted)
npm install
# Compile workspaces (Vite frontend + tsc backend)
npm run buildRun via interactive environment scripts:
# Linux / macOS
chmod +x run.sh && ./run.sh
# Windows
run.bat| Command | Action |
|---|---|
dango |
Start the installed client daemon |
dango --version |
Display current installed version |
npm run dev |
Start full dev stack via orchestrator.js |
npm run --workspace=dango-client dev |
Run Vite frontend independently |
npm run --workspace=dango-server dev |
Run backend via nodemon + ts-node |
npm run lint --workspaces |
Run ESLint passes across all packages |
dango stores SQLite databases, cached indices, and credentials in the OS application data registry rather than the global node_modules path:
| Platform | Default Path |
|---|---|
| Windows | %APPDATA%\dango |
| macOS | ~/Library/Application Support/dango |
| Linux | $XDG_DATA_HOME/dango or ~/.local/share/dango |
Important
Legacy installs will automatically migrate .env variables and SQLite records from older server/ structures into the proper user directory on launch.
dango is local-first: primary application state lives in your local SQLite store. Cloud syncing creates point-in-time JSON snapshots to maintain seamless backups across multiple installations.
Sync Priority Engine:
[1] GitHub Sync ──(fallback)──> [2] Google Drive ──(fallback)──> [3] Rclone
- Open Settings → Synchronization.
- Click Sign in with GitHub.
- Authorize via the OAuth device code flow.
dango creates a private repository named dango-sync-data to read/write JSON snapshots (sync.json for production, sync.dev.json for development).
- Open Settings → Synchronization.
- Click Sign in with Google and authorize permissions.
Data writes directly to a sandbox appDataFolder on your personal Drive. To clear backups, revoke app permissions under Google Drive's Manage Apps menu.
Important
Advanced users can supply their own custom Github and Google OAuth Client ID & Secret in settings.
Used as a manual fallback for services like Mega, Dropbox, or custom WebDAV:
- Ensure
rcloneis installed and mapped to your systemPATH. - Configure your desired target via
rclone config. - Pick your configured remote profile inside Settings → Synchronization.
Bidirectional sync is fully supported:
- Go to Trackers in the navigation panel.
- Select Sync Now.
- Local episode progress updates remotely; external catalog updates merge safely into your local database without overwriting uncommitted states.
Need help configuring your setup, troubleshooting builds, discussing feature requests or simply just chat about anime?
dango is an open-source, local-first web app. It does not scrape, host or distribute unauthorized media or copyrighted video assets. Users are solely responsible for ensuring their usage aligns with relevant local laws and digital copyright regulations.
Distributed under the terms of the MIT License.

