This web application transforms bulk text, markdown, or prose into a fully formatted PowerPoint presentation using a user-provided template and the power of Large Language Models (LLMs).
- Text-to-Presentation: 📄➡️📊 Converts long-form text or markdown into structured presentation slides.
- Template-Based Styling: 🎨 Applies the visual style, colors, fonts, and layouts from a user-provided
.pptx
or.potx
template. - Pre-Available Templates: 📚 Comes with a selection of ready-to-use presentation templates.
- Template Suggestion: 💡 Suggests the best template for your content using an LLM.
- Multi-Provider LLM Support: 🤖 Compatible with major LLM providers like Google (Gemini) and OpenAI (GPT).
- Dynamic Model Selection: ⚙️ Fetches and displays available models based on the user's API key.
- Secure API Key Handling: 🔒 API keys are sent directly to the respective LLM provider and are never stored on our server.
- Slide Previews: 🖼️ Generates image previews of the slides before downloading.
- Framework: Next.js (React)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Shadcn/ui, Lucide React
- Editor: MDEditor
- Framework: FastAPI
- Language: Python
- Presentation Engine:
python-pptx
- LLM Integration:
openai
,google-generativeai
- Data Validation: Pydantic
Follow these steps to run the application on your local machine.
- Python 3.8+ and
pip
- Node.js 18+ and
yarn
git clone https://github.com/PythonicVarun/PPT-Generator.git
cd PPT-Generator
# Navigate to the backend directory
cd backend
# Create and activate a virtual environment
# On Windows:
python -m venv .venv
.\.venv\Scripts\activate
# On macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt
# Create a .env file from the example
# On Windows:
copy .env.example .env
# On macOS/Linux:
cp .env.example .env
# Navigate to the frontend directory
cd frontend
# Install Node.js dependencies
yarn install
# Create a .env.local file from the example
# On Windows:
copy .env.example .env.local
# On macOS/Linux:
cp .env.example .env.local
# Open .env.local and set the backend host
NEXT_PUBLIC_BACKEND_HOST=http://localhost:8000
You must start both the backend and frontend servers.
With your terminal in the backend
directory and the virtual environment activated:
python app.py
The backend API will be available at http://localhost:8000
.
In a new terminal, navigate to the frontend
directory:
yarn dev
The frontend application will be available at http://localhost:3000
.
The FastAPI backend can be deployed as any standard ASGI application. Popular choices include:
- Docker: Containerize the application and deploy it to services like AWS ECS, Google Cloud Run, or a DigitalOcean Droplet.
- PaaS: Platforms like Heroku or Render.
- Serverless: Services like Vercel (using Serverless Functions) or AWS Lambda.
The Next.js frontend is best deployed on Vercel, which is optimized for the Next.js framework and provides a seamless CI/CD experience. It can also be deployed on other platforms that support Node.js, like Netlify or AWS Amplify.
When deploying, make sure to set the NEXT_PUBLIC_BACKEND_HOST
environment variable to the URL of your deployed backend.
We welcome contributions! Please see our Contributing Guidelines to get started.
By participating in this project, you agree to abide by our Code of Conduct.
This project is licensed under the MIT License. See the LICENSE file for details.