QuoteReels is a FastAPI + React stack that automates the creation of short-form video content. It fetches random or custom quotes, analyzes them using the Gemini AI API, downloads relevant background videos from Coverr, Pexels, or Pixabay, and generates a professional video output with AI voiceover.
- 🔄 Automated Quote Fetching: Get daily random quotes or use your own custom quotes
- 🧠 AI-Powered Analysis: Uses Gemini AI to categorize and analyze quotes for best video match
- 🎥 Smart Video Selection: Downloads relevant background videos from Coverr, Pexels, or Pixabay
- 🗣️ AI Voiceover: Choose from dozens of realistic voices for text-to-speech narration
- 🎬 Professional Video Generation: Creates social media-ready vertical videos (9:16)
- ⚡ Fast & Memory-Efficient: Optimized video processing with MoviePy
- 🚀 API & Web UI: User-friendly web interface and REST API endpoints
- 📥 Download & Preview: Instantly preview and download your generated videos
-
Clone the repository:
git clone https://github.com/sudipnext/QuoteReels.git
-
Navigate to the project directory:
cd QuoteReels -
Install uv (if you do not already have it).
-
Create a virtual environment and install dependencies (Python code and
pyproject.tomllive inbackend/):cd backend uv syncThis reads
backend/pyproject.tomlandbackend/uv.lock, createsbackend/.venv, and installs dependencies. -
Set up environment variables: Create a
.envfile in the repository root (next tobackend/andfrontend/) with the following variables:GEMINI_API_KEY=your_gemini_api_key COVERR_API_KEY=your_coverr_api_key PEXELS_API_KEY=your_pexels_api_key PIXABAY_API_KEY=your_pixabay_api_key
From the repository root:
cd frontend
npm install
npm run devThe Vite dev server proxies /api to http://127.0.0.1:8000 (FastAPI). Start the API from backend/ (see below).
From backend/:
uv run uvicorn asgi:app --reload --host 0.0.0.0 --port 8000Or from the repository root:
uv run --directory backend uvicorn asgi:app --reload --host 0.0.0.0 --port 8000Interactive docs: http://127.0.0.1:8000/docs. Main surface is under /api/v1/studio (generate, load/save project, export, asset files).
From the repository root, with a .env file next to docker-compose.yml (same keys as in step 5 above):
docker compose up --build- Frontend: http://localhost:5173 — Vite proxies
/apito thebackendservice. - API docs: http://localhost:8000/docs
- Generated studio assets persist in the
studio-outputDocker volume under/repo/outputin the backend container.
If the backend logs DNS / name resolution errors (for example Edge TTS to speech.platform.bing.com), docker-compose.yml sets public DNS (8.8.8.8). On locked-down networks, replace those with your resolver or use a docker-compose.override.yml.
We welcome contributions to QuoteReels! Here's how you can help:
- Fork the repository on GitHub
- Create a new branch for your feature or bugfix
git checkout -b feature/amazing-feature
- Make your changes and commit them
git commit -m 'Add an amazing feature' - Push to your branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style and conventions
- Add tests (e.g.
pytest) when you introduce automated coverage - Keep pull requests focused on a single topic
- Document any new functions, classes or modules
- Update the README if necessary
This project is licensed under the MIT License - see the LICENSE file for details.