Skip to main content

Overview

This page documents all dependencies required by the AI Video Presentation Generator, including their versions, purposes, and important notes.

Backend Dependencies (Python)

All backend dependencies are listed in backend/requirements.txt.

Core Framework

PackageVersionPurpose
fastapi0.115.0Modern, fast web framework for building APIs with Python
uvicorn0.32.0Lightning-fast ASGI server for running FastAPI applications
python-multipart0.0.12Support for form data and file uploads in FastAPI
FastAPI was chosen for its excellent async support, automatic API documentation, and high performance.

AI & Content Generation

PackageVersionPurpose
google-generativeai0.8.3Google Gemini API for AI-powered content and script generation
Why Gemini?
  • Free tier with generous quotas
  • Excellent content understanding and generation
  • Structured output support for JSON responses
  • Multi-modal capabilities (future enhancement)

Video & Animation Processing

PackageVersionPurpose
manim0.18.1Mathematical Animation Engine for creating programmatic animations
moviepy≥2.0.0Video editing library for composing slides, audio, and animations
Pillow≥10.0.0Python Imaging Library for slide image creation and manipulation
Manim generates mathematical and educational animations programmatically. It’s the same library used by 3Blue1Brown for YouTube videos.

Utilities & Configuration

PackageVersionPurpose
python-dotenv1.0.1Load environment variables from .env files
pydantic2.9.2Data validation using Python type annotations
requests2.32.3HTTP library for API calls (Unsplash, Sarvam AI)

Frontend Dependencies (Node.js)

All frontend dependencies are listed in frontend/package.json.

Core Framework

PackageVersionTypePurpose
react19.1.1ProductionUI library for building interactive components
react-dom19.1.1ProductionReact renderer for web browsers
vite7.1.7DevelopmentNext-generation frontend build tool with HMR
@vitejs/plugin-react5.0.4DevelopmentOfficial Vite plugin for React Fast Refresh

UI & Styling

PackageVersionTypePurpose
tailwindcss4.1.14DevelopmentUtility-first CSS framework
@tailwindcss/vite4.1.14ProductionTailwind CSS integration for Vite
lucide-react0.545.0ProductionBeautiful, consistent icon library
Why Tailwind CSS?
  • Rapid UI development
  • Consistent design system
  • Small bundle size with purging
  • Responsive design utilities

Features & Functionality

PackageVersionTypePurpose
axios1.12.2ProductionHTTP client for API requests
@hello-pangea/dnd18.0.1ProductionDrag-and-drop for slide reordering
pptxgenjs4.0.1ProductionPowerPoint export functionality
gif.js0.2.0ProductionGIF generation for preview thumbnails
@hello-pangea/dnd is the maintained fork of react-beautiful-dnd, used for the slide editor’s drag-and-drop interface.

Development Tools

PackageVersionPurpose
eslint9.36.0JavaScript/React linting
eslint-plugin-react-hooks5.2.0Enforce React Hooks rules
eslint-plugin-react-refresh0.4.22Ensure HMR compatibility
@types/react19.1.16TypeScript type definitions for React
@types/react-dom19.1.9TypeScript type definitions for ReactDOM
autoprefixer10.4.21Add vendor prefixes to CSS
postcss8.5.6CSS transformation tool

System Dependencies

These must be installed separately on your system.

FFmpeg

Version Required: Latest stable (6.0+) Purpose:
  • Video encoding and decoding
  • Audio processing and merging
  • Format conversion
  • Video composition
Installation: Why FFmpeg?
  • Industry-standard video processing
  • Supports all common formats
  • Excellent compression
  • Command-line interface integrates well with MoviePy

Manim Dependencies

Manim requires additional system libraries:
DependencyPurpose
LaTeXMath equation rendering
Cairo2D graphics rendering
PangoText layout and rendering
These are typically installed automatically with Manim on Windows. On Linux, you may need to install them separately.

External APIs

The project relies on these external services:

Google Gemini API

Purpose: AI content and script generation API Key Required: Yes (free tier available) Get API Key: https://makersuite.google.com/app/apikey Rate Limits:
  • 60 requests per minute (free tier)
  • Sufficient for development and moderate usage

Sarvam AI (Text-to-Speech)

Purpose: Multi-language voice narration API Key Required: Yes Model Used: bulbul:v1 Supported Languages:
  • English
  • Hindi
  • Tamil
  • Telugu
  • Kannada
  • Malayalam
  • Bengali
  • Marathi
  • Gujarati
Why Sarvam AI?
  • Excellent support for Indian languages
  • Natural-sounding voices
  • Good pronunciation of technical terms

Unsplash API

Purpose: High-quality stock images for slides API Key Required: Yes (free tier available) Get API Key: https://unsplash.com/developers Rate Limits:
  • 50 requests per hour (free tier)
  • Sufficient for typical usage
Why Unsplash?
  • High-quality, curated images
  • Free for development
  • Good search relevance
  • No watermarks

Dependency Installation

Quick Install (All at Once)

Backend:
cd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Frontend:
cd frontend
npm install

Updating Dependencies

Backend:
pip list --outdated
pip install --upgrade <package-name>
Frontend:
npm outdated
npm update
Always test after updating dependencies, especially major version bumps.

Development vs Production

Backend

No difference - same dependencies for both environments.

Frontend

  • Development: Uses Vite dev server with HMR
  • Production: Build with npm run build creates optimized static files
Production build command:
npm run build
Preview production build:
npm run preview

Troubleshooting Dependencies

Try installing Microsoft Visual C++ Build Tools:
# Or use pre-compiled wheels:
pip install --only-binary :all: <package-name>
Manim has complex dependencies. If it fails:
  1. Ensure you have Visual C++ Build Tools
  2. Try installing Manim Community Edition: pip install manim
  3. Check Manim documentation for platform-specific guides
Use a faster package manager:
# Install pnpm
npm install -g pnpm

# Use pnpm instead
pnpm install
MoviePy requires FFmpeg in PATH:
# Verify FFmpeg is accessible
ffmpeg -version

# If not, add to PATH or set FFMPEG_BINARY environment variable

Next Steps

Setup Guide

Return to the development setup guide

Troubleshooting

Common issues and solutions

Build docs developers (and LLMs) love