Modern web interface for background removal with local AI processing.
📚 View Complete Documentation →
- Backend: FastAPI + Uvicorn (Python 3.12)
- Frontend: React 18 + Vite + Tailwind CSS
- Deployment: Single Docker image (uvicorn serves both API and static files)
- Models: Focus v1.0.0 (local processing)
- Multi-Platform: Supports linux/amd64 (Intel/AMD) and linux/arm64 (Apple Silicon, ARM)
Model Results:
From the repository root:
# Start development servers with hot-reload
docker compose -f apps/web/docker-compose.yml up
# Access the application
# Frontend: http://localhost:3000
# Backend API: http://localhost:8000
# API Docs: http://localhost:8000/docsFrom the repository root:
# Build production image
docker build -f apps/web/Dockerfile -t withoutbg:latest .
# Run production container
docker run -p 80:80 withoutbg:latest
# Access the application
open http://localhostOr use Make commands from apps/web/:
cd apps/web
# Build, run, and manage production image
make docker-prod-build # Build production image
make docker-prod-run # Run on port 80
make docker-prod-logs # View logs
make docker-prod-stop # Stop container
make docker-prod-push DOCKER_HUB_USERNAME=your-username # Push to Docker Hubcd apps/web/backend
# Install dependencies (using uv - recommended)
uv sync
# Run development server
uvicorn app.main:app --reloadDon't have
uvyet? Download it at astral.sh/uv - it's a fast, modern Python package installer.
cd apps/web/frontend
# Install dependencies
npm install
# Run development server
npm run devThe application uses a multi-stage Docker build that creates a single production-ready image:
Stage 1: Build React frontend with Vite
Stage 2: Build Python backend with uv
Stage 3: Combine everything - uvicorn serves both the API and static files
# From repository root - build single production image
docker build -f apps/web/Dockerfile -t withoutbg:latest .
# Run on port 80
docker run -p 80:80 withoutbg:latest
# Application available at: http://localhost
# API documentation at: http://localhost/docs
# Health check at: http://localhost/api/health# Tag and push
docker tag withoutbg:latest your-username/withoutbg:latest
docker push your-username/withoutbg:latest- Frontend: http://localhost:3000
- Backend API docs: http://localhost:8000/docs
- Health check: http://localhost:8000/api/health
- Application: http://localhost
- API docs: http://localhost/docs
- Health check: http://localhost/api/health
apps/web/
├── backend/ # FastAPI application
│ ├── app/
│ │ └── main.py # Main API + static file serving
│ ├── Dockerfile # Separate backend image (dev)
│ └── pyproject.toml
├── frontend/ # React application
│ ├── src/
│ ├── Dockerfile # Separate frontend image (dev)
│ └── package.json
├── Dockerfile # Multi-stage production image
├── docker-compose.yml # Development setup
└── Makefile # Build and deployment commands
The production Dockerfile uses a multi-stage build:
- frontend-builder: Builds React app with Vite
- backend-builder: Builds Python dependencies with uv
- Production runtime: Python 3.12 slim with uvicorn serving both static files and API
No nginx or supervisord needed - uvicorn handles everything!
This error means the Docker image architecture doesn't match your CPU. The published withoutbg/app images support multiple platforms, but you may need to explicitly specify:
# For Intel/AMD systems (most common)
docker pull --platform linux/amd64 withoutbg/app:latest
docker run --platform linux/amd64 -p 80:80 withoutbg/app:latest
# For ARM systems (Apple Silicon, AWS Graviton)
docker pull --platform linux/arm64 withoutbg/app:latest
docker run --platform linux/arm64 -p 80:80 withoutbg/app:latestFor developers: When publishing images, use the multi-platform build:
cd apps/web
make docker-release VERSION=1.0.1See EXEC_FORMAT_ERROR_FIX.md for detailed troubleshooting steps.
- Dockerized Web App Documentation - Complete deployment guide
- Python SDK Documentation - Backend API reference
- Focus Model Results - Example outputs
- Pro API Results - Example outputs
- Multi-Platform Docker Guide - Technical details on cross-platform builds