mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-29 23:16:48 +00:00
4.1 KiB
4.1 KiB
02 — Tech Stack
Runtime and Language
| Item | Detail |
|---|---|
| Language | Python 3.11+ |
| CI Python version | Python 3.12 |
| Async runtime | asyncio (native), integrated with FastAPI/Uvicorn |
Backend Framework
| Item | Detail |
|---|---|
| Web framework | FastAPI |
| ASGI server | Uvicorn |
| Data validation | Pydantic v2 (BaseModel, BaseSettings, model_validator) |
| Settings management | pydantic-settings (BaseSettings class in app/core/config.py) |
Database
| Item | Detail |
|---|---|
| Default database | SQLite |
| Optional database | PostgreSQL (configured via DB_TYPE and related env vars) |
| ORM | SQLAlchemy |
| Migration tool | Alembic (database/versions/) |
| PostgreSQL extras | app/modules/postgresql/ module; setup guide at docs/postgresql-setup.md |
Caching
| Item | Detail |
|---|---|
| File-based cache | FileCache / AsyncFileCache in app/core/cache.py |
| Redis | Optional; app/modules/redis/ module; used for distributed caching when configured |
| In-process cache | Decorator helpers fresh / async_fresh on FileCache |
LLM and AI Agent
| Item | Detail |
|---|---|
| Agent runtime | app/agent/ — custom LLM agent orchestration |
| LLM abstraction | LangChain-based with multi-provider support |
| Supported providers | OpenAI-compatible APIs, Anthropic, and other configurable providers |
| Configuration | LLM_PROVIDER, LLM_MODEL, LLM_API_KEY, LLM_BASE_URL in settings |
| Enable flag | AI_AGENT_ENABLE |
| MCP protocol | JSON-RPC 2.0 at /api/v1/mcp; see docs/mcp-api.md |
Module Integrations
Download Clients
| Module | Directory |
|---|---|
| qBittorrent | app/modules/qbittorrent/ |
| Transmission | app/modules/transmission/ |
| rTorrent | app/modules/rtorrent/ |
Media Servers
| Module | Directory |
|---|---|
| Emby | app/modules/emby/ |
| Jellyfin | app/modules/jellyfin/ |
| Plex | app/modules/plex/ |
| TrimMedia | app/modules/trimemedia/ |
| Zspace | app/modules/zspace/ |
| Ugreen | app/modules/ugreen/ |
Message Channels
| Module | Directory |
|---|---|
| Telegram | app/modules/telegram/ |
app/modules/wechat/ |
|
| WeChatClawBot | app/modules/wechatclawbot/ |
| Feishu | app/modules/feishu/ |
| Slack | app/modules/slack/ |
| Discord | app/modules/discord/ |
| VoceChat | app/modules/vocechat/ |
| Synology Chat | app/modules/synologychat/ |
| WebPush | app/modules/webpush/ |
| QQBot | app/modules/qqbot/ |
Metadata Sources
| Module | Directory |
|---|---|
| TMDB | app/modules/themoviedb/ |
| TheTVDB | app/modules/thetvdb/ |
| Douban | app/modules/douban/ |
| Bangumi | app/modules/bangumi/ |
| Fanart | app/modules/fanart/ |
Dependency Management
| Item | Detail |
|---|---|
| Source file | requirements.in — edit this to add or upgrade dependencies |
| Lock file | requirements.txt — generated by pip-compile; never edit manually |
| Tool | pip-tools (pip-compile, pip-sync) |
| Install | pip install -r requirements.txt |
Performance Extension
| Item | Detail |
|---|---|
| Rust extension | moviepilot_rust — optional compiled accelerator for core processing paths |
| Build | Requires Rust cargo; built automatically by moviepilot install deps |
| Skip flag | MOVIEPILOT_SKIP_RUST_ACCEL=1 disables build (falls back to Python implementation) |
| Toggle | Can be disabled/re-enabled at runtime via frontend Advanced Settings → Lab |
Quality Tooling
| Tool | Purpose | Command |
|---|---|---|
| pytest | Test runner | pytest tests/test_xxx.py |
| pylint | Static analysis | pylint app/ |
| safety | Dependency vulnerability scan | safety check -r requirements.txt --policy-file=safety.policy.yml |
Deployment
| Method | Detail |
|---|---|
| Docker | Primary deployment; image bundles backend + frontend static files + resources |
| Local CLI | moviepilot CLI for source-based install; see docs/cli.md |
| Frontend | Vue/TypeScript SPA served from public/; source in MoviePilot-Frontend repo |
| Frontend proxy | Local Node service.js proxies /api and /cookiecloud to the backend |
Last Updated: 2026-05-25