Flask + MoviePy backend and Vue 3 frontend for simple web-based editing (upload, trim, merge). The backend writes generated clips to clips/ (created at runtime); avoid committing media.
- Python 3.8+ and Node 16+
- FFmpeg available on PATH (MoviePy uses it under the hood)
- Install Python deps:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- Run backend (Flask on :5000):
./start-server
# or on Windows: start-server-windows.bat- Run frontend (Vite dev server on :5173):
cd frontend
npm install
npm run dev- Open the dev URL from Vite, upload a small clip, trim it, and merge multiple clips to verify the flow.
index.py: app entrypoint usingbackend/factorybackend/: Flask app (__init__.py), video helpers (video_utils.py), paths config (config.py)frontend/: Vue 3 + Vite app (src/components,public/static)css/: shared/vendor styles (e.g., Font Awesome)clips/: runtime uploads/renders (auto-created; not tracked)
- Frontend scripts:
npm run dev,npm run build,npm run preview,npm run lint,npm run format. - Adjust backend behavior in
backend/video_utils.py; ensure new outputs stay underclips/. - Keep responses JSON-friendly and handle missing/invalid inputs; the frontend expects relative clip paths like
clips/<file>.