From 6b9b3c5c0eb211944f7fa37c64a29c156279549e Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Sun, 29 Jun 2025 21:16:57 +0545
Subject: [PATCH 01/21] Documentation edits made through Mintlify web editor
---
docs/docs.json | 3 +-
docs/using-presenton-api.mdx | 106 +++++++++++++++++++++++++++++++++++
2 files changed, 108 insertions(+), 1 deletion(-)
create mode 100644 docs/using-presenton-api.mdx
diff --git a/docs/docs.json b/docs/docs.json
index 526b2b70..da477948 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -18,7 +18,8 @@
"pages": [
"index",
"quickstart",
- "development"
+ "development",
+ "using-presenton-api"
]
},
{
diff --git a/docs/using-presenton-api.mdx b/docs/using-presenton-api.mdx
new file mode 100644
index 00000000..9b2243cb
--- /dev/null
+++ b/docs/using-presenton-api.mdx
@@ -0,0 +1,106 @@
+---
+title: "Using Presenton API"
+description: "You can use Presenton’s API to generate presentations programmatically. This is great for integrating Presenton into your own apps or workflows."
+---
+
+### 🎯 Endpoint
+
+```
+POST /api/v1/ppt/generate/presentation
+```
+
+Use this endpoint to generate a presentation from a prompt, outline, or uploaded documents.
+
+### 🧾 Request Format
+
+**Content-Type:** `multipart/form-data`
+
+| Field | Type | Required | Description |
+| ----------- | -------- | -------- | --------------------------------------------------------------------- |
+| `prompt` | `string` | ✅ Yes | The main topic or subject for the presentation |
+| `n_slides` | `int` | ❌ No | Number of slides (default: 8, min: 5, max: 15) |
+| `language` | `string` | ❌ No | Language of the presentation (default: `English`) |
+| `theme` | `string` | ❌ No | Theme of the presentation (e.g., `light`, `dark`, `royal_blue`, etc.) |
+| `documents` | `file[]` | ❌ No | Optional files (PDF, PPTX, DOCX, TXT) to include |
+| `export_as` | `string` | ❌ No | Export format: `pptx` or `pdf` (default: `pptx`) |
+
+### 📤 Example Request
+
+
+
+```bash bash
+curl -X POST http://localhost:5000/api/v1/ppt/generate/presentation \
+ -F "prompt=Introduction to Machine Learning" \
+ -F "n_slides=5" \
+ -F "language=English" \
+ -F "theme=light" \
+ -F "export_as=pptx"
+```
+
+
+```python python
+import requests
+
+url = "http://localhost:5000/api/v1/ppt/generate/presentation"
+data = {
+ "prompt": "Introduction to Machine Learning",
+ "n_slides": "5",
+ "language": "English",
+ "theme": "light",
+ "export_as": "pptx"
+}
+
+response = requests.post(url, data=data)
+print(response.json())
+```
+
+
+```javascript javascript
+const axios = require("axios");
+const FormData = require("form-data");
+
+const form = new FormData();
+form.append("prompt", "Introduction to Machine Learning");
+form.append("n_slides", "5");
+form.append("language", "English");
+form.append("theme", "light");
+form.append("export_as", "pptx");
+
+axios.post("http://localhost:5000/api/v1/ppt/generate/presentation", form, {
+ headers: form.getHeaders()
+})
+.then(response => {
+ console.log(response.data);
+})
+.catch(error => {
+ console.error("Error:", error.response?.data || error.message);
+});
+```
+
+
+
+### 📥 Example Response
+
+```json
+{
+ "presentation_id": "d3000f96-096c-4768-b67b-e99aed029b57",
+ "path": "/static/user_data/d3000f96-096c-4768-b67b-e99aed029b57/Introduction_to_Machine_Learning.pptx",
+ "edit_path": "/presentation?id=d3000f96-096c-4768-b67b-e99aed029b57"
+}
+```
+
+- `presentation_id`: Unique ID of the presentation
+- `path`: File path for downloading the presentation
+- `edit_path`: Link to open the presentation in the editor
+
+---
+
+### ✅ Supported Themes
+
+- `light` (default)
+- `dark`
+- `cream`
+- `royal_blue`
+- `faint_yellow`
+- `light_red`
+- `dark_pink`
\ No newline at end of file
From dd88d9d73b6f6a5897547faeacd8706d3b45e2a3 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 3 Jul 2025 15:38:13 +0545
Subject: [PATCH 02/21] Documentation edits made through Mintlify web editor
---
.../generate-presentation-over-api.mdx | 195 ++++++++++++++++++
1 file changed, 195 insertions(+)
create mode 100644 docs/tutorial/generate-presentation-over-api.mdx
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
new file mode 100644
index 00000000..46190286
--- /dev/null
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -0,0 +1,195 @@
+---
+title: "Generate Presentations via API in 5 minutes"
+description: "Steps to generate professional AI presentations via self hosted Presenton's API in just 5 minutes. "
+---
+
+In this guide, I'll walk you through a simple, straightforward way to host and use Presenton’s API for generating presentations. If you're a developer or someone building tools or automation around presentations, this approach will save you some valuable time.
+
+Before we start, I'm assuming you've already set up Presenton. If not, just quickly check out the [Quickstart](./quickstart) or [Development guide](./development).
+
+---
+
+## Step 1: Ensure Docker is Installed
+
+Presenton runs in Docker, making it easy to set up across different environments.
+
+- Don't have Docker yet? Just grab it from [here](https://www.docker.com/get-started).
+
+---
+
+## Step 2: Run Presenton Locally with Docker
+
+You're now ready to run Presenton's docker image to start generating presentations. First, you will have to decide upon the LLM provider you're going to use to generate presentations. You can go for either `OPENAI`, `GOOGLE`or `OLLAMA` . `GOOGLE` is free to start with but if you want complete control and privacy `OLLAMA` allows you to host your own model, but also requires `PEXELS`(free image library) API key.
+
+We will go with `GOOGLE` in this guide as it's relatively simpler to configure and free to start with. You will have to grab its API Key from [Google AI Studio](https://aistudio.google.com/apikey).
+
+You can find details to run with other providers in [Environment Variables](./environment-variables).
+
+Now, open your command line and execute the relevant command based on your OS:
+
+### Linux/macOS:
+
+```bash
+docker run -it --name presenton -p 5000:80 -e LLM="google" -e GOOGLE_API_KEY="***" -e CAN_CHANGE_KEYS="false" -v "./user_data:/app/user_data" ghcr.io/presenton/presenton:v0.3.0-beta
+```
+
+### Windows (PowerShell):
+
+```powershell
+docker run -it --name presenton -p 5000:80 -e LLM="google" -e GOOGLE_API_KEY="***" -e CAN_CHANGE_KEYS="false" -v "${PWD}\user_data:/app/user_data" ghcr.io/presenton/presenton:v0.3.0-beta
+```
+
+> If port `5000` is already occupied or you prefer a different port, feel free to change it.
+
+Once this step is done, you can access Presenton locally at http://localhost:5000.
+
+---
+
+## Step 3: (Optional) Configure Environment Variables
+
+Presenton supports several environment variables for customization (such as using OpenAI or local models).
+
+Typical use-cases you might encounter:
+
+- **External APIs**: [Using OpenAI or Gemini](./configurations/environment-variables).
+- **GPU Acceleration**: [Using GPUs with Presenton](./configurations/using-gpu).
+- **Local Models**: [Using Ollama and local models](./configurations/using-ollama-models).
+
+If you don't need to change anything right now, it's safe to skip this step. Return to it when you need more customization.
+
+---
+
+## Step 4: Understanding the API Endpoint
+
+Generating presentations via Presenton's API is straightforward. It has one primary endpoint:
+
+```
+POST /api/v1/ppt/generate/presentation
+```
+
+For a deeper dive later, check the full [API documentation](./mdx.docs).
+
+---
+
+## Step 5: Making your first API Call
+
+Here's how you'd quickly generate a presentation called "Introduction to Machine Learning":
+
+
+
+```bash bash
+curl -X POST http://localhost:5000/api/v1/ppt/generate/presentation \
+ -F "prompt=Introduction to Machine Learning" \
+ -F "n_slides=5" \
+ -F "language=English" \
+ -F "theme=light" \
+ -F "export_as=pptx"
+```
+
+
+```python python
+import requests
+
+response = requests.post(
+ "http://localhost:5000/api/v1/ppt/generate/presentation",
+ data={
+ "prompt": "Introduction to Machine Learning",
+ "n_slides": "5",
+ "language": "English",
+ "theme": "light",
+ "export_as": "pptx"
+ }
+)
+
+print(response.json())
+```
+
+
+```javascript javascript
+const axios = require("axios");
+const FormData = require("form-data");
+
+const form = new FormData();
+form.append("prompt", "Introduction to Machine Learning");
+form.append("n_slides", "5");
+form.append("language", "English");
+form.append("theme", "light");
+form.append("export_as", "pptx");
+
+axios.post("http://localhost:5000/api/v1/ppt/generate/presentation", form, {
+ headers: form.getHeaders()
+})
+.then(res => console.log(res.data))
+.catch(err => console.error("Error:", err.response?.data || err.message));
+```
+
+
+
+---
+
+## Step 6: API Request Parameters Explained
+
+Here's a quick reference for the key parameters you can set:
+
+| Parameter | Type | Required | Description |
+| ----------- | ------ | -------- | ---------------------------------------------------------- |
+| `prompt` | string | 👍 Yes | Topic/title of your presentation |
+| `n_slides` | int | ❌ No | Number of slides (default: 8; min: 5, max: 15) |
+| `language` | string | ❌ No | Language you'd like the presentation in (default: English) |
+| `theme` | string | ❌ No | Optional styling (e.g.: "light", "dark", "royal_blue") |
+| `documents` | file[] | ❌ No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
+| `export_as` | string | ❌ No | "pptx" or "pdf" (default: pptx) |
+
+Yes, it can generate presentations directly from most popular file formats. Make sure you understand the context window of model you're using with respect to file size.
+
+For now, these should be enough to get you going. Later, you can reference the [API docs](./mdx.docs) if needed.
+
+---
+
+## Step 7: API Response in Practice
+
+Here's what a normal, successful response looks like:
+
+```json
+{
+ "presentation_id": "d3000f96-096c-4768-b67b-e99aed029b57",
+ "path": "/static/user_data/d3000f96-096c-4768-b67b-e99aed029b57/Introduction_to_Machine_Learning.pptx",
+ "edit_path": "/presentation?id=d3000f96-096c-4768-b67b-e99aed029b57"
+}
+```
+
+- **`presentation_id`**: Keep this handy if you want to refer back later.
+- **`path`**: This is your generated PPT file. Download from here.
+- `edit_path`: A convenient URL that lets you edit your slides directly from Presenton’s built-in editor.
+
+> Note: Make sure to prepend your server's root URL to the path and edit_path fields in the response to construct valid links.
+
+---
+
+## Step 8: Built-in Presentation Themes
+
+Presenton provides easy-to-use themes for quick styling:
+
+- `light` (default, clean/professional look)
+- `dark` (ideal for coding tutorials or tech seminars)
+- `cream` (suitable for detailed reviews, proposals)
+- `royal_blue` (great for presenting to clients or external stakeholders)
+- `faint_yellow` (easy on eyes, educational slides)
+- `light_red` (highlight warnings or critical presentations)
+- `dark_pink` (marketing, creative slide decks)
+
+---
+
+## Step 9 (Optional): Advanced Customization
+
+Once you're comfortable and ready for more:
+
+- Integrate your preferred LLMS: [Environment Variables](./configurations/environment-variables).
+- Leverage GPU performance: [GPU Guide](./configurations/using-gpu).
+- Run local AI models with Ollama: [Local Models](./configurations/using-ollama-models).
+
+---
+
+**That's it\!** You've successfully generated a professional-looking presentation through an easy-to-use API endpoint.
+
+If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
\ No newline at end of file
From 200a489963d21f83c939dbcc2d83127f7952d9ea Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 16:03:46 +0545
Subject: [PATCH 03/21] Update docs.json: Add tutorial in nav
---
docs/docs.json | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/docs/docs.json b/docs/docs.json
index da477948..459793c4 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -29,6 +29,12 @@
"configurations/using-ollama-models",
"configurations/using-gpu"
]
+ },
+ {
+ "group": "Tutorials",
+ "pages": [
+ "tutorial/generate-presentation-over-api"
+ ]
}
]
}
@@ -70,4 +76,4 @@
"github": "https://github.com/presenton/presenton"
}
}
-}
\ No newline at end of file
+}
From e8c984b9ad72287d2224339adeb977858ed18677 Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 16:07:32 +0545
Subject: [PATCH 04/21] Update generate-presentation-over-api.mdx: change title
---
docs/tutorial/generate-presentation-over-api.mdx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index 46190286..8d8ed47b 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -1,5 +1,5 @@
---
-title: "Generate Presentations via API in 5 minutes"
+title: "Generate PPT via API in 5 minutes"
description: "Steps to generate professional AI presentations via self hosted Presenton's API in just 5 minutes. "
---
@@ -23,7 +23,7 @@ You're now ready to run Presenton's docker image to start generating presentatio
We will go with `GOOGLE` in this guide as it's relatively simpler to configure and free to start with. You will have to grab its API Key from [Google AI Studio](https://aistudio.google.com/apikey).
-You can find details to run with other providers in [Environment Variables](./environment-variables).
+You can find details to run with other providers in [Environment Variables](./configurations/environment-variables).
Now, open your command line and execute the relevant command based on your OS:
@@ -192,4 +192,4 @@ Once you're comfortable and ready for more:
**That's it\!** You've successfully generated a professional-looking presentation through an easy-to-use API endpoint.
-If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
\ No newline at end of file
+If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
From db4ac743af2988643a8799618defb4780ccfd4d2 Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 16:09:00 +0545
Subject: [PATCH 05/21] Update index.mdx
---
docs/index.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/index.mdx b/docs/index.mdx
index e69a746a..3ded1d50 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -15,6 +15,6 @@ Presenton is designed around three core principles:
- **Transparency** – No telemetry, no vendor lock-in, and no hidden costs.
-Whether you're building technical presentations, summarizing reports, or creating educational materials, Presenton empowers you to work **securely**, **efficiently**, and **on your own terms**—with complete freedom over your infrastructure, APIs, and data.
+Whether you're building technical presentations, summarizing reports, or creating educational materials, Presenton empowers you to work **securely**, **efficiently**, and **on your own terms**—with complete freedom over your infrastructure, APIs, and data.
-Join the open-source movement and redefine how presentations are made—\*\*your slides, your way.\*\*
\ No newline at end of file
+Join the open-source movement and redefine how presentations are made—**your slides, your way.**
From ee68a3d6db4670ecee4afd06d58e43187ea02a1d Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 16:33:01 +0545
Subject: [PATCH 06/21] Update using-presenton-api.mdx
---
docs/using-presenton-api.mdx | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/docs/using-presenton-api.mdx b/docs/using-presenton-api.mdx
index 9b2243cb..bec2bb2c 100644
--- a/docs/using-presenton-api.mdx
+++ b/docs/using-presenton-api.mdx
@@ -17,12 +17,12 @@ Use this endpoint to generate a presentation from a prompt, outline, or uploaded
| Field | Type | Required | Description |
| ----------- | -------- | -------- | --------------------------------------------------------------------- |
-| `prompt` | `string` | ✅ Yes | The main topic or subject for the presentation |
-| `n_slides` | `int` | ❌ No | Number of slides (default: 8, min: 5, max: 15) |
-| `language` | `string` | ❌ No | Language of the presentation (default: `English`) |
-| `theme` | `string` | ❌ No | Theme of the presentation (e.g., `light`, `dark`, `royal_blue`, etc.) |
-| `documents` | `file[]` | ❌ No | Optional files (PDF, PPTX, DOCX, TXT) to include |
-| `export_as` | `string` | ❌ No | Export format: `pptx` or `pdf` (default: `pptx`) |
+| `prompt` | `string` | Yes | The main topic or subject for the presentation |
+| `n_slides` | `int` | No | Number of slides (default: 8, min: 5, max: 15) |
+| `language` | `string` | No | Language of the presentation (default: `English`) |
+| `theme` | `string` | No | Theme of the presentation (e.g., `light`, `dark`, `royal_blue`, etc.) |
+| `documents` | `file[]` | No | Optional files (PDF, PPTX, DOCX, TXT) to include |
+| `export_as` | `string` | No | Export format: `pptx` or `pdf` (default: `pptx`) |
### 📤 Example Request
@@ -103,4 +103,4 @@ axios.post("http://localhost:5000/api/v1/ppt/generate/presentation", form, {
- `royal_blue`
- `faint_yellow`
- `light_red`
-- `dark_pink`
\ No newline at end of file
+- `dark_pink`
From e698312f7c984208c24d8a8533453c49559dc050 Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 16:33:35 +0545
Subject: [PATCH 07/21] Update generate-presentation-over-api.mdx
---
docs/tutorial/generate-presentation-over-api.mdx | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index 8d8ed47b..c497b5d8 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -133,12 +133,12 @@ Here's a quick reference for the key parameters you can set:
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
-| `prompt` | string | 👍 Yes | Topic/title of your presentation |
-| `n_slides` | int | ❌ No | Number of slides (default: 8; min: 5, max: 15) |
-| `language` | string | ❌ No | Language you'd like the presentation in (default: English) |
-| `theme` | string | ❌ No | Optional styling (e.g.: "light", "dark", "royal_blue") |
-| `documents` | file[] | ❌ No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
-| `export_as` | string | ❌ No | "pptx" or "pdf" (default: pptx) |
+| `prompt` | string | Yes | Topic/title of your presentation |
+| `n_slides` | int | No | Number of slides (default: 8; min: 5, max: 15) |
+| `language` | string | No | Language you'd like the presentation in (default: English) |
+| `theme` | string | No | Optional styling (e.g.: "light", "dark", "royal_blue") |
+| `documents` | file[] | No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
+| `export_as` | string | No | "pptx" or "pdf" (default: pptx) |
Yes, it can generate presentations directly from most popular file formats. Make sure you understand the context window of model you're using with respect to file size.
From 1e8d881c2ed15c18ff189965b8f648dd75ff8c25 Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Thu, 3 Jul 2025 17:03:17 +0545
Subject: [PATCH 08/21] Update generate-presentation-over-api.mdx
---
docs/tutorial/generate-presentation-over-api.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index c497b5d8..c2e0a4aa 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -164,6 +164,7 @@ Here's what a normal, successful response looks like:
> Note: Make sure to prepend your server's root URL to the path and edit_path fields in the response to construct valid links.
+It might take a minutes to generate presentation as per the number of slides and choosen LLM Provider.
---
## Step 8: Built-in Presentation Themes
From ee58e738dc125c32345c623b8d49847d4ae119e0 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 3 Jul 2025 17:52:09 +0545
Subject: [PATCH 09/21] Documentation edits made through Mintlify web editor
---
docs/docs.json | 5 +-
.../generate-presentation-from-csv.mdx.mdx | 150 ++++++++++++++++++
.../generate-presentation-over-api.mdx | 19 ++-
3 files changed, 162 insertions(+), 12 deletions(-)
create mode 100644 docs/tutorial/generate-presentation-from-csv.mdx.mdx
diff --git a/docs/docs.json b/docs/docs.json
index 459793c4..eadbefcf 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -33,7 +33,8 @@
{
"group": "Tutorials",
"pages": [
- "tutorial/generate-presentation-over-api"
+ "tutorial/generate-presentation-over-api",
+ "tutorial/generate-presentation-from-csv"
]
}
]
@@ -76,4 +77,4 @@
"github": "https://github.com/presenton/presenton"
}
}
-}
+}
\ No newline at end of file
diff --git a/docs/tutorial/generate-presentation-from-csv.mdx.mdx b/docs/tutorial/generate-presentation-from-csv.mdx.mdx
new file mode 100644
index 00000000..20a0ea0c
--- /dev/null
+++ b/docs/tutorial/generate-presentation-from-csv.mdx.mdx
@@ -0,0 +1,150 @@
+---
+title: "Create Presentations from CSV using AI"
+description: "Step-by-step guide to generating presentations from a CSV file"
+---
+
+In this tutorial, we will generate personalized student report presentations using self hosted Presenton's API and a Python script.
+
+This tutorial extends [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api) and shows you how to automate the creation of personalized student report presentations from a CSV file using Python.
+
+So, do check it before continuing with this and make sure you have Presenton running locally or any server and you are able to generate presentations with it.
+
+---
+
+## 1. Prepare Your CSV File
+
+Save your student data as `students.csv`:
+
+```csv
+Name,Final Grade,ECA Participation,Sports Involvement,Quiz Scores,Class Behavior,Comment
+Anaya Sharma,88,High,Moderate,92,Excellent,"Balanced performer with high curiosity"
+Rohan Mehta,73,Low,None,75,Good,"Needs motivation beyond academics"
+Meera Kapoor,94,Moderate,High,96,Excellent,"Academic excellence and team spirit"
+Aarav Patel,62,None,None,58,Average,"Struggling across areas, needs focused help"
+```
+
+---
+
+## 2. Install Python Requirements
+
+You’ll need the `requests` and `pandas` libraries:
+
+```bash
+pip install requests pandas
+```
+
+---
+
+## 3. Write the Python Script
+
+Let’s build the script step by step.
+
+### a. Import Libraries
+
+```python
+import os
+import pandas as pd
+import requests
+```
+
+### b. Creat presentations directory
+
+```python
+os.makedirs('presentations', exist_ok=True)
+```
+
+### c. Load the CSV
+
+```python
+df = pd.read_csv("students.csv")
+```
+
+### d. Define a Function to Build the Prompt
+
+```python
+def build_prompt(row):
+ return (
+ f"Student Name: {row['Name']}\n"
+ f"Final Grade: {row['Final Grade']}\n"
+ f"ECA Participation: {row['ECA Participation']}\n"
+ f"Sports Involvement: {row['Sports Involvement']}\n"
+ f"Quiz Scores: {row['Quiz Scores']}\n"
+ f"Class Behavior: {row['Class Behavior']}\n"
+ f"Teacher's Comment: {row['Comment']}\n\n"
+ "Generate a parent-friendly presentation summarizing this student's academic and extracurricular performance, "
+ "highlighting strengths, areas for improvement, and any special notes from the teacher."
+ )
+```
+
+### e. Loop Over Each Student and Generate a Presentation
+
+```python
+for idx, row in df.iterrows():
+ print(f"Generating presentation for {row['Name']}")
+ prompt = build_prompt(row)
+ data = {
+ "prompt": prompt,
+ "n_slides": "8",
+ "language": "English",
+ "theme": "light",
+ "export_as": "pdf"
+ }
+ response = requests.post(
+ "http://localhost:5000/api/v1/ppt/generate/presentation",
+ data=data
+ )
+ if response.ok:
+ result = response.json()
+ print("Downloading presentation...")
+ # Prepend the host to the path
+ download_url = f"http://localhost:5000{result['path']}"
+ filename = f"presentations/{result['path'].split('/')[-1]}"
+ # Download and save the file
+ file_response = requests.get(download_url)
+ if file_response.ok:
+ with open(filename, 'wb') as f:
+ f.write(file_response.content)
+ print(f"Presentation for {row['Name']} saved as {filename}")
+ else:
+ print(f"Failed to download presentation for {row['Name']}: {file_response.status_code}")
+ else:
+ print(f"Failed to generate presentation for {row['Name']}: {response.text}")
+```
+
+Generated presentations will be saved in `presentations` directory.
+
+You may change the URL `http://localhost:5000` to the URL of your Presenton instance.
+
+---
+
+## 4. Run the Script
+
+Save your script as `generate_reports.py` and run:
+
+```bash
+python generate_reports.py
+```
+
+Each student will get a personalized presentation, and you’ll see the download path for each file in your terminal.
+
+---
+
+## 5. How It Works
+
+- The script reads each row from your CSV.
+- It builds a detailed prompt for Presenton’s API (see [API Reference](./mdx.docs)).
+- It sends a POST request to generate a presentation for each student.
+- The API returns a download path for each generated PPTX.
+- The presentation file is downloaded and saved in `presentations` folder.
+
+---
+
+## 6. Next Steps
+
+- You can customize the prompt or number of slides as needed.
+- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-ppt-via-api).
+- For advanced configuration (e.g., using Ollama or GPU), see [Environment Variables](./configurations/environment-variables), [Using GPU](./configurations/using-gpu), and [Using Ollama Models](./configurations/using-ollama-models).
+
+
+ Need help? See the [full documentation](./index) or open an issue on GitHub.
+
\ No newline at end of file
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index c2e0a4aa..46190286 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -1,5 +1,5 @@
---
-title: "Generate PPT via API in 5 minutes"
+title: "Generate Presentations via API in 5 minutes"
description: "Steps to generate professional AI presentations via self hosted Presenton's API in just 5 minutes. "
---
@@ -23,7 +23,7 @@ You're now ready to run Presenton's docker image to start generating presentatio
We will go with `GOOGLE` in this guide as it's relatively simpler to configure and free to start with. You will have to grab its API Key from [Google AI Studio](https://aistudio.google.com/apikey).
-You can find details to run with other providers in [Environment Variables](./configurations/environment-variables).
+You can find details to run with other providers in [Environment Variables](./environment-variables).
Now, open your command line and execute the relevant command based on your OS:
@@ -133,12 +133,12 @@ Here's a quick reference for the key parameters you can set:
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
-| `prompt` | string | Yes | Topic/title of your presentation |
-| `n_slides` | int | No | Number of slides (default: 8; min: 5, max: 15) |
-| `language` | string | No | Language you'd like the presentation in (default: English) |
-| `theme` | string | No | Optional styling (e.g.: "light", "dark", "royal_blue") |
-| `documents` | file[] | No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
-| `export_as` | string | No | "pptx" or "pdf" (default: pptx) |
+| `prompt` | string | 👍 Yes | Topic/title of your presentation |
+| `n_slides` | int | ❌ No | Number of slides (default: 8; min: 5, max: 15) |
+| `language` | string | ❌ No | Language you'd like the presentation in (default: English) |
+| `theme` | string | ❌ No | Optional styling (e.g.: "light", "dark", "royal_blue") |
+| `documents` | file[] | ❌ No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
+| `export_as` | string | ❌ No | "pptx" or "pdf" (default: pptx) |
Yes, it can generate presentations directly from most popular file formats. Make sure you understand the context window of model you're using with respect to file size.
@@ -164,7 +164,6 @@ Here's what a normal, successful response looks like:
> Note: Make sure to prepend your server's root URL to the path and edit_path fields in the response to construct valid links.
-It might take a minutes to generate presentation as per the number of slides and choosen LLM Provider.
---
## Step 8: Built-in Presentation Themes
@@ -193,4 +192,4 @@ Once you're comfortable and ready for more:
**That's it\!** You've successfully generated a professional-looking presentation through an easy-to-use API endpoint.
-If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
+If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
\ No newline at end of file
From 125309552e7fdf2962c0879bb3788d02f6e134dc Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 3 Jul 2025 17:56:09 +0545
Subject: [PATCH 10/21] Documentation edits made through Mintlify web editor
---
.../generate-presentation-from-csv.mdx | 150 ++++++++++++++++++
1 file changed, 150 insertions(+)
create mode 100644 docs/tutorial/generate-presentation-from-csv.mdx
diff --git a/docs/tutorial/generate-presentation-from-csv.mdx b/docs/tutorial/generate-presentation-from-csv.mdx
new file mode 100644
index 00000000..20a0ea0c
--- /dev/null
+++ b/docs/tutorial/generate-presentation-from-csv.mdx
@@ -0,0 +1,150 @@
+---
+title: "Create Presentations from CSV using AI"
+description: "Step-by-step guide to generating presentations from a CSV file"
+---
+
+In this tutorial, we will generate personalized student report presentations using self hosted Presenton's API and a Python script.
+
+This tutorial extends [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api) and shows you how to automate the creation of personalized student report presentations from a CSV file using Python.
+
+So, do check it before continuing with this and make sure you have Presenton running locally or any server and you are able to generate presentations with it.
+
+---
+
+## 1. Prepare Your CSV File
+
+Save your student data as `students.csv`:
+
+```csv
+Name,Final Grade,ECA Participation,Sports Involvement,Quiz Scores,Class Behavior,Comment
+Anaya Sharma,88,High,Moderate,92,Excellent,"Balanced performer with high curiosity"
+Rohan Mehta,73,Low,None,75,Good,"Needs motivation beyond academics"
+Meera Kapoor,94,Moderate,High,96,Excellent,"Academic excellence and team spirit"
+Aarav Patel,62,None,None,58,Average,"Struggling across areas, needs focused help"
+```
+
+---
+
+## 2. Install Python Requirements
+
+You’ll need the `requests` and `pandas` libraries:
+
+```bash
+pip install requests pandas
+```
+
+---
+
+## 3. Write the Python Script
+
+Let’s build the script step by step.
+
+### a. Import Libraries
+
+```python
+import os
+import pandas as pd
+import requests
+```
+
+### b. Creat presentations directory
+
+```python
+os.makedirs('presentations', exist_ok=True)
+```
+
+### c. Load the CSV
+
+```python
+df = pd.read_csv("students.csv")
+```
+
+### d. Define a Function to Build the Prompt
+
+```python
+def build_prompt(row):
+ return (
+ f"Student Name: {row['Name']}\n"
+ f"Final Grade: {row['Final Grade']}\n"
+ f"ECA Participation: {row['ECA Participation']}\n"
+ f"Sports Involvement: {row['Sports Involvement']}\n"
+ f"Quiz Scores: {row['Quiz Scores']}\n"
+ f"Class Behavior: {row['Class Behavior']}\n"
+ f"Teacher's Comment: {row['Comment']}\n\n"
+ "Generate a parent-friendly presentation summarizing this student's academic and extracurricular performance, "
+ "highlighting strengths, areas for improvement, and any special notes from the teacher."
+ )
+```
+
+### e. Loop Over Each Student and Generate a Presentation
+
+```python
+for idx, row in df.iterrows():
+ print(f"Generating presentation for {row['Name']}")
+ prompt = build_prompt(row)
+ data = {
+ "prompt": prompt,
+ "n_slides": "8",
+ "language": "English",
+ "theme": "light",
+ "export_as": "pdf"
+ }
+ response = requests.post(
+ "http://localhost:5000/api/v1/ppt/generate/presentation",
+ data=data
+ )
+ if response.ok:
+ result = response.json()
+ print("Downloading presentation...")
+ # Prepend the host to the path
+ download_url = f"http://localhost:5000{result['path']}"
+ filename = f"presentations/{result['path'].split('/')[-1]}"
+ # Download and save the file
+ file_response = requests.get(download_url)
+ if file_response.ok:
+ with open(filename, 'wb') as f:
+ f.write(file_response.content)
+ print(f"Presentation for {row['Name']} saved as {filename}")
+ else:
+ print(f"Failed to download presentation for {row['Name']}: {file_response.status_code}")
+ else:
+ print(f"Failed to generate presentation for {row['Name']}: {response.text}")
+```
+
+Generated presentations will be saved in `presentations` directory.
+
+You may change the URL `http://localhost:5000` to the URL of your Presenton instance.
+
+---
+
+## 4. Run the Script
+
+Save your script as `generate_reports.py` and run:
+
+```bash
+python generate_reports.py
+```
+
+Each student will get a personalized presentation, and you’ll see the download path for each file in your terminal.
+
+---
+
+## 5. How It Works
+
+- The script reads each row from your CSV.
+- It builds a detailed prompt for Presenton’s API (see [API Reference](./mdx.docs)).
+- It sends a POST request to generate a presentation for each student.
+- The API returns a download path for each generated PPTX.
+- The presentation file is downloaded and saved in `presentations` folder.
+
+---
+
+## 6. Next Steps
+
+- You can customize the prompt or number of slides as needed.
+- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-ppt-via-api).
+- For advanced configuration (e.g., using Ollama or GPU), see [Environment Variables](./configurations/environment-variables), [Using GPU](./configurations/using-gpu), and [Using Ollama Models](./configurations/using-ollama-models).
+
+
+ Need help? See the [full documentation](./index) or open an issue on GitHub.
+
\ No newline at end of file
From e6fff94449ea1de697805ad7e001cbccd624bbda Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 3 Jul 2025 18:38:00 +0545
Subject: [PATCH 11/21] Documentation edits made through Mintlify web editor
---
.../generate-presentation-from-csv.mdx | 6 +-
.../generate-presentation-from-csv.mdx.mdx | 150 ------------------
.../generate-presentation-over-api.mdx | 26 +--
3 files changed, 16 insertions(+), 166 deletions(-)
delete mode 100644 docs/tutorial/generate-presentation-from-csv.mdx.mdx
diff --git a/docs/tutorial/generate-presentation-from-csv.mdx b/docs/tutorial/generate-presentation-from-csv.mdx
index 20a0ea0c..4c0dd300 100644
--- a/docs/tutorial/generate-presentation-from-csv.mdx
+++ b/docs/tutorial/generate-presentation-from-csv.mdx
@@ -132,7 +132,7 @@ Each student will get a personalized presentation, and you’ll see the download
## 5. How It Works
- The script reads each row from your CSV.
-- It builds a detailed prompt for Presenton’s API (see [API Reference](./mdx.docs)).
+- It builds a detailed prompt for Presenton’s API (see [API Reference](./generate-presentation-over-api)).
- It sends a POST request to generate a presentation for each student.
- The API returns a download path for each generated PPTX.
- The presentation file is downloaded and saved in `presentations` folder.
@@ -142,8 +142,8 @@ Each student will get a personalized presentation, and you’ll see the download
## 6. Next Steps
- You can customize the prompt or number of slides as needed.
-- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-ppt-via-api).
-- For advanced configuration (e.g., using Ollama or GPU), see [Environment Variables](./configurations/environment-variables), [Using GPU](./configurations/using-gpu), and [Using Ollama Models](./configurations/using-ollama-models).
+- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api).
+- For advanced configuration (e.g., using Ollama or GPU), see [Environment Variables](../configurations/environment-variables), [Using GPU](../configurations/using-gpu), and [Using Ollama Models](../configurations/using-ollama-models).
Need help? See the [full documentation](./index) or open an issue on GitHub.
diff --git a/docs/tutorial/generate-presentation-from-csv.mdx.mdx b/docs/tutorial/generate-presentation-from-csv.mdx.mdx
deleted file mode 100644
index 20a0ea0c..00000000
--- a/docs/tutorial/generate-presentation-from-csv.mdx.mdx
+++ /dev/null
@@ -1,150 +0,0 @@
----
-title: "Create Presentations from CSV using AI"
-description: "Step-by-step guide to generating presentations from a CSV file"
----
-
-In this tutorial, we will generate personalized student report presentations using self hosted Presenton's API and a Python script.
-
-This tutorial extends [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api) and shows you how to automate the creation of personalized student report presentations from a CSV file using Python.
-
-So, do check it before continuing with this and make sure you have Presenton running locally or any server and you are able to generate presentations with it.
-
----
-
-## 1. Prepare Your CSV File
-
-Save your student data as `students.csv`:
-
-```csv
-Name,Final Grade,ECA Participation,Sports Involvement,Quiz Scores,Class Behavior,Comment
-Anaya Sharma,88,High,Moderate,92,Excellent,"Balanced performer with high curiosity"
-Rohan Mehta,73,Low,None,75,Good,"Needs motivation beyond academics"
-Meera Kapoor,94,Moderate,High,96,Excellent,"Academic excellence and team spirit"
-Aarav Patel,62,None,None,58,Average,"Struggling across areas, needs focused help"
-```
-
----
-
-## 2. Install Python Requirements
-
-You’ll need the `requests` and `pandas` libraries:
-
-```bash
-pip install requests pandas
-```
-
----
-
-## 3. Write the Python Script
-
-Let’s build the script step by step.
-
-### a. Import Libraries
-
-```python
-import os
-import pandas as pd
-import requests
-```
-
-### b. Creat presentations directory
-
-```python
-os.makedirs('presentations', exist_ok=True)
-```
-
-### c. Load the CSV
-
-```python
-df = pd.read_csv("students.csv")
-```
-
-### d. Define a Function to Build the Prompt
-
-```python
-def build_prompt(row):
- return (
- f"Student Name: {row['Name']}\n"
- f"Final Grade: {row['Final Grade']}\n"
- f"ECA Participation: {row['ECA Participation']}\n"
- f"Sports Involvement: {row['Sports Involvement']}\n"
- f"Quiz Scores: {row['Quiz Scores']}\n"
- f"Class Behavior: {row['Class Behavior']}\n"
- f"Teacher's Comment: {row['Comment']}\n\n"
- "Generate a parent-friendly presentation summarizing this student's academic and extracurricular performance, "
- "highlighting strengths, areas for improvement, and any special notes from the teacher."
- )
-```
-
-### e. Loop Over Each Student and Generate a Presentation
-
-```python
-for idx, row in df.iterrows():
- print(f"Generating presentation for {row['Name']}")
- prompt = build_prompt(row)
- data = {
- "prompt": prompt,
- "n_slides": "8",
- "language": "English",
- "theme": "light",
- "export_as": "pdf"
- }
- response = requests.post(
- "http://localhost:5000/api/v1/ppt/generate/presentation",
- data=data
- )
- if response.ok:
- result = response.json()
- print("Downloading presentation...")
- # Prepend the host to the path
- download_url = f"http://localhost:5000{result['path']}"
- filename = f"presentations/{result['path'].split('/')[-1]}"
- # Download and save the file
- file_response = requests.get(download_url)
- if file_response.ok:
- with open(filename, 'wb') as f:
- f.write(file_response.content)
- print(f"Presentation for {row['Name']} saved as {filename}")
- else:
- print(f"Failed to download presentation for {row['Name']}: {file_response.status_code}")
- else:
- print(f"Failed to generate presentation for {row['Name']}: {response.text}")
-```
-
-Generated presentations will be saved in `presentations` directory.
-
-You may change the URL `http://localhost:5000` to the URL of your Presenton instance.
-
----
-
-## 4. Run the Script
-
-Save your script as `generate_reports.py` and run:
-
-```bash
-python generate_reports.py
-```
-
-Each student will get a personalized presentation, and you’ll see the download path for each file in your terminal.
-
----
-
-## 5. How It Works
-
-- The script reads each row from your CSV.
-- It builds a detailed prompt for Presenton’s API (see [API Reference](./mdx.docs)).
-- It sends a POST request to generate a presentation for each student.
-- The API returns a download path for each generated PPTX.
-- The presentation file is downloaded and saved in `presentations` folder.
-
----
-
-## 6. Next Steps
-
-- You can customize the prompt or number of slides as needed.
-- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-ppt-via-api).
-- For advanced configuration (e.g., using Ollama or GPU), see [Environment Variables](./configurations/environment-variables), [Using GPU](./configurations/using-gpu), and [Using Ollama Models](./configurations/using-ollama-models).
-
-
- Need help? See the [full documentation](./index) or open an issue on GitHub.
-
\ No newline at end of file
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index 46190286..d960c23b 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -5,7 +5,7 @@ description: "Steps to generate professional AI presentations via self hosted Pr
In this guide, I'll walk you through a simple, straightforward way to host and use Presenton’s API for generating presentations. If you're a developer or someone building tools or automation around presentations, this approach will save you some valuable time.
-Before we start, I'm assuming you've already set up Presenton. If not, just quickly check out the [Quickstart](./quickstart) or [Development guide](./development).
+Before we start, I'm assuming you've already set up Presenton. If not, just quickly check out the [Quickstart](../quickstart) or [Development guide](../development).
---
@@ -23,7 +23,7 @@ You're now ready to run Presenton's docker image to start generating presentatio
We will go with `GOOGLE` in this guide as it's relatively simpler to configure and free to start with. You will have to grab its API Key from [Google AI Studio](https://aistudio.google.com/apikey).
-You can find details to run with other providers in [Environment Variables](./environment-variables).
+You can find details to run with other providers in [Environment Variables](../configurations/environment-variables).
Now, open your command line and execute the relevant command based on your OS:
@@ -67,7 +67,7 @@ Generating presentations via Presenton's API is straightforward. It has one prim
POST /api/v1/ppt/generate/presentation
```
-For a deeper dive later, check the full [API documentation](./mdx.docs).
+For a deeper dive later, check the full [API documentation](../index).
---
@@ -133,12 +133,12 @@ Here's a quick reference for the key parameters you can set:
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------- |
-| `prompt` | string | 👍 Yes | Topic/title of your presentation |
-| `n_slides` | int | ❌ No | Number of slides (default: 8; min: 5, max: 15) |
-| `language` | string | ❌ No | Language you'd like the presentation in (default: English) |
-| `theme` | string | ❌ No | Optional styling (e.g.: "light", "dark", "royal_blue") |
-| `documents` | file[] | ❌ No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
-| `export_as` | string | ❌ No | "pptx" or "pdf" (default: pptx) |
+| `prompt` | string | Yes | Topic/title of your presentation |
+| `n_slides` | int | No | Number of slides (default: 8; min: 5, max: 15) |
+| `language` | string | No | Language you'd like the presentation in (default: English) |
+| `theme` | string | No | Optional styling (e.g.: "light", "dark", "royal_blue") |
+| `documents` | file[] | No | Additional supporting documents (PDF/PPTX/DOCX/TXT) |
+| `export_as` | string | No | "pptx" or "pdf" (default: pptx) |
Yes, it can generate presentations directly from most popular file formats. Make sure you understand the context window of model you're using with respect to file size.
@@ -184,12 +184,12 @@ Presenton provides easy-to-use themes for quick styling:
Once you're comfortable and ready for more:
-- Integrate your preferred LLMS: [Environment Variables](./configurations/environment-variables).
-- Leverage GPU performance: [GPU Guide](./configurations/using-gpu).
-- Run local AI models with Ollama: [Local Models](./configurations/using-ollama-models).
+- Integrate your preferred LLMS: [Environment Variables](../configurations/environment-variables).
+- Leverage GPU performance: [GPU Guide](../configurations/using-gpu).
+- Run local AI models with Ollama: [Local Models](../configurations/using-ollama-models).
---
**That's it\!** You've successfully generated a professional-looking presentation through an easy-to-use API endpoint.
-If you have more questions or want to explore further, the [complete documentation](./index) is always here to help you.
\ No newline at end of file
+If you have more questions or want to explore further, the [complete documentation](../index) is always here to help you.
\ No newline at end of file
From af2dc3fbc70fd9af56ec5b5249ffedecc1fd0c3c Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 3 Jul 2025 19:46:59 +0545
Subject: [PATCH 12/21] Documentation edits made through Mintlify web editor
---
docs/configurations/environment-variables.mdx | 4 ++++
docs/tutorial/generate-presentation-over-api.mdx | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/docs/configurations/environment-variables.mdx b/docs/configurations/environment-variables.mdx
index db3f99bf..169422df 100644
--- a/docs/configurations/environment-variables.mdx
+++ b/docs/configurations/environment-variables.mdx
@@ -19,10 +19,14 @@ Presenton can be customized and secured using environment variables. Below are t
Your OpenAI API key. Required if `LLM` is set to `"openai"`.\
_Example:_ `OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"`
+ > For image generation you might need to [Verify Organization](https://help.openai.com/en/articles/10910291-api-organization-ver)
+
- **`GOOGLE_API_KEY`**\
Your Google API key. Required if `LLM` is set to `"google"`.\
_Example:_ `GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXX"`
+ > Image generation does not work in `EU Region`. Choose Ollama or OpenAI instead.
+
- **`OLLAMA_MODEL`**\
The Ollama model name to use. Required if `LLM` is set to `"ollama"`.\
_Example:_ `OLLAMA_MODEL="llama3.2:3b"`
diff --git a/docs/tutorial/generate-presentation-over-api.mdx b/docs/tutorial/generate-presentation-over-api.mdx
index d960c23b..8ed5e6ca 100644
--- a/docs/tutorial/generate-presentation-over-api.mdx
+++ b/docs/tutorial/generate-presentation-over-api.mdx
@@ -142,7 +142,7 @@ Here's a quick reference for the key parameters you can set:
Yes, it can generate presentations directly from most popular file formats. Make sure you understand the context window of model you're using with respect to file size.
-For now, these should be enough to get you going. Later, you can reference the [API docs](./mdx.docs) if needed.
+For now, these should be enough to get you going. Later, you can reference the [API docs](../index) if needed.
---
From 5e1fa0fc3f8b9cc741cddbd6d4321b9af55b83d7 Mon Sep 17 00:00:00 2001
From: Suraj Jha
Date: Wed, 9 Jul 2025 15:47:01 +0545
Subject: [PATCH 13/21] Update quickstart.mdx: change tag of directory to
latest in docs
---
docs/quickstart.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index ae85dcf4..95aba9b8 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -8,13 +8,13 @@ description: "Follow these steps to get Presenton up and running using Docker"
#### 🔧 On Linux or macOS (Bash/Zsh):
```bash
-docker run -it --name presenton -p 5000:80 -v "./user_data:/app/user_data" ghcr.io/presenton/presenton:v0.3.0-beta
+docker run -it --name presenton -p 5000:80 -v "./user_data:/app/user_data" ghcr.io/presenton/presenton:latest
````
#### 🪟 On Windows (PowerShell):
```bash
-docker run -it --name presenton -p 5000:80 -v "${PWD}\user_data:/app/user_data" ghcr.io/presenton/presenton:v0.3.0-beta
+docker run -it --name presenton -p 5000:80 -v "${PWD}\user_data:/app/user_data" ghcr.io/presenton/presenton:latest
```
> ✅ You can replace `5000` with any other available port to avoid conflicts.
From a19612def085691a8b06063714dde026b2c96a38 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Wed, 9 Jul 2025 19:20:33 +0545
Subject: [PATCH 14/21] Documentation edits made through Mintlify web editor
---
docs/index.mdx | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/docs/index.mdx b/docs/index.mdx
index 3ded1d50..15e86aef 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -1,6 +1,6 @@
---
title: "Introduction"
-description: "Welcome to Presenton — your AI presentation generator"
+description: "Welcome to Presenton, your AI presentation generator"
---
**Presenton** is an open-source AI presentation generator that runs entirely on your local machine. Built as a powerful alternative to cloud-based tools like Gamma, Presenton offers you complete ownership of your data and full control over how presentations are generated.
@@ -10,11 +10,9 @@ With seamless support for multiple large language models (LLMs)—including **Op
Presenton is designed around three core principles:
- **Simplicity** – No complex setup or vendor-specific tooling.
-
- **Flexibility** – Choose your preferred LLM, define your own themes, and fine-tune the generation workflow.
-
- **Transparency** – No telemetry, no vendor lock-in, and no hidden costs.
-Whether you're building technical presentations, summarizing reports, or creating educational materials, Presenton empowers you to work **securely**, **efficiently**, and **on your own terms**—with complete freedom over your infrastructure, APIs, and data.
+Whether you're building technical presentations, summarizing reports, or creating educational materials, Presenton empowers you to work **securely**, **efficiently**, and **on your own terms**—with complete freedom over your infrastructure, APIs, and data.
-Join the open-source movement and redefine how presentations are made—**your slides, your way.**
+Join the open-source movement and redefine how presentations are made—**your slides, your way.**
\ No newline at end of file
From f62df06ba9b5a78c52d5e6be503e7827e3b0e491 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 00:26:18 +0545
Subject: [PATCH 15/21] Documentation edits made through Mintlify web editor
---
docs/docs.json | 3 +-
.../tutorial/create-data-reports-using-ai.mdx | 225 ++++++++++++++++++
2 files changed, 227 insertions(+), 1 deletion(-)
create mode 100644 docs/tutorial/create-data-reports-using-ai.mdx
diff --git a/docs/docs.json b/docs/docs.json
index eadbefcf..2236c79e 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -34,7 +34,8 @@
"group": "Tutorials",
"pages": [
"tutorial/generate-presentation-over-api",
- "tutorial/generate-presentation-from-csv"
+ "tutorial/generate-presentation-from-csv".
+ "tutorial/create-data-reports-using-ai"
]
}
]
diff --git a/docs/tutorial/create-data-reports-using-ai.mdx b/docs/tutorial/create-data-reports-using-ai.mdx
new file mode 100644
index 00000000..5a216313
--- /dev/null
+++ b/docs/tutorial/create-data-reports-using-ai.mdx
@@ -0,0 +1,225 @@
+---
+title: "Create Data Reports Using AI"
+description: "Step-by-step guide to generating company sales reports from a CSV file"
+---
+
+In this tutorial, we will generate detailed, multi-slide sales data reports for multiple companies using a self-hosted Presenton's API and a Python script.
+
+This tutorial extends [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api) and shows you how to automate the creation of structured sales reports from a CSV file using Python.
+
+So, do check it before continuing with this and make sure you have Presenton running locally or on any server, and you are able to generate presentations with it.
+
+---
+
+## 1. Prepare Your CSV File
+
+Save your sales data as `sales_data.csv`:
+
+```csv
+Company,Month,Region,Total Sales,Product A Sales,Product B Sales,Product C Sales,Quarter Target Achieved,Top Sales Rep,New Clients,Client Churn Rate,Growth vs Last Quarter,Marketing Spend,Customer Satisfaction,Notable Events
+AcmeCorp,2024-03,North,98000,45000,37000,16000,Yes,Sarah Dee,13,2%,5.5%,11500,8.9,"Launched B2B platform"
+AcmeCorp,2024-03,South,76800,30000,39000,7800,Yes,John Lee,9,3%,4.5%,9200,8.3,"New partnership established"
+BetaBiz,2024-03,West,82000,22000,47000,13000,No,Monica Tai,7,4%,-1.0%,10900,7.3,"Ad campaign underperformed"
+BetaBiz,2024-03,East,94500,40000,41000,13500,Yes,Derek Shah,11,2.2%,7.2%,12400,8.6,"Exceeded upsell targets"
+ZenithLtd,2024-03,Central,101300,38000,51200,12000,Yes,Rita Ganesh,14,1.1%,9.6%,13800,9.2,"Record-high client retention"
+ZenithLtd,2024-03,East,85450,25000,47000,13450,No,Marcus Bell,8,3.8%,-2.8%,10100,7.9,"Sales dip in Product C"
+GammaInc,2024-03,North,91200,39000,43000,9200,Yes,Emily Jones,10,1.5%,6.2%,11800,8.8,"Employee incentive program"
+GammaInc,2024-03,Sales Ops,79000,31000,39000,9000,No,David Yu,6,5.5%,-3.2%,8700,7.1,"System migration delayed"
+```
+
+---
+
+## 2. Install Python Requirements
+
+You’ll need the `requests` and `pandas` libraries:
+
+```bash
+pip install requests pandas
+```
+
+---
+
+## 3. Write the Python Script
+
+Let’s build the script step by step.
+
+### a. Import Libraries
+
+```python
+import os
+import pandas as pd
+import requests
+```
+
+### b. Create reports directory
+
+```python
+os.makedirs('reports', exist_ok=True)
+```
+
+### c. Load the CSV
+
+```python
+df = pd.read_csv("sales_data.csv")
+```
+
+### d. Group Data by Company
+
+```python
+company_groups = df.groupby("Company")
+```
+
+### e. Define a Function to Build the Prompt
+
+```python
+def build_prompt(company, group):
+ """
+ Build a markdown prompt with data summary, chart instructions, and slide structure.
+ """
+ summary = []
+ regions = group['Region'].unique()
+ total_sales = group['Total Sales'].sum()
+ total_clients = group['New Clients'].sum()
+ churn = group['Client Churn Rate'].mean()
+ satisfaction = group['Customer Satisfaction'].mean()
+ growth = group['Growth vs Last Quarter'].mean()
+ marketing = group['Marketing Spend'].sum()
+ notable = "; ".join(group['Notable Events'].unique())
+
+ # Markdown-structured prompt
+ prompt = f"""
+## Sales Report for {company}
+
+### 1. Executive Summary
+- Total sales: **${total_sales:,.0f}**
+- Average client churn: **{churn:.2f}%**
+- Customer satisfaction: **{satisfaction:.2f}/10**
+- Notable events: _{notable}_
+
+### 2. Regional Performance
+**Bar Chart:** Regional Total Sales
+
+| Region | Sales |
+|---|---|
+"""
+ for region in regions:
+ reg_sales = group[group['Region'] == region]['Total Sales'].sum()
+ prompt += f"| {region} | ${reg_sales:,.0f} |\n"
+
+ prompt += """
+
+### 3. Product Performance
+**Bar Chart:** Sales by Product per Region
+
+| Region | Product A | Product B | Product C |
+|---|---|---|---|
+"""
+ for region in regions:
+ gr = group[group['Region'] == region]
+ a = gr['Product A Sales'].sum()
+ b = gr['Product B Sales'].sum()
+ c = gr['Product C Sales'].sum()
+ prompt += f"| {region} | ${a:,.0f} | ${b:,.0f} | ${c:,.0f} |\n"
+
+ prompt += f"""
+
+### 4. Key Metrics & Trends
+- Aggregate new clients this month: **{total_clients}**
+- Mean growth vs last quarter: **{growth:.2f}%**
+- Total marketing spend: **${marketing:,.0f}**
+
+### 5. Top Performers
+| Region | Top Sales Rep | New Clients |
+|---|---|---|
+"""
+ for region in regions:
+ gr = group[group['Region'] == region]
+ rep = gr['Top Sales Rep'].iloc[0]
+ clients = gr['New Clients'].iloc[0]
+ prompt += f"| {region} | {rep} | {clients} |\n"
+
+ prompt += """
+
+---
+
+**Instructions:**
+- Create 1 slide per section (5 total).
+- Use clean, professional visuals.
+- For charts, display the specified bar chart with given data.
+- Use summary bullet points before every chart or table for clarity.
+**Do exactly as in said here.**
+"""
+
+ return prompt
+```
+
+### f. Loop Over Each Company and Generate a Report
+
+```python
+for company, group in company_groups:
+ print(f"Generating report for {company}")
+ prompt = build_prompt(company, group)
+ data = {
+ "prompt": prompt,
+ "n_slides": "5",
+ "language": "English",
+ "theme": "light_red",
+ "export_as": "pdf"
+ }
+ response = requests.post(
+ "http://localhost:5000/api/v1/ppt/generate/presentation",
+ data=data
+ )
+ if response.ok:
+ result = response.json()
+ print("Downloading report...")
+ download_url = f"http://localhost:5000{result['path']}"
+ filename = f"reports/{company}_Sales_Report.pdf"
+ file_response = requests.get(download_url)
+ if file_response.ok:
+ with open(filename, 'wb') as f:
+ f.write(file_response.content)
+ print(f"Report for {company} saved as {filename}")
+ else:
+ print(f"Failed to download report for {company}: {file_response.status_code}")
+ else:
+ print(f"Failed to generate report for {company}: {response.text}")
+```
+
+Generated reports will be saved in the `reports` directory.
+
+You may change the URL `http://localhost:5000` to the URL of your Presenton instance.
+
+---
+
+## 4. Run the Script
+
+Save your script as `generate_sales_reports.py` and run:
+
+```bash
+python generate_sales_reports.py
+```
+
+Each company will get a detailed, multi-slide sales report, and you’ll see the download path for each file in your terminal.
+
+---
+
+## 5. How It Works
+
+- The script reads and groups your CSV by company.
+- It builds a well-structured markdown prompt for Presenton’s API (see [API Reference](./generate-presentation-over-api)).
+- It sends a POST request to generate a report for each company.
+- The API returns a download path for each generated PDF.
+- The file is downloaded and saved in the `reports` folder.
+
+---
+
+## 6. Next Steps
+
+- You can further customize the prompt or number of slides as needed.
+- For more on API options, see [Generate a PPT via API in 5 Minutes](./generate-presentation-over-api).
+- For advanced configuration (for example, using Ollama or GPU), see [Environment Variables](../configurations/environment-variables), [Using GPU](../configurations/using-gpu), and [Using Ollama Models](../configurations/using-ollama-models).
+
+
+ Need help? See the [full documentation](./index) or open an issue on GitHub.
+
\ No newline at end of file
From 23f6ab7bb54a06d85a808872a50134026d66e7c0 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 00:29:19 +0545
Subject: [PATCH 16/21] Documentation edits made through Mintlify web editor
---
docs/docs.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/docs.json b/docs/docs.json
index 2236c79e..3029a74f 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -34,7 +34,7 @@
"group": "Tutorials",
"pages": [
"tutorial/generate-presentation-over-api",
- "tutorial/generate-presentation-from-csv".
+ "tutorial/generate-presentation-from-csv",
"tutorial/create-data-reports-using-ai"
]
}
From 387a53b829136c9eb8e86b6baea5dad6c634daaa Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 18:42:27 +0545
Subject: [PATCH 17/21] Documentation edits made through Mintlify web editor
---
docs/configurations/environment-variables.mdx | 127 +++++++++++++-----
1 file changed, 97 insertions(+), 30 deletions(-)
diff --git a/docs/configurations/environment-variables.mdx b/docs/configurations/environment-variables.mdx
index 169422df..dc406447 100644
--- a/docs/configurations/environment-variables.mdx
+++ b/docs/configurations/environment-variables.mdx
@@ -1,47 +1,114 @@
---
-title: "Environment Variables"
-description: "Configure Presenton using environment variables."
+title: "🔐 Configuring Presenton with Environment Variables"
+description: "Presenton can be customized and secured using environment variables. These variables control access, integrations, and model providers."
---
-Presenton can be customized and secured using environment variables. Below are the key variables you can set when running the app:
+### 🔧 Core Configuration
-- **`CAN_CHANGE_KEYS`**\
- Controls whether users can modify API keys through the app interface.\
- Set to `"false"` to keep keys hidden and unchangeable, or `"true"` to allow changes.\
- _Example:_ `CAN_CHANGE_KEYS="false"`
+* **`CAN_CHANGE_KEYS`**
+ Controls whether users can view or modify API keys via the interface.
+ Set to `"false"` to keep keys hidden and locked, or `"true"` to allow modification.
+ *Example:*
-- **`LLM`**\
- Select which Large Language Model provider Presenton should use.\
- Supported values: `"openai"`, `"google"`, `"ollama"`.\
- _Example:_ `LLM="openai"`
+ ```bash
+ CAN_CHANGE_KEYS="false"
+ ```
-- **`OPENAI_API_KEY`**\
- Your OpenAI API key. Required if `LLM` is set to `"openai"`.\
- _Example:_ `OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"`
+* **`LLM`**
+ Select the Large Language Model (LLM) provider to use.
+ Supported values: `"openai"`, `"google"`, `"ollama"`, `"custom"`
+ *Example:*
- > For image generation you might need to [Verify Organization](https://help.openai.com/en/articles/10910291-api-organization-ver)
+ ```bash
+ LLM="openai"
+ ```
-- **`GOOGLE_API_KEY`**\
- Your Google API key. Required if `LLM` is set to `"google"`.\
- _Example:_ `GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXX"`
+### 🧠 Model Provider Specific Variables
- > Image generation does not work in `EU Region`. Choose Ollama or OpenAI instead.
+#### 🔹 OpenAI
-- **`OLLAMA_MODEL`**\
- The Ollama model name to use. Required if `LLM` is set to `"ollama"`.\
- _Example:_ `OLLAMA_MODEL="llama3.2:3b"`
-
-- **`PEXELS_API_KEY`**\
- API key for the Pexels image service. Optional but recommended when using Ollama models to enhance image search.\
- _Example:_ `PEXELS_API_KEY="vzXXXXXXXXXXXXXX"`
+* **`OPENAI_API_KEY`**
+ Required if `LLM="openai"`
+ *Example:*
-### Example: Running Presenton with Environment Variables
+ ```bash
+ OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
+ ```
+
+#### 🔹 Google
+
+* **`GOOGLE_API_KEY`**
+ Required if `LLM="google"`
+ *Example:*
+
+ ```bash
+ GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXX"
+ ```
+ > ⚠️ Image generation is not supported in EU regions with Google.
+
+#### 🔹 Ollama
+
+* **`OLLAMA_URL`**
+ (Optional) URL of your custom Ollama server. Useful if you're self-hosting.
+ *Example:*
+
+ ```bash
+ OLLAMA_URL="http://localhost:11434"
+ ```
+
+* **`OLLAMA_MODEL`**
+ Required if `LLM="ollama"`
+ *Example:*
+
+ ```bash
+ OLLAMA_MODEL="llama3.2:3b"
+ ```
+
+#### 🔹 Custom (OpenAI-compatible LLMs)
+
+* **`CUSTOM_LLM_URL`**
+ Required if `LLM="custom"`
+ *Example:*
+
+ ```bash
+ CUSTOM_LLM_URL="https://api.your-custom-llm.com/v1"
+ ```
+
+* **`CUSTOM_LLM_API_KEY`**
+ Required if `LLM="custom"`
+ *Example:*
+
+ ```bash
+ CUSTOM_LLM_API_KEY="your_custom_key"
+ ```
+
+* **`CUSTOM_MODEL`**
+ Required if `LLM="custom"`
+ *Example:*
+
+ ```bash
+ CUSTOM_MODEL="llama3.2:3b"
+ ```
+
+### 🖼️ Image Enhancement
+
+* **`PEXELS_API_KEY`**
+ (Optional) Used to fetch high-quality stock images when using `ollama` or `custom` models.
+ *Example:*
+
+ ```bash
+ PEXELS_API_KEY="vzXXXXXXXXXXXXXX"
+ ```
+
+### 🐳 Docker Example
```bash
docker run -it --name presenton -p 5000:80 \
- -e LLM="openai" \
- -e OPENAI_API_KEY="your_openai_api_key" \
+ -e LLM="ollama" \
+ -e OLLAMA_MODEL="llama3.2:3b" \
+ -e OLLAMA_URL="http://localhost:11434" \
-e CAN_CHANGE_KEYS="false" \
+ -e PEXELS_API_KEY="your_pexels_key" \
-v "./user_data:/app/user_data" \
- ghcr.io/presenton/presenton:v0.3.0-beta
+ ghcr.io/presenton/presenton:latest
```
\ No newline at end of file
From 8af4e48c67de7fedb9aa96bd8969ab26a420d7ae Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 18:43:54 +0545
Subject: [PATCH 18/21] Documentation edits made through Mintlify web editor
---
docs/configurations/environment-variables.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/configurations/environment-variables.mdx b/docs/configurations/environment-variables.mdx
index dc406447..5aaa5deb 100644
--- a/docs/configurations/environment-variables.mdx
+++ b/docs/configurations/environment-variables.mdx
@@ -1,5 +1,5 @@
---
-title: "🔐 Configuring Presenton with Environment Variables"
+title: "Environment Variables"
description: "Presenton can be customized and secured using environment variables. These variables control access, integrations, and model providers."
---
From d0cc14d29be4dc29a44e36eb81ce736e3de3c98b Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 18:57:47 +0545
Subject: [PATCH 19/21] Documentation edits made through Mintlify web editor
---
docs/configurations/using-ollama-models.mdx | 53 ++++++++++++++++++---
1 file changed, 47 insertions(+), 6 deletions(-)
diff --git a/docs/configurations/using-ollama-models.mdx b/docs/configurations/using-ollama-models.mdx
index a762f7eb..4db93e95 100644
--- a/docs/configurations/using-ollama-models.mdx
+++ b/docs/configurations/using-ollama-models.mdx
@@ -3,13 +3,11 @@ title: "Using Ollama Models"
description: "Follow these steps to generate presentations using Ollama"
---
-Presenton supports running fully offline using open-source models via [Ollama](https://ollama.com/). This allows you to generate presentations without relying on cloud APIs — keeping your data private and costs low.
+## 🔌 Run Presenton with an Ollama Model (Fully Offline)
-### 🚀 Run Presenton with an Ollama Model
+Presenton supports fully offline operation using open-source models via [Ollama](https://ollama.com/). This allows you to generate presentations without relying on cloud APIs — keeping your data private and costs low.
-Make sure you have [Ollama installed](https://ollama.com/download) and models downloaded if running them outside Docker.
-
-To run Presenton with an Ollama model:
+### 🚀 Example: Run Presenton with Ollama
```bash
docker run -it --name presenton -p 5000:80 \
@@ -21,7 +19,50 @@ docker run -it --name presenton -p 5000:80 \
ghcr.io/presenton/presenton:v0.3.0-beta
```
-> 💡 **Note:** A valid **Pexels API key is required** for image generation when using Ollama models.
+### 🚀 Example: Run Presenton with you own Ollama server
+
+```bash
+docker run -it --name presenton -p 5000:80 \
+ -e LLM="ollama" \
+ -e OLLAMA_MODEL="llama3.2:3b" \
+ -e OLLAMA_URL="http://XXXXXXXXXXXXX" \
+ -e PEXELS_API_KEY="your_pexels_api_key" \
+ -e CAN_CHANGE_KEYS="false" \
+ -v "./user_data:/app/user_data" \
+ ghcr.io/presenton/presenton:v0.3.0-beta
+```
+
+
+### 🧾 Ollama Environment Variables
+
+* **`LLM="ollama"`**
+ Select Ollama as the LLM backend.
+
+* **`OLLAMA_MODEL`**
+ Required. The Ollama model to use (e.g., `llama3.2:3b`, `mistral`, `phi3`, etc.).
+ *Example:*
+
+ ```bash
+ OLLAMA_MODEL="llama3.2:3b"
+ ```
+
+* **`OLLAMA_URL`**
+ Optional. Set this if you're running Ollama outside Docker or on a custom host.
+ *Example:*
+
+ ```bash
+ OLLAMA_URL="http://XXXXXXXXXXXX"
+ ```
+
+* **`PEXELS_API_KEY`**
+ Optional but recommended. Used to fetch stock images for enhanced visuals.
+ *Example:*
+
+ ```bash
+ PEXELS_API_KEY="vzXXXXXXXXXXXXXX"
+ ```
+
+> 💡 **Note:** Provide a valid **Pexels API key** for image generation when using Ollama models.
> You can get a free API key at https://www.pexels.com/api/
> ✅ Add `--gpus=all` to enable GPU acceleration (see [Using GPU](/docs/configurations/using-gpu)).
From ff4d7c59c61812cbb19b68f50dc6671ff9e73da6 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 19:16:03 +0545
Subject: [PATCH 20/21] Documentation edits made through Mintlify web editor
---
docs/configurations/using-custom-llm.mdx | 30 +++++++++++++++++++++
docs/configurations/using-gpu.mdx | 2 +-
docs/configurations/using-ollama-models.mdx | 4 +--
docs/development.mdx | 6 +++++
4 files changed, 39 insertions(+), 3 deletions(-)
create mode 100644 docs/configurations/using-custom-llm.mdx
diff --git a/docs/configurations/using-custom-llm.mdx b/docs/configurations/using-custom-llm.mdx
new file mode 100644
index 00000000..e4db8d8f
--- /dev/null
+++ b/docs/configurations/using-custom-llm.mdx
@@ -0,0 +1,30 @@
+---
+title: 'Using OpenAI-Compatible APIs'
+description: 'Presenton supports OpenAI-compatible APIs, allowing you to connect to any custom LLM backend that follows the OpenAI API format.'
+---
+
+### 🌐 Example: Run Presenton with a Custom LLM
+
+```bash
+docker run -it --name presenton -p 5000:80 \
+ -e LLM="custom" \
+ -e CUSTOM_LLM_URL="http://XXXXXXXXXXX/v1" \
+ -e CUSTOM_LLM_API_KEY="your_custom_api_key" \
+ -e CUSTOM_MODEL="your-model-name" \
+ -e CAN_CHANGE_KEYS="false" \
+ -v "./user_data:/app/user_data" \
+ ghcr.io/presenton/presenton:latest
+```
+
+---
+
+### 🔧 Environment Variables for Custom LLM
+
+| Variable | Description |
+| -------------------- | ----------------------------------------------------------------------- |
+| `LLM="custom"` | Use the `custom` value to enable OpenAI-compatible API support |
+| `CUSTOM_LLM_URL` | Base URL of your OpenAI-compatible API (e.g. `http://XXXXXXXXXXX/v1`) |
+| `CUSTOM_LLM_API_KEY` | API key used for authorization (`Bearer` header) |
+| `CUSTOM_MODEL` | ID of the model to use (as defined by your API provider) |
+| `PEXELS_API_KEY` | *(Optional)* Used to fetch high-quality images to enhance presentations |
+| `CAN_CHANGE_KEYS` | Set to `false` to hide API keys from the frontend |
\ No newline at end of file
diff --git a/docs/configurations/using-gpu.mdx b/docs/configurations/using-gpu.mdx
index 6c3c106a..8af32213 100644
--- a/docs/configurations/using-gpu.mdx
+++ b/docs/configurations/using-gpu.mdx
@@ -33,5 +33,5 @@ docker run -it --name presenton --gpus=all -p 5000:80 \
-e PEXELS_API_KEY="your_pexels_api_key" \
-e CAN_CHANGE_KEYS="false" \
-v "./user_data:/app/user_data" \
- ghcr.io/presenton/presenton:v0.3.0-beta
+ ghcr.io/presenton/presenton:latest
```
\ No newline at end of file
diff --git a/docs/configurations/using-ollama-models.mdx b/docs/configurations/using-ollama-models.mdx
index 4db93e95..ca84bcc6 100644
--- a/docs/configurations/using-ollama-models.mdx
+++ b/docs/configurations/using-ollama-models.mdx
@@ -16,7 +16,7 @@ docker run -it --name presenton -p 5000:80 \
-e PEXELS_API_KEY="your_pexels_api_key" \
-e CAN_CHANGE_KEYS="false" \
-v "./user_data:/app/user_data" \
- ghcr.io/presenton/presenton:v0.3.0-beta
+ ghcr.io/presenton/presenton:latest
```
### 🚀 Example: Run Presenton with you own Ollama server
@@ -29,7 +29,7 @@ docker run -it --name presenton -p 5000:80 \
-e PEXELS_API_KEY="your_pexels_api_key" \
-e CAN_CHANGE_KEYS="false" \
-v "./user_data:/app/user_data" \
- ghcr.io/presenton/presenton:v0.3.0-beta
+ ghcr.io/presenton/presenton:latest
```
diff --git a/docs/development.mdx b/docs/development.mdx
index 65fd3dce..ca7f7e9e 100644
--- a/docs/development.mdx
+++ b/docs/development.mdx
@@ -19,9 +19,15 @@ cd presenton
Build and start the development environment using Docker Compose:
+- Without GPU
+
```bash
docker compose up development --build
```
+- With GPU
+```bash
+docker compose up development-gpu --build
+```
This command will build the development container and start the app. Once running, you can access Presenton at:
From 997a7c6c2b772bc1ef3f4e3910639aa921c0fce5 Mon Sep 17 00:00:00 2001
From: Saurav Niraula <52109383+sauravniraula@users.noreply.github.com>
Date: Thu, 10 Jul 2025 19:16:49 +0545
Subject: [PATCH 21/21] Documentation edits made through Mintlify web editor
---
docs/docs.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/docs.json b/docs/docs.json
index 3029a74f..31050975 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -27,6 +27,7 @@
"pages": [
"configurations/environment-variables",
"configurations/using-ollama-models",
+ "configurations/using-custom-llm",
"configurations/using-gpu"
]
},