Skip to content

Repository files navigation

dango logo

A local-first anime media client focused on performance, privacy, and personal library tracking.

License: MIT Github stars App version

Users

Provider Status


dango is a lightweight Node.js application for browsing anime metadata, managing a personal watchlist, and tracking viewing progress through a clean frontend running on your own machine.

If dango is useful to you, consider giving the repo a ⭐. It helps others find the project.

Features

Based on a lightweight architecture, dango includes:

  • Performance First: Designed specifically to run smoothly on low-end hardware.
  • Built-in Search & Discovery: Explore trending and popular anime metadata.
  • Watchlist Management: Keep track of current, completed, and planned titles.
  • User Insights: View personal library and progress statistics.
  • MAL Integration: Seamlessly import your lists from MyAnimeList.
  • AniList Sync: Connect your AniList account and sync your local watchlist with Anilist.
  • ASMR, Radio & TV/Movies Sections: Dedicated sections alongside the anime library.

Join dango Discord server

Be part of the dango Discord Server Community where you can connect with fellow users, ask questions, and share your experiences:

Discord

Getting Started

Prerequisites

⚡ Quick Install

Open a terminal and run:

npm install -g @serifpersia/dango

Note: After the one-time setup, you can start the application anytime, from any directory, by simply opening a terminal and typing dango.

📱 Android Installation (Termux)

You can run dango on your Android device using the Termux app. No root is required.

  1. Install Termux: Download and install it from F-Droid or the Termux website.
  2. Update packages:
    pkg update && pkg upgrade
    Press y and Enter when prompted to confirm updates.
  3. Install Node.js:
    pkg install nodejs
    Press y and Enter when prompted.
  4. Install dango:
    npm install -g @serifpersia/dango
  5. Run the app:
    dango

Once running, you can access the interface by navigating to http://localhost:3000/ in your mobile browser.

Android APK (No Termux Required)

A standalone Android app that bundles Node.js + dango with a WebView UI.

  1. Download the APK from Releases or build it yourself.
  2. Install the APK on your Android device (enable "Install from unknown sources" if prompted).

Features:

  • Auto-installs everything on first launch
  • Checks for dango updates on each launch

Build from source:

cd android-app
python fetch-termux-node.py

# Windows:
build-debug.bat
# Linux/macOS:
chmod +x build-debug.sh && ./build-debug.sh

Requires: Python 3, Java 17+, Android SDK (build-tools 36.0.0, platform android-36).


Uninstalling

If you need to remove the application from your system, simply open a terminal and run:

npm uninstall -g @serifpersia/dango

This safely deletes the application files and removes the dango command from your system's PATH.


Manual Installation (For Developers)

Want to poke around the source code or contribute? You can build the project manually.

1. Clone the repository:

git clone https://github.com/serifpersia/dango.git
cd dango

2. Install, Build, and Run: This project uses npm workspaces (client + server) with a single package-lock.json at the root. All dependencies are installed and hoisted together.

  1. Run npm install to install all dependencies (root + workspaces, deduped).
  2. Run npm run build to build both workspaces (client via Vite, server via tsc).

Use the provided run scripts that offer a menu to choose between a Development or Production setup:

On Linux / macOS:

chmod +x run.sh
./run.sh

On Windows:

run.bat

Commands

Once installed globally, you can use the following commands:

  • dango - Start the application.
  • dango --version (or -v) - Check your installed version.

For developers (workspaces):

  • npm install - Install all workspaces (hoisted, single lockfile).
  • npm run build - Build both client and server (npm run build --workspaces).
  • npm run dev / npm start - Run via orchestrator.js (spawns dango-server + dango-client with npm --workspace).
  • npm run --workspace=dango-client dev - Run only the frontend (Vite).
  • npm run --workspace=dango-server dev - Run only the backend (nodemon + ts-node).
  • npm run lint --workspaces - Lint both workspaces.

Data Location

dango stores your persistent files in your OS app-data folder instead of inside the globally installed npm package:

  • Windows: %APPDATA%\dango
  • macOS: ~/Library/Application Support/dango
  • Linux: $XDG_DATA_HOME/dango or ~/.local/share/dango

This folder contains your .env, database files, sync manifests, and Google token file. Existing installs will automatically migrate legacy files from the old server/ folder on first launch when those files are still present.


Cloud Sync (Optional)

dango can automatically sync your local data to the cloud. The app stays local-first: your main database is a local SQLite file, and cloud sync exports/imports the app data as JSON when needed.

Sync provider priority is:

  1. GitHub Cloud Sync
  2. Google Drive Sync
  3. Rclone Sync

If GitHub is connected, it is used first. Google Drive and Rclone remain available as fallback or legacy sync options.

2. Google Drive Sync

Google Drive sync is preconfigured with a default dango-managed Google client. No Google Cloud project setup is required:

  1. Open dango.
  2. Go to Settings -> Synchronization.
  3. Click Sign in with Google and approve access.

Your sync data is stored in a private Google Drive appdata folder in JSON format:

  • Production mode uses sync.json.
  • Development mode uses sync.dev.json.

To fully disconnect Google Drive sync and remove stored data, go to Google Drive settingsManage apps, find dango, and revoke access. Then delete the hidden appdata sync files from your Drive.

If you prefer to use your own Google OAuth client, you can override the default in the Google authentication advanced settings.

1. GitHub Cloud Sync

  1. Open dango.
  2. Go to Settings -> Synchronization.
  3. Click Sign in with GitHub.
  4. Open the shown GitHub device URL, enter the code, and approve access.

dango will create a private GitHub repository named dango-sync-data in your account and store your sync data in JSON:

  • Production mode uses sync.json.
  • Development mode uses sync.dev.json.

The app requests GitHub repository access because it needs to create and update this private sync repository. The GitHub token is stored locally in your dango app-data .env file.

To fully remove synced data, delete the dango-sync-data repository from your GitHub account.

3. Rclone Sync

If you prefer using Mega, Dropbox, or other providers, you can use Rclone:

  1. Install Rclone on your system and ensure it's in your PATH.
  2. Configure a remote using rclone config.
  3. In dango, go to Settings -> Synchronization and select your remote name from the Rclone dropdown.

Rclone is used only when GitHub and Google Drive sync are not active.


AniList Sync (Optional)

dango can sync your local watchlist with your AniList account. This is a bidirectional sync: local progress (status, episode count) is pushed to AniList, and remote changes are pulled into your local database.

Syncing

Go to Trackers in the side menu and click Sync Now, or let dango sync automatically when configured. The sync compares your local database against your AniList list and applies changes non-destructively.


Disclaimer

dango is a local-first media client. It does not host, upload, store, or distribute copyrighted video content.

Users are responsible for configuring and using the application in compliance with applicable laws in their jurisdiction. All trademarks, titles, artwork, metadata, and copyrighted material belong to their respective owners.

This project is provided for personal library management, metadata browsing, and local application experimentation. The maintainers do not endorse or encourage copyright infringement.

License

This project is open-source and licensed under the MIT License - see the LICENSE file for details.

Releases

Contributors

Languages