Chinese Community focused anime auto download tool.
Similar project that does not fit all my needs:
- AutoBangumi: Mature but heavily depends on Mikan Project
- I would like to use dhmy as main source
- and pick my favorite sub-group
- xarr-rss: Exactly what I needed but
- have premium subscription
- author banned my ip, I cannot login, thus cannot use the app.
- RSS Parser: Support for predefined and custom RSS feeds
- Sonarr Integration: Seamless integration with Sonarr for media management
- qBittorrent Integration: Download management (coming soon)
- AI Features: Intelligent RSS parsing and notifications (Phase 2)
- Frontend: Vite + React (JavaScript)
- Backend: Express.js (JavaScript)
- Database: PostgreSQL
- Deployment: Docker
Docker compose is the recommended way to run the application.
services:
autoanime:
image: ghcr.io/thomaslty/autoanime:latest
container_name: autoanime
ports:
- "3000:3000"
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- NODE_ENV=production
- PORT=3001
- DATABASE_URL=postgresql://autoanime:autoanime@postgres:5432/autoanime
# Optional, can be set in the UI
- SONARR_URL=${SONARR_URL:-http://sonarr:8989}
- SONARR_API_KEY=${SONARR_API_KEY:-}
- QBITTORRENT_URL=${QBITTORRENT_URL:-http://qbittorrent:8080}
- QBITTORRENT_USERNAME=${QBITTORRENT_USERNAME:-admin}
- QBITTORRENT_PASSWORD=${QBITTORRENT_PASSWORD:-adminadmin}
volumes:
- ./sonarr/media:/media # your sonarr media folder
- ./qbit_download:/downloads # your qbittorrent download folder
depends_on:
- postgres
restart: unless-stopped
networks:
- autoanime-network
extra_hosts:
- "host.docker.internal:host-gateway"
postgres:
image: postgres:16-alpine
container_name: autoanime-postgres
ports:
- "5432:5432"
environment:
- POSTGRES_USER=autoanime
- POSTGRES_PASSWORD=autoanime
- POSTGRES_DB=autoanime
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U autoanime"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- autoanime-network
volumes:
postgres_data:
networks:
autoanime-network:
driver: bridge
Create environment file (.env) with the following variables or you can remove all the environment variables and setup in the UI.
SONARR_URL=http://host.docker.internal:8989
SONARR_API_KEY=your_sonarr_api_key_here
QBITTORRENT_URL=http://host.docker.internal:8080
QBITTORRENT_USERNAME=admin
QBITTORRENT_PASSWORD=adminadmin
- Node.js 20+
- Docker and Docker Compose
- PostgreSQL (or use Docker)
-
Clone the repository:
git clone <repository-url> cd autoanime
-
Copy environment file:
cp .env.example .env
-
Install dependencies:
# Backend cd backend npm install # Frontend cd ../frontend npm install
-
Start the development servers:
# Terminal 1 - Backend cd backend npm run dev # Terminal 2 - Frontend cd frontend npm run dev
docker compose up -d --build- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Health check: http://localhost:3000/health
autoanime/
├── frontend/ # React SPA with React Router
│ ├── src/
│ │ ├── components/ # Reusable UI + shadcn/ui wrappers in components/ui/
│ │ ├── pages/ # Full page views (Home, RSS, SeriesDetail, Settings)
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Utilities (cn for className merging)
│ │ ├── App.jsx
│ │ └── main.jsx
│
├── backend/ # Express.js MVC pattern
│ ├── src/
│ │ ├── routes/ # API route definitions
│ │ ├── controllers/ # Request handlers
│ │ ├── services/ # Business logic
│ │ ├── db/ # Drizzle ORM schema and migrations
│ │ ├── rss_parsers/ # Extensible parser system (BaseParser + DmhyParser)
│ │ ├── enums/ # Constants (RssTemplate, AutoDownloadStatus)
│ │ ├── middleware/
│ │ ├── config/
│ │ └── app.js
│
├── api_docs/ # API documentation
├── docker-compose.yml
└── .env.example
Database: PostgreSQL via Drizzle ORM
- Schema:
backend/src/db/schema.js - Core tables:
series,series_seasons,series_episodes,series_images,rss,rss_item,qbittorrent_downloads,settings
MIT
