Turn a text prompt into a Manim animation video using LLM codegen.
- Python 3.11+
- Node.js 18+
- Docker (for full parity with production)
cd services
cd ..
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -r requirements.txt
# Groq is the default provider. Add NVIDIA_API_KEY too if you want to try Gemma.
# Create a .env file in the project root with:
# GROQ_API_KEY=...
# NVIDIA_API_KEY=...
uvicorn services.api.main:app --reloadcd frontend
cp .env.example .env
# Edit VITE_API_BASE_URL in .env if backend is remote
npm install
npm run dev- Push your repo to GitHub.
- Go to render.com, create a new Web Service, connect your repo.
- Render will auto-detect
render.yamland build with Docker. - Set
GROQ_API_KEYin the Render dashboard. - Optionally set
NVIDIA_API_KEYif you want to use the NVIDIA provider. - Deploy. Copy the backend URL (e.g.,
https://playground-xxxx.onrender.com).
- Import your repo in vercel.com.
- Set Root Directory to
frontend. - Set build command:
npm run build, output:dist. - Add env var:
VITE_API_BASE_URL= your Render backend URL. - Deploy.
- https://huggingface.co/datasets/thanhkt/manim_code
- https://huggingface.co/datasets/generaleoley/manim-codegen
- If the backend fails to render, check logs for LLM or Manim errors.
- If the frontend can’t reach the backend, check CORS and VITE_API_BASE_URL.
- For DNS issues, verify CNAME and Vercel domain status.
- Built with FastAPI, Manim, React, Vite, Groq and NVIDIA providers, Qwen3-32B and Gemma 2 2B IT models.
- See frontend/README.md for React/Vite details.