An ad-free Flutter Android, Linux, and Windows client with a self-hostable Python catalog and playback API, created by R3AP3R Editz.
Browse and search titles, resume watching, save bookmarks, and download media for offline playback where you have permission to do so. The client talks to the scraper API; the API returns metadata and media links rather than proxying video.
Source-available, with conditions: You may use, modify, and share this project under the custom license. Keep proper credit to R3AP3R Editz, never add ads, and never sell the project or its derivatives or charge for access. Because these restrictions limit reuse, this is not OSI-approved open source. Licensing details.
Donate to support the creator — donations are optional and do not unlock features or access. The destination is the creator's XibeCode-branded support page; review its donor-publicity notice before donating. See donation privacy.
- Home sections, catalog browsing, search suggestions, and title details.
- Video playback with available quality and subtitle choices.
- Continue Watching with saved episode and playback position.
- A bookmarked-title library and offline playback of saved downloads.
- Android background downloads with progress notifications and a persistent queue in Downloads, with pause, resume, cancel, and retry controls. Allow MovieBox notifications to start, resume, or retry downloads. Pause/resume depends on server support; unknown-length sources require another quality.
- A configurable API address and optional bearer-token authentication.
- A Docker Compose deployment bound to localhost by default.
- Offline creator-credit and project-license screens, plus dependency notices in Settings.
Current scope: Android, Linux, and Windows are the checked-in application targets. See the Linux build and installation guide and the Windows build and installation guide. Desktop transfers require the app to remain running; the Windows build has not been compiled or run by this project's Linux-based checks. In v1.0.4 (build 5), downloads continue in the background; Android force-stop and battery restrictions can still interrupt them. Reopen MovieBox to recover the persistent queue and resume or retry interrupted items in Downloads. Upstream catalog availability, signed links, subtitle availability, and quality restrictions can change; this project does not bypass locked content.
You need Git, Docker with the Compose plugin, and Flutter 3.47.5 stable (Dart 3.13.4), plus the Android development tools. See setup and troubleshooting for the local Python alternative and device networking.
git clone https://github.com/iotserver24/movie-box.git
cd movie-box
cp .env.example .env
docker compose up --build -d
curl http://127.0.0.1:8000/healthCopy .env.example only on first setup so existing configuration is not overwritten. In another terminal, from the repository root:
cd movie_box_app
flutter pub get
flutter runIn the app's Settings, change the API address to your own server. For the standard Android emulator, use http://10.0.2.2:8000. A physical device needs a reachable private LAN/VPN address and the matching API token. The app currently defaults to https://movie-box.n92dev.us.kg; this repository does not guarantee that deployment's availability or privacy practices. Do not enter your own server's token until you have selected your own server address.
Set a strong SCRAPER_API_TOKEN before making the API reachable beyond localhost. Prefer a private VPN; use HTTPS for any remote hostname. Never commit .env or share tokens in issues.
| Document | Purpose |
|---|---|
| Setup | Docker, local Python, Android, and troubleshooting |
| Architecture | Components, data flow, and implementation limits |
| Scraper API | Endpoints and API behavior |
| Android client | Playback, downloads, and app checks |
| Linux desktop | Linux requirements, build, install, and behavior |
| Windows desktop | Windows requirements, build, install, and behavior |
| Privacy | Local storage, network requests, and deployment responsibilities |
| Licensing | Credit, no-ads, no-selling, and donation rules |
| Contributing | Development workflow and review expectations |
| Security | Safe deployment and vulnerability reporting |
| Code of conduct | Community expectations |
| Credits | Creator and third-party acknowledgments |
| Release checklist | Checks before public publication or distribution |
| Android signing | Production credentials, fail-closed release configuration, and artifact checks |
| Dependency review | Reviewed packages and remaining third-party obligations |
| Publication review | Automated history checks, limits, and outstanding approvals |
With the Python development environment configured as described in setup:
python -m pytest scraper/tests -q
python -m unittest discover -s scripts/tests -v
python scripts/sync_notices.py --checkFrom movie_box_app/:
flutter analyze
flutter test
flutter build apk --debugThese are commands to run locally, not claims that a particular revision has passed them. See contributing before opening a pull request. Feature requests and reproducible non-sensitive bugs belong in GitHub issues.
movie_box_app/ Flutter Android, Linux, and Windows app with widget and integration tests
scraper/ FastAPI service, provider adapter, and Python tests
compose.yaml Local Docker Compose deployment
script.py Standalone experimental downloader; not needed by the app
docs/ Setup, architecture, privacy, licensing, and release guidance
script.py contains a hard-coded download example and starts network/download work when executed; it is not the app's entry point or a setup step.
Movie Box by R3AP3R Editz · GitHub · Donate
Distributed under the Movie Box Source-Available License 1.0. Forks and redistributed builds must retain the license and prominent creator credit, remain ad-free, and must not be sold or placed behind paid access. See credits for dependency acknowledgments.
This project is an independent client and is not presented as an official MovieBox service. The software license does not grant rights to any third-party media, branding, catalog data, or subtitles. Use it only for content and services you are authorized to access and in accordance with applicable law and provider terms.