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.
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.
Be part of the dango Discord Server Community where you can connect with fellow users, ask questions, and share your experiences:
- Node.js: Version 22.5.0 or higher (Download here).
Open a terminal and run:
npm install -g @serifpersia/dangoNote: After the one-time setup, you can start the application anytime, from any directory, by simply opening a terminal and typing
dango.
You can run dango on your Android device using the Termux app. No root is required.
- Install Termux: Download and install it from F-Droid or the Termux website.
- Update packages:
Press
pkg update && pkg upgradeyandEnterwhen prompted to confirm updates. - Install Node.js:
Press
pkg install nodejs
yandEnterwhen prompted. - Install dango:
npm install -g @serifpersia/dango
- Run the app:
dango
Once running, you can access the interface by navigating to http://localhost:3000/ in your mobile browser.
A standalone Android app that bundles Node.js + dango with a WebView UI.
- Download the APK from Releases or build it yourself.
- 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.shRequires: Python 3, Java 17+, Android SDK (build-tools 36.0.0, platform android-36).
If you need to remove the application from your system, simply open a terminal and run:
npm uninstall -g @serifpersia/dangoThis safely deletes the application files and removes the dango command from your system's PATH.
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 dango2. 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.
- Run
npm installto install all dependencies (root + workspaces, deduped). - Run
npm run buildto build both workspaces (clientvia Vite,serverviatsc).
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.shOn Windows:
run.batOnce 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 bothclientandserver(npm run build --workspaces).npm run dev/npm start- Run viaorchestrator.js(spawnsdango-server+dango-clientwithnpm --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.
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/dangoor~/.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.
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:
- GitHub Cloud Sync
- Google Drive Sync
- Rclone Sync
If GitHub is connected, it is used first. Google Drive and Rclone remain available as fallback or legacy sync options.
Google Drive sync is preconfigured with a default dango-managed Google client. No Google Cloud project setup is required:
- Open dango.
- Go to Settings -> Synchronization.
- 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 settings → Manage 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.
- Open dango.
- Go to Settings -> Synchronization.
- Click Sign in with GitHub.
- 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.
If you prefer using Mega, Dropbox, or other providers, you can use Rclone:
- Install Rclone on your system and ensure it's in your PATH.
- Configure a remote using
rclone config. - 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.
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.
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.
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.
This project is open-source and licensed under the MIT License - see the LICENSE file for details.
