Merge branch 'main' into removes_langchain
This commit is contained in:
commit
d8ee4e5881
24 changed files with 1357 additions and 0 deletions
32
docs/README.md
Normal file
32
docs/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Mintlify Starter Kit
|
||||
|
||||
Click on `Use this template` to copy the Mintlify starter kit. The starter kit contains examples including
|
||||
|
||||
- Guide pages
|
||||
- Navigation
|
||||
- Customizations
|
||||
- API Reference pages
|
||||
- Use of popular components
|
||||
|
||||
### Development
|
||||
|
||||
Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command
|
||||
|
||||
```
|
||||
npm i -g mintlify
|
||||
```
|
||||
|
||||
Run the following command at the root of your documentation (where docs.json is)
|
||||
|
||||
```
|
||||
mintlify dev
|
||||
```
|
||||
|
||||
### Publishing Changes
|
||||
|
||||
Install our Github App to auto propagate changes from your repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard.
|
||||
|
||||
#### Troubleshooting
|
||||
|
||||
- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.
|
||||
- Page loads as a 404 - Make sure you are running in a folder with `docs.json`
|
||||
4
docs/api-reference/endpoint/create.mdx
Normal file
4
docs/api-reference/endpoint/create.mdx
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: 'Create Plant'
|
||||
openapi: 'POST /plants'
|
||||
---
|
||||
4
docs/api-reference/endpoint/delete.mdx
Normal file
4
docs/api-reference/endpoint/delete.mdx
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: 'Delete Plant'
|
||||
openapi: 'DELETE /plants/{id}'
|
||||
---
|
||||
4
docs/api-reference/endpoint/get.mdx
Normal file
4
docs/api-reference/endpoint/get.mdx
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: 'Get Plants'
|
||||
openapi: 'GET /plants'
|
||||
---
|
||||
4
docs/api-reference/endpoint/webhook.mdx
Normal file
4
docs/api-reference/endpoint/webhook.mdx
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: 'New Plant'
|
||||
openapi: 'WEBHOOK /plant/webhook'
|
||||
---
|
||||
33
docs/api-reference/introduction.mdx
Normal file
33
docs/api-reference/introduction.mdx
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
title: 'Introduction'
|
||||
description: 'Example section for showcasing API endpoints'
|
||||
---
|
||||
|
||||
<Note>
|
||||
If you're not looking to build API reference documentation, you can delete
|
||||
this section by removing the api-reference folder.
|
||||
</Note>
|
||||
|
||||
## Welcome
|
||||
|
||||
There are two ways to build API documentation: [OpenAPI](https://mintlify.com/docs/api-playground/openapi/setup) and [MDX components](https://mintlify.com/docs/api-playground/mdx/configuration). For the starter kit, we are using the following OpenAPI specification.
|
||||
|
||||
<Card
|
||||
title="Plant Store Endpoints"
|
||||
icon="leaf"
|
||||
href="https://github.com/mintlify/starter/blob/main/api-reference/openapi.json"
|
||||
>
|
||||
View the OpenAPI specification file
|
||||
</Card>
|
||||
|
||||
## Authentication
|
||||
|
||||
All API endpoints are authenticated using Bearer tokens and picked up from the specification file.
|
||||
|
||||
```json
|
||||
"security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
]
|
||||
```
|
||||
217
docs/api-reference/openapi.json
Normal file
217
docs/api-reference/openapi.json
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
{
|
||||
"openapi": "3.1.0",
|
||||
"info": {
|
||||
"title": "OpenAPI Plant Store",
|
||||
"description": "A sample API that uses a plant store as an example to demonstrate features in the OpenAPI specification",
|
||||
"license": {
|
||||
"name": "MIT"
|
||||
},
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "http://sandbox.mintlify.com"
|
||||
}
|
||||
],
|
||||
"security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"/plants": {
|
||||
"get": {
|
||||
"description": "Returns all plants from the system that the user has access to",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "limit",
|
||||
"in": "query",
|
||||
"description": "The maximum number of results to return",
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Plant response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Plant"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Unexpected error",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"description": "Creates a new plant in the store",
|
||||
"requestBody": {
|
||||
"description": "Plant to add to the store",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/NewPlant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "plant response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Plant"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "unexpected error",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/plants/{id}": {
|
||||
"delete": {
|
||||
"description": "Deletes a single plant based on the ID supplied",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "ID of plant to delete",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "Plant deleted",
|
||||
"content": {}
|
||||
},
|
||||
"400": {
|
||||
"description": "unexpected error",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/Error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"webhooks": {
|
||||
"/plant/webhook": {
|
||||
"post": {
|
||||
"description": "Information about a new plant added to the store",
|
||||
"requestBody": {
|
||||
"description": "Plant added to the store",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/NewPlant"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Return a 200 status to indicate that the data was received successfully"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"schemas": {
|
||||
"Plant": {
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "The name of the plant",
|
||||
"type": "string"
|
||||
},
|
||||
"tag": {
|
||||
"description": "Tag to specify the type",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"NewPlant": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/Plant"
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "Identification number of the plant",
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"Error": {
|
||||
"required": [
|
||||
"error",
|
||||
"message"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"error": {
|
||||
"type": "integer",
|
||||
"format": "int32"
|
||||
},
|
||||
"message": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"securitySchemes": {
|
||||
"bearerAuth": {
|
||||
"type": "http",
|
||||
"scheme": "bearer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
43
docs/configurations/environment-variables.mdx
Normal file
43
docs/configurations/environment-variables.mdx
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: "Environment Variables"
|
||||
description: "Configure Presenton using environment variables."
|
||||
---
|
||||
|
||||
Presenton can be customized and secured using environment variables. Below are the key variables you can set when running the app:
|
||||
|
||||
- **`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"`
|
||||
|
||||
- **`LLM`**\
|
||||
Select which Large Language Model provider Presenton should use.\
|
||||
Supported values: `"openai"`, `"google"`, `"ollama"`.\
|
||||
_Example:_ `LLM="openai"`
|
||||
|
||||
- **`OPENAI_API_KEY`**\
|
||||
Your OpenAI API key. Required if `LLM` is set to `"openai"`.\
|
||||
_Example:_ `OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"`
|
||||
|
||||
- **`GOOGLE_API_KEY`**\
|
||||
Your Google API key. Required if `LLM` is set to `"google"`.\
|
||||
_Example:_ `GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXX"`
|
||||
|
||||
- **`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"`
|
||||
|
||||
### Example: Running Presenton with Environment Variables
|
||||
|
||||
```bash
|
||||
docker run -it --name presenton -p 5000:80 \
|
||||
-e LLM="openai" \
|
||||
-e OPENAI_API_KEY="your_openai_api_key" \
|
||||
-e CAN_CHANGE_KEYS="false" \
|
||||
-v "./user_data:/app/user_data" \
|
||||
ghcr.io/presenton/presenton:v0.3.0-beta
|
||||
```
|
||||
37
docs/configurations/using-gpu.mdx
Normal file
37
docs/configurations/using-gpu.mdx
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
title: "Using GPU"
|
||||
description: "Runing Ollama models on GPU"
|
||||
---
|
||||
|
||||
Presenton supports GPU acceleration when using Ollama models, significantly improving performance — especially for larger models.
|
||||
|
||||
To enable GPU support, you need to install and configure the **NVIDIA Container Toolkit**.
|
||||
|
||||
### 🛠️ Step 1: Install NVIDIA Container Toolkit
|
||||
|
||||
Follow the official guide to install the toolkit:\
|
||||
👉 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
|
||||
|
||||
### 🚀 Step 2: Run Presenton with GPU
|
||||
|
||||
Once installed, use the `--gpus=all` flag when running the container:
|
||||
|
||||
- **Running without environment variables**
|
||||
|
||||
```bash
|
||||
docker run -it --name presenton --gpus=all -p 5000:80 \
|
||||
-v "./user_data:/app/user_data" \
|
||||
ghcr.io/presenton/presenton:v0.3.0-beta
|
||||
```
|
||||
|
||||
- **Running with environment variables**
|
||||
|
||||
```bash
|
||||
docker run -it --name presenton --gpus=all -p 5000:80 \
|
||||
-e LLM="ollama" \
|
||||
-e OLLAMA_MODEL="llama3.2:3b" \
|
||||
-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
|
||||
```
|
||||
73
docs/configurations/using-ollama-models.mdx
Normal file
73
docs/configurations/using-ollama-models.mdx
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
```bash
|
||||
docker run -it --name presenton -p 5000:80 \
|
||||
-e LLM="ollama" \
|
||||
-e OLLAMA_MODEL="llama3.2:3b" \
|
||||
-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
|
||||
```
|
||||
|
||||
> 💡 **Note:** A valid **Pexels API key is required** 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)).
|
||||
|
||||
### 🧠 Supported Ollama Models
|
||||
|
||||
| Model | Size | Graph Support |
|
||||
| ------------------- | ------ | ------------- |
|
||||
| **Llama Models** | | |
|
||||
| `llama3:8b` | 4.7 GB | ❌ No |
|
||||
| `llama3:70b` | 40 GB | ✅ Yes |
|
||||
| `llama3.1:8b` | 4.9 GB | ❌ No |
|
||||
| `llama3.1:70b` | 43 GB | ✅ Yes |
|
||||
| `llama3.1:405b` | 243 GB | ✅ Yes |
|
||||
| `llama3.2:1b` | 1.3 GB | ❌ No |
|
||||
| `llama3.2:3b` | 2 GB | ❌ No |
|
||||
| `llama3.3:70b` | 43 GB | ✅ Yes |
|
||||
| `llama4:16x17b` | 67 GB | ✅ Yes |
|
||||
| `llama4:128x17b` | 245 GB | ✅ Yes |
|
||||
| **Gemma Models** | | |
|
||||
| `gemma3:1b` | 815 MB | ❌ No |
|
||||
| `gemma3:4b` | 3.3 GB | ❌ No |
|
||||
| `gemma3:12b` | 8.1 GB | ❌ No |
|
||||
| `gemma3:27b` | 17 GB | ✅ Yes |
|
||||
| **DeepSeek Models** | | |
|
||||
| `deepseek-r1:1.5b` | 1.1 GB | ❌ No |
|
||||
| `deepseek-r1:7b` | 4.7 GB | ❌ No |
|
||||
| `deepseek-r1:8b` | 5.2 GB | ❌ No |
|
||||
| `deepseek-r1:14b` | 9 GB | ❌ No |
|
||||
| `deepseek-r1:32b` | 20 GB | ✅ Yes |
|
||||
| `deepseek-r1:70b` | 43 GB | ✅ Yes |
|
||||
| `deepseek-r1:671b` | 404 GB | ✅ Yes |
|
||||
| **Qwen Models** | | |
|
||||
| `qwen3:0.6b` | 523 MB | ❌ No |
|
||||
| `qwen3:1.7b` | 1.4 GB | ❌ No |
|
||||
| `qwen3:4b` | 2.6 GB | ❌ No |
|
||||
| `qwen3:8b` | 5.2 GB | ❌ No |
|
||||
| `qwen3:14b` | 9.3 GB | ❌ No |
|
||||
| `qwen3:30b` | 19 GB | ✅ Yes |
|
||||
| `qwen3:32b` | 20 GB | ✅ Yes |
|
||||
| `qwen3:235b` | 142 GB | ✅ Yes |
|
||||
|
||||
> ✅ **Graph Support** means the model can generate charts and diagrams in presentations.
|
||||
|
||||
### 📌 Additional Notes
|
||||
|
||||
- Use the `OLLAMA_MODEL` environment variable to select any supported model.
|
||||
- Ensure your system has enough RAM or GPU memory to handle the model.
|
||||
- Always include a `PEXELS_API_KEY` for full image generation functionality.
|
||||
35
docs/development.mdx
Normal file
35
docs/development.mdx
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
title: 'Development'
|
||||
description: 'Run and test Presenton locally to develop features, make changes, and preview updates in a safe development environment'
|
||||
---
|
||||
|
||||
<Info>
|
||||
**Prerequisite**: Please install Docker on your machine before proceeding. <br />
|
||||
You can get Docker from [https://www.docker.com/get-started](https://www.docker.com/get-started).
|
||||
</Info>
|
||||
|
||||
### Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/presenton/presenton.git
|
||||
cd presenton
|
||||
````
|
||||
|
||||
### Run with Docker Compose
|
||||
|
||||
Build and start the development environment using Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose up development --build
|
||||
```
|
||||
|
||||
This command will build the development container and start the app. Once running, you can access Presenton at:
|
||||
|
||||
```
|
||||
http://localhost:5000
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
* The `development` service includes live reload and debugging support for easier development.
|
||||
* To stop the environment, press `Ctrl + C` and then run `docker compose down` to clean up.
|
||||
72
docs/docs.json
Normal file
72
docs/docs.json
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"$schema": "https://mintlify.com/docs.json",
|
||||
"theme": "mint",
|
||||
"name": "Presenton Documentation",
|
||||
"colors": {
|
||||
"primary": "#4a2ea6",
|
||||
"light": "#5b39cb",
|
||||
"dark": "#3a2481"
|
||||
},
|
||||
"favicon": "/favicon.svg",
|
||||
"navigation": {
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "Guides",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Get Started",
|
||||
"pages": [
|
||||
"index",
|
||||
"quickstart",
|
||||
"development"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Configurations",
|
||||
"pages": [
|
||||
"configurations/environment-variables",
|
||||
"configurations/using-ollama-models",
|
||||
"configurations/using-gpu"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"global": {
|
||||
"anchors": [
|
||||
{
|
||||
"anchor": "Community",
|
||||
"href": "https://discord.gg/xmJkX8G6",
|
||||
"icon": "discord"
|
||||
},
|
||||
{
|
||||
"anchor": "Blog",
|
||||
"href": "https://presenton.ai/blogs",
|
||||
"icon": "newspaper"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"logo": {
|
||||
"light": "/logo/light.svg",
|
||||
"dark": "/logo/dark.svg"
|
||||
},
|
||||
"navbar": {
|
||||
"links": [
|
||||
{
|
||||
"label": "Support",
|
||||
"href": "mailto:suraj@presenton.ai"
|
||||
}
|
||||
],
|
||||
"primary": {
|
||||
"type": "button",
|
||||
"label": "Dashboard",
|
||||
"href": "https://presenton.ai/dashboard"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"socials": {
|
||||
"github": "https://github.com/presenton/presenton"
|
||||
}
|
||||
}
|
||||
}
|
||||
37
docs/essentials/code.mdx
Normal file
37
docs/essentials/code.mdx
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
title: 'Code Blocks'
|
||||
description: 'Display inline code and code blocks'
|
||||
icon: 'code'
|
||||
---
|
||||
|
||||
## Basic
|
||||
|
||||
### Inline Code
|
||||
|
||||
To denote a `word` or `phrase` as code, enclose it in backticks (`).
|
||||
|
||||
```
|
||||
To denote a `word` or `phrase` as code, enclose it in backticks (`).
|
||||
```
|
||||
|
||||
### Code Block
|
||||
|
||||
Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
|
||||
|
||||
```java HelloWorld.java
|
||||
class HelloWorld {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello, World!");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
````md
|
||||
```java HelloWorld.java
|
||||
class HelloWorld {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello, World!");
|
||||
}
|
||||
}
|
||||
```
|
||||
````
|
||||
59
docs/essentials/images.mdx
Normal file
59
docs/essentials/images.mdx
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
---
|
||||
title: 'Images and Embeds'
|
||||
description: 'Add image, video, and other HTML elements'
|
||||
icon: 'image'
|
||||
---
|
||||
|
||||
<img
|
||||
style={{ borderRadius: '0.5rem' }}
|
||||
src="https://mintlify-assets.b-cdn.net/bigbend.jpg"
|
||||
/>
|
||||
|
||||
## Image
|
||||
|
||||
### Using Markdown
|
||||
|
||||
The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code
|
||||
|
||||
```md
|
||||

|
||||
```
|
||||
|
||||
Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed.
|
||||
|
||||
### Using Embeds
|
||||
|
||||
To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images
|
||||
|
||||
```html
|
||||
<img height="200" src="/path/image.jpg" />
|
||||
```
|
||||
|
||||
## Embeds and HTML elements
|
||||
|
||||
<iframe
|
||||
width="560"
|
||||
height="315"
|
||||
src="https://www.youtube.com/embed/4KzFe50RQkQ"
|
||||
title="YouTube video player"
|
||||
frameBorder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
style={{ width: '100%', borderRadius: '0.5rem' }}
|
||||
></iframe>
|
||||
|
||||
<br />
|
||||
|
||||
<Tip>
|
||||
|
||||
Mintlify supports [HTML tags in Markdown](https://www.markdownguide.org/basic-syntax/#html). This is helpful if you prefer HTML tags to Markdown syntax, and lets you create documentation with infinite flexibility.
|
||||
|
||||
</Tip>
|
||||
|
||||
### iFrames
|
||||
|
||||
Loads another HTML page within the document. Most commonly used for embedding videos.
|
||||
|
||||
```html
|
||||
<iframe src="https://www.youtube.com/embed/4KzFe50RQkQ"> </iframe>
|
||||
```
|
||||
88
docs/essentials/markdown.mdx
Normal file
88
docs/essentials/markdown.mdx
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
title: 'Markdown Syntax'
|
||||
description: 'Text, title, and styling in standard markdown'
|
||||
icon: 'text-size'
|
||||
---
|
||||
|
||||
## Titles
|
||||
|
||||
Best used for section headers.
|
||||
|
||||
```md
|
||||
## Titles
|
||||
```
|
||||
|
||||
### Subtitles
|
||||
|
||||
Best use to subsection headers.
|
||||
|
||||
```md
|
||||
### Subtitles
|
||||
```
|
||||
|
||||
<Tip>
|
||||
|
||||
Each **title** and **subtitle** creates an anchor and also shows up on the table of contents on the right.
|
||||
|
||||
</Tip>
|
||||
|
||||
## Text Formatting
|
||||
|
||||
We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
|
||||
|
||||
| Style | How to write it | Result |
|
||||
| ------------- | ----------------- | --------------- |
|
||||
| Bold | `**bold**` | **bold** |
|
||||
| Italic | `_italic_` | _italic_ |
|
||||
| Strikethrough | `~strikethrough~` | ~strikethrough~ |
|
||||
|
||||
You can combine these. For example, write `**_bold and italic_**` to get **_bold and italic_** text.
|
||||
|
||||
You need to use HTML to write superscript and subscript text. That is, add `<sup>` or `<sub>` around your text.
|
||||
|
||||
| Text Size | How to write it | Result |
|
||||
| ----------- | ------------------------ | ---------------------- |
|
||||
| Superscript | `<sup>superscript</sup>` | <sup>superscript</sup> |
|
||||
| Subscript | `<sub>subscript</sub>` | <sub>subscript</sub> |
|
||||
|
||||
## Linking to Pages
|
||||
|
||||
You can add a link by wrapping text in `[]()`. You would write `[link to google](https://google.com)` to [link to google](https://google.com).
|
||||
|
||||
Links to pages in your docs need to be root-relative. Basically, you should include the entire folder path. For example, `[link to text](/writing-content/text)` links to the page "Text" in our components section.
|
||||
|
||||
Relative links like `[link to text](../text)` will open slower because we cannot optimize them as easily.
|
||||
|
||||
## Blockquotes
|
||||
|
||||
### Singleline
|
||||
|
||||
To create a blockquote, add a `>` in front of a paragraph.
|
||||
|
||||
> Dorothy followed her through many of the beautiful rooms in her castle.
|
||||
|
||||
```md
|
||||
> Dorothy followed her through many of the beautiful rooms in her castle.
|
||||
```
|
||||
|
||||
### Multiline
|
||||
|
||||
> Dorothy followed her through many of the beautiful rooms in her castle.
|
||||
>
|
||||
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
|
||||
|
||||
```md
|
||||
> Dorothy followed her through many of the beautiful rooms in her castle.
|
||||
>
|
||||
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
|
||||
```
|
||||
|
||||
### LaTeX
|
||||
|
||||
Mintlify supports [LaTeX](https://www.latex-project.org) through the Latex component.
|
||||
|
||||
<Latex>8 x (vk x H1 - H2) = (0,1)</Latex>
|
||||
|
||||
```md
|
||||
<Latex>8 x (vk x H1 - H2) = (0,1)</Latex>
|
||||
```
|
||||
87
docs/essentials/navigation.mdx
Normal file
87
docs/essentials/navigation.mdx
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
---
|
||||
title: 'Navigation'
|
||||
description: 'The navigation field in docs.json defines the pages that go in the navigation menu'
|
||||
icon: 'map'
|
||||
---
|
||||
|
||||
The navigation menu is the list of links on every website.
|
||||
|
||||
You will likely update `docs.json` every time you add a new page. Pages do not show up automatically.
|
||||
|
||||
## Navigation syntax
|
||||
|
||||
Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names.
|
||||
|
||||
<CodeGroup>
|
||||
|
||||
```json Regular Navigation
|
||||
"navigation": {
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "Docs",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Getting Started",
|
||||
"pages": ["quickstart"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```json Nested Navigation
|
||||
"navigation": {
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "Docs",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Getting Started",
|
||||
"pages": [
|
||||
"quickstart",
|
||||
{
|
||||
"group": "Nested Reference Pages",
|
||||
"pages": ["nested-reference-page"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</CodeGroup>
|
||||
|
||||
## Folders
|
||||
|
||||
Simply put your MDX files in folders and update the paths in `docs.json`.
|
||||
|
||||
For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`.
|
||||
|
||||
<Warning>
|
||||
|
||||
You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted.
|
||||
|
||||
</Warning>
|
||||
|
||||
```json Navigation With Folder
|
||||
"navigation": {
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "Docs",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Group Name",
|
||||
"pages": ["your-folder/your-page"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Hidden Pages
|
||||
|
||||
MDX files not included in `docs.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them.
|
||||
110
docs/essentials/reusable-snippets.mdx
Normal file
110
docs/essentials/reusable-snippets.mdx
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
---
|
||||
title: Reusable Snippets
|
||||
description: Reusable, custom snippets to keep content in sync
|
||||
icon: 'recycle'
|
||||
---
|
||||
|
||||
import SnippetIntro from '/snippets/snippet-intro.mdx';
|
||||
|
||||
<SnippetIntro />
|
||||
|
||||
## Creating a custom snippet
|
||||
|
||||
**Pre-condition**: You must create your snippet file in the `snippets` directory.
|
||||
|
||||
<Note>
|
||||
Any page in the `snippets` directory will be treated as a snippet and will not
|
||||
be rendered into a standalone page. If you want to create a standalone page
|
||||
from the snippet, import the snippet into another file and call it as a
|
||||
component.
|
||||
</Note>
|
||||
|
||||
### Default export
|
||||
|
||||
1. Add content to your snippet file that you want to re-use across multiple
|
||||
locations. Optionally, you can add variables that can be filled in via props
|
||||
when you import the snippet.
|
||||
|
||||
```mdx snippets/my-snippet.mdx
|
||||
Hello world! This is my content I want to reuse across pages. My keyword of the
|
||||
day is {word}.
|
||||
```
|
||||
|
||||
<Warning>
|
||||
The content that you want to reuse must be inside the `snippets` directory in
|
||||
order for the import to work.
|
||||
</Warning>
|
||||
|
||||
2. Import the snippet into your destination file.
|
||||
|
||||
```mdx destination-file.mdx
|
||||
---
|
||||
title: My title
|
||||
description: My Description
|
||||
---
|
||||
|
||||
import MySnippet from '/snippets/path/to/my-snippet.mdx';
|
||||
|
||||
## Header
|
||||
|
||||
Lorem impsum dolor sit amet.
|
||||
|
||||
<MySnippet word="bananas" />
|
||||
```
|
||||
|
||||
### Reusable variables
|
||||
|
||||
1. Export a variable from your snippet file:
|
||||
|
||||
```mdx snippets/path/to/custom-variables.mdx
|
||||
export const myName = 'my name';
|
||||
|
||||
export const myObject = { fruit: 'strawberries' };
|
||||
```
|
||||
|
||||
2. Import the snippet from your destination file and use the variable:
|
||||
|
||||
```mdx destination-file.mdx
|
||||
---
|
||||
title: My title
|
||||
description: My Description
|
||||
---
|
||||
|
||||
import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
|
||||
|
||||
Hello, my name is {myName} and I like {myObject.fruit}.
|
||||
```
|
||||
|
||||
### Reusable components
|
||||
|
||||
1. Inside your snippet file, create a component that takes in props by exporting
|
||||
your component in the form of an arrow function.
|
||||
|
||||
```mdx snippets/custom-component.mdx
|
||||
export const MyComponent = ({ title }) => (
|
||||
<div>
|
||||
<h1>{title}</h1>
|
||||
<p>... snippet content ...</p>
|
||||
</div>
|
||||
);
|
||||
```
|
||||
|
||||
<Warning>
|
||||
MDX does not compile inside the body of an arrow function. Stick to HTML
|
||||
syntax when you can or use a default export if you need to use MDX.
|
||||
</Warning>
|
||||
|
||||
2. Import the snippet into your destination file and pass in the props
|
||||
|
||||
```mdx destination-file.mdx
|
||||
---
|
||||
title: My title
|
||||
description: My Description
|
||||
---
|
||||
|
||||
import { MyComponent } from '/snippets/custom-component.mdx';
|
||||
|
||||
Lorem ipsum dolor sit amet.
|
||||
|
||||
<MyComponent title={'Custom title'} />
|
||||
```
|
||||
318
docs/essentials/settings.mdx
Normal file
318
docs/essentials/settings.mdx
Normal file
|
|
@ -0,0 +1,318 @@
|
|||
---
|
||||
title: 'Global Settings'
|
||||
description: 'Mintlify gives you complete control over the look and feel of your documentation using the docs.json file'
|
||||
icon: 'gear'
|
||||
---
|
||||
|
||||
Every Mintlify site needs a `docs.json` file with the core configuration settings. Learn more about the [properties](#properties) below.
|
||||
|
||||
## Properties
|
||||
|
||||
<ResponseField name="name" type="string" required>
|
||||
Name of your project. Used for the global title.
|
||||
|
||||
Example: `mintlify`
|
||||
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="navigation" type="Navigation[]" required>
|
||||
An array of groups with all the pages within that group
|
||||
<Expandable title="Navigation">
|
||||
<ResponseField name="group" type="string">
|
||||
The name of the group.
|
||||
|
||||
Example: `Settings`
|
||||
|
||||
</ResponseField>
|
||||
<ResponseField name="pages" type="string[]">
|
||||
The relative paths to the markdown files that will serve as pages.
|
||||
|
||||
Example: `["customization", "page"]`
|
||||
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="logo" type="string or object">
|
||||
Path to logo image or object with path to "light" and "dark" mode logo images
|
||||
<Expandable title="Logo">
|
||||
<ResponseField name="light" type="string">
|
||||
Path to the logo in light mode
|
||||
</ResponseField>
|
||||
<ResponseField name="dark" type="string">
|
||||
Path to the logo in dark mode
|
||||
</ResponseField>
|
||||
<ResponseField name="href" type="string" default="/">
|
||||
Where clicking on the logo links you to
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="favicon" type="string">
|
||||
Path to the favicon image
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="colors" type="Colors">
|
||||
Hex color codes for your global theme
|
||||
<Expandable title="Colors">
|
||||
<ResponseField name="primary" type="string" required>
|
||||
The primary color. Used for most often for highlighted content, section
|
||||
headers, accents, in light mode
|
||||
</ResponseField>
|
||||
<ResponseField name="light" type="string">
|
||||
The primary color for dark mode. Used for most often for highlighted
|
||||
content, section headers, accents, in dark mode
|
||||
</ResponseField>
|
||||
<ResponseField name="dark" type="string">
|
||||
The primary color for important buttons
|
||||
</ResponseField>
|
||||
<ResponseField name="background" type="object">
|
||||
The color of the background in both light and dark mode
|
||||
<Expandable title="Object">
|
||||
<ResponseField name="light" type="string" required>
|
||||
The hex color code of the background in light mode
|
||||
</ResponseField>
|
||||
<ResponseField name="dark" type="string" required>
|
||||
The hex color code of the background in dark mode
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="topbarLinks" type="TopbarLink[]">
|
||||
Array of `name`s and `url`s of links you want to include in the topbar
|
||||
<Expandable title="TopbarLink">
|
||||
<ResponseField name="name" type="string">
|
||||
The name of the button.
|
||||
|
||||
Example: `Contact us`
|
||||
</ResponseField>
|
||||
<ResponseField name="url" type="string">
|
||||
The url once you click on the button. Example: `https://mintlify.com/docs`
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="topbarCtaButton" type="Call to Action">
|
||||
<Expandable title="Topbar Call to Action">
|
||||
<ResponseField name="type" type={'"link" or "github"'} default="link">
|
||||
Link shows a button. GitHub shows the repo information at the url provided including the number of GitHub stars.
|
||||
</ResponseField>
|
||||
<ResponseField name="url" type="string">
|
||||
If `link`: What the button links to.
|
||||
|
||||
If `github`: Link to the repository to load GitHub information from.
|
||||
</ResponseField>
|
||||
<ResponseField name="name" type="string">
|
||||
Text inside the button. Only required if `type` is a `link`.
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="versions" type="string[]">
|
||||
Array of version names. Only use this if you want to show different versions
|
||||
of docs with a dropdown in the navigation bar.
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="anchors" type="Anchor[]">
|
||||
An array of the anchors, includes the `icon`, `color`, and `url`.
|
||||
<Expandable title="Anchor">
|
||||
<ResponseField name="icon" type="string">
|
||||
The [Font Awesome](https://fontawesome.com/search?q=heart) icon used to feature the anchor.
|
||||
|
||||
Example: `comments`
|
||||
</ResponseField>
|
||||
<ResponseField name="name" type="string">
|
||||
The name of the anchor label.
|
||||
|
||||
Example: `Community`
|
||||
</ResponseField>
|
||||
<ResponseField name="url" type="string">
|
||||
The start of the URL that marks what pages go in the anchor. Generally, this is the name of the folder you put your pages in.
|
||||
</ResponseField>
|
||||
<ResponseField name="color" type="string">
|
||||
The hex color of the anchor icon background. Can also be a gradient if you pass an object with the properties `from` and `to` that are each a hex color.
|
||||
</ResponseField>
|
||||
<ResponseField name="version" type="string">
|
||||
Used if you want to hide an anchor until the correct docs version is selected.
|
||||
</ResponseField>
|
||||
<ResponseField name="isDefaultHidden" type="boolean" default="false">
|
||||
Pass `true` if you want to hide the anchor until you directly link someone to docs inside it.
|
||||
</ResponseField>
|
||||
<ResponseField name="iconType" default="duotone" type="string">
|
||||
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="topAnchor" type="Object">
|
||||
Override the default configurations for the top-most anchor.
|
||||
<Expandable title="Object">
|
||||
<ResponseField name="name" default="Documentation" type="string">
|
||||
The name of the top-most anchor
|
||||
</ResponseField>
|
||||
<ResponseField name="icon" default="book-open" type="string">
|
||||
Font Awesome icon.
|
||||
</ResponseField>
|
||||
<ResponseField name="iconType" default="duotone" type="string">
|
||||
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="tabs" type="Tabs[]">
|
||||
An array of navigational tabs.
|
||||
<Expandable title="Tabs">
|
||||
<ResponseField name="name" type="string">
|
||||
The name of the tab label.
|
||||
</ResponseField>
|
||||
<ResponseField name="url" type="string">
|
||||
The start of the URL that marks what pages go in the tab. Generally, this
|
||||
is the name of the folder you put your pages in.
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="api" type="API">
|
||||
Configuration for API settings. Learn more about API pages at [API Components](/api-playground/demo).
|
||||
<Expandable title="API">
|
||||
<ResponseField name="baseUrl" type="string">
|
||||
The base url for all API endpoints. If `baseUrl` is an array, it will enable for multiple base url
|
||||
options that the user can toggle.
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="auth" type="Auth">
|
||||
<Expandable title="Auth">
|
||||
<ResponseField name="method" type='"bearer" | "basic" | "key"'>
|
||||
The authentication strategy used for all API endpoints.
|
||||
</ResponseField>
|
||||
<ResponseField name="name" type="string">
|
||||
The name of the authentication parameter used in the API playground.
|
||||
|
||||
If method is `basic`, the format should be `[usernameName]:[passwordName]`
|
||||
</ResponseField>
|
||||
<ResponseField name="inputPrefix" type="string">
|
||||
The default value that's designed to be a prefix for the authentication input field.
|
||||
|
||||
E.g. If an `inputPrefix` of `AuthKey` would inherit the default input result of the authentication field as `AuthKey`.
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="playground" type="Playground">
|
||||
Configurations for the API playground
|
||||
|
||||
<Expandable title="Playground">
|
||||
<ResponseField name="mode" default="show" type='"show" | "simple" | "hide"'>
|
||||
Whether the playground is showing, hidden, or only displaying the endpoint with no added user interactivity `simple`
|
||||
|
||||
Learn more at the [playground guides](/api-playground/demo)
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="maintainOrder" type="boolean">
|
||||
Enabling this flag ensures that key ordering in OpenAPI pages matches the key ordering defined in the OpenAPI file.
|
||||
|
||||
<Warning>This behavior will soon be enabled by default, at which point this field will be deprecated.</Warning>
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="openapi" type="string | string[]">
|
||||
A string or an array of strings of URL(s) or relative path(s) pointing to your
|
||||
OpenAPI file.
|
||||
|
||||
Examples:
|
||||
<CodeGroup>
|
||||
```json Absolute
|
||||
"openapi": "https://example.com/openapi.json"
|
||||
```
|
||||
```json Relative
|
||||
"openapi": "/openapi.json"
|
||||
```
|
||||
```json Multiple
|
||||
"openapi": ["https://example.com/openapi1.json", "/openapi2.json", "/openapi3.json"]
|
||||
```
|
||||
</CodeGroup>
|
||||
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="footerSocials" type="FooterSocials">
|
||||
An object of social media accounts where the key:property pair represents the social media platform and the account url.
|
||||
|
||||
Example:
|
||||
```json
|
||||
{
|
||||
"x": "https://x.com/mintlify",
|
||||
"website": "https://mintlify.com"
|
||||
}
|
||||
```
|
||||
<Expandable title="FooterSocials">
|
||||
<ResponseField name="[key]" type="string">
|
||||
One of the following values `website`, `facebook`, `x`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`
|
||||
|
||||
Example: `x`
|
||||
</ResponseField>
|
||||
<ResponseField name="property" type="string">
|
||||
The URL to the social platform.
|
||||
|
||||
Example: `https://x.com/mintlify`
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="feedback" type="Feedback">
|
||||
Configurations to enable feedback buttons
|
||||
|
||||
<Expandable title="Feedback">
|
||||
<ResponseField name="suggestEdit" type="boolean" default="false">
|
||||
Enables a button to allow users to suggest edits via pull requests
|
||||
</ResponseField>
|
||||
<ResponseField name="raiseIssue" type="boolean" default="false">
|
||||
Enables a button to allow users to raise an issue about the documentation
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="modeToggle" type="ModeToggle">
|
||||
Customize the dark mode toggle.
|
||||
<Expandable title="ModeToggle">
|
||||
<ResponseField name="default" type={'"light" or "dark"'}>
|
||||
Set if you always want to show light or dark mode for new users. When not
|
||||
set, we default to the same mode as the user's operating system.
|
||||
</ResponseField>
|
||||
<ResponseField name="isHidden" type="boolean" default="false">
|
||||
Set to true to hide the dark/light mode toggle. You can combine `isHidden` with `default` to force your docs to only use light or dark mode. For example:
|
||||
|
||||
<CodeGroup>
|
||||
```json Only Dark Mode
|
||||
"modeToggle": {
|
||||
"default": "dark",
|
||||
"isHidden": true
|
||||
}
|
||||
```
|
||||
|
||||
```json Only Light Mode
|
||||
"modeToggle": {
|
||||
"default": "light",
|
||||
"isHidden": true
|
||||
}
|
||||
```
|
||||
</CodeGroup>
|
||||
|
||||
</ResponseField>
|
||||
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="backgroundImage" type="string">
|
||||
A background image to be displayed behind every page. See example with
|
||||
[Infisical](https://infisical.com/docs) and [FRPC](https://frpc.io).
|
||||
</ResponseField>
|
||||
5
docs/favicon.svg
Normal file
5
docs/favicon.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="880" height="880" viewBox="0 0 880 880" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="880" height="880" fill="#5146E5"/>
|
||||
<path d="M619.047 246.033C611.414 235.932 602.426 226.878 592.399 219.188C568.641 200.875 538.943 190 506.716 190H233V690H288.624L471.552 542.33L584.471 451.17C587.204 449.372 589.847 447.485 592.421 445.483C596.802 442.116 601.003 438.499 604.933 434.654C607.665 431.992 610.262 429.239 612.769 426.35C630.971 405.556 643.212 379.394 646.87 350.501C647.616 344.564 648 338.49 648 332.348C648 299.905 637.205 269.966 619.047 246.033ZM288.624 246.033H506.738C554.051 246.033 592.421 284.663 592.421 332.348C592.421 358.305 581.039 381.601 563.017 397.413L436.389 323.77L422.93 315.944L422.659 315.785L418.684 313.464C415.296 311.895 411.502 311.007 407.527 311.007C392.758 311.007 380.788 323.065 380.788 337.921V548.791L288.669 625.299V246.033H288.624ZM436.344 483.156V388.426L448.156 395.296L481.986 414.953L517.194 435.45L436.367 502.562V483.134L436.344 483.156Z" fill="white"/>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 1 KiB |
20
docs/index.mdx
Normal file
20
docs/index.mdx
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
title: "Introduction"
|
||||
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.
|
||||
|
||||
With seamless support for multiple large language models (LLMs)—including **OpenAI**, **Google Gemini**, and **Ollama**—you can generate high-quality, customizable slide decks from simple prompts or uploaded documents. Export your output in **PPTX** or **PDF** format and, when using Ollama, enjoy GPU-accelerated, fully offline generation with open-source models.
|
||||
|
||||
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.
|
||||
|
||||
Join the open-source movement and redefine how presentations are made—\*\*your slides, your way.\*\*
|
||||
20
docs/logo/dark.svg
Normal file
20
docs/logo/dark.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg width="3673" height="907" viewBox="0 0 3673 907" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<mask id="mask0_57_3" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="3673" height="907">
|
||||
<path d="M3673 0H0V907H3673V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_57_3)">
|
||||
<path d="M701.749 101.644C687.873 83.3211 671.535 66.8962 653.309 52.9475C610.122 19.7264 556.138 0 497.555 0H0V907H101.112L433.636 639.127L638.898 473.762C643.866 470.502 648.67 467.078 653.35 463.445C661.312 457.339 668.948 450.777 676.093 443.802C681.06 438.974 685.781 433.979 690.338 428.739C723.424 391.019 745.676 343.56 752.326 291.149C753.681 280.379 754.38 269.361 754.38 258.218C754.38 199.368 734.756 145.059 701.749 101.644ZM101.112 101.644H497.596C583.601 101.644 653.35 171.718 653.35 258.218C653.35 305.305 632.658 347.565 599.898 376.246L369.717 242.659L345.251 228.462L344.759 228.174L337.533 223.964C331.375 221.117 324.478 219.507 317.252 219.507C290.405 219.507 268.646 241.38 268.646 268.329V650.847L101.194 789.632V101.644H101.112ZM369.635 531.785V359.945L391.106 372.407L452.602 408.064L516.603 445.246L369.676 566.988V531.745L369.635 531.785Z" fill="url(#paint0_linear_57_3)"/>
|
||||
<path d="M965.017 247.321H1121.18C1220.2 247.321 1281.49 297.668 1281.49 382.394C1281.49 467.119 1219.62 518.661 1122.37 518.661H1059.32V650.185H965.017V247.321ZM1059.32 322.554V443.43H1117.08C1163.06 443.43 1184.28 419.122 1184.28 383.013C1184.28 346.903 1161.87 322.595 1119.46 322.595H1059.36L1059.32 322.554ZM1318.03 331.468H1408.18V375.915C1428.21 337.989 1458.88 321.398 1491.27 321.398C1504.24 321.398 1516.02 324.949 1522.51 331.468V407.898C1511.92 405.545 1500.71 404.347 1486.55 404.347C1432.32 404.347 1408.18 435.136 1408.18 485.524V650.226H1318.03V331.509V331.468ZM1686.35 659.677C1587.95 659.677 1527.23 595.711 1527.23 490.848C1527.23 385.983 1588.52 321.398 1682.82 321.398C1777.12 321.398 1837.22 384.788 1837.22 489.073V509.213H1619.15C1623.87 560.179 1647.43 587.416 1686.35 587.416C1715.83 587.416 1735.86 574.374 1745.3 545.363H1839.6C1823.1 618.821 1764.14 659.718 1686.39 659.718L1686.35 659.677ZM1620.95 457.049H1744.11C1737.05 415.574 1715.83 393.661 1682.82 393.661C1649.81 393.661 1628.01 415.574 1620.95 457.049ZM2149.58 553.617C2149.58 616.427 2091.83 659.677 2009.31 659.677C1926.79 659.677 1871.41 624.145 1859.63 545.322H1949.78C1953.89 574.952 1978.07 590.924 2011.65 590.924C2043.46 590.924 2059.39 578.501 2059.39 558.941C2059.39 497.326 1867.27 552.42 1867.27 424.447C1867.27 371.126 1910.29 321.357 1995.15 321.357C2071.18 321.357 2128.94 356.313 2137.76 436.868H2048.18C2042.89 404.266 2024.01 390.647 1992.19 390.647C1968.63 390.647 1953.31 402.49 1953.31 419.66C1953.31 482.47 2149.54 427.376 2149.54 553.533L2149.58 553.617ZM2328.73 659.677C2230.34 659.677 2169.62 595.711 2169.62 490.848C2169.62 385.983 2230.91 321.398 2325.21 321.398C2419.51 321.398 2479.61 384.788 2479.61 489.073V509.213H2261.54C2266.26 560.179 2289.82 587.416 2328.73 587.416C2358.22 587.416 2378.24 574.374 2387.7 545.363H2482C2465.49 618.821 2406.54 659.718 2328.77 659.718L2328.73 659.677ZM2263.3 457.049H2386.45C2379.4 415.574 2358.18 393.661 2325.17 393.661C2292.16 393.661 2270.37 415.574 2263.3 457.049ZM2517.3 331.468H2607.44V373.521C2628.05 337.989 2660.48 321.398 2699.36 321.398C2760.08 321.398 2805.45 358.705 2805.45 437.528V650.226H2715.28V455.892C2715.28 415.615 2699.36 394.856 2666.35 394.856C2630.39 394.856 2607.4 426.263 2607.4 467.119V650.185H2517.25V331.468H2517.3ZM2866.78 400.18H2827.89V331.468H2866.78V257.432H2956.92V331.468H3021.75V400.18H2956.92V535.253C2956.92 566.038 2965.18 583.246 3004.06 583.246H3021.13V651.383C3011.11 656.128 2991.07 659.677 2966.9 659.677C2899.13 659.677 2866.73 620.594 2866.73 546.517V400.18H2866.78ZM3037.09 490.805C3037.09 382.394 3098.38 321.357 3192.68 321.357C3286.97 321.357 3348.85 386.52 3348.85 490.805C3348.85 595.092 3286.97 659.636 3192.68 659.636C3098.38 659.636 3037.09 595.67 3037.09 490.805ZM3256.32 490.805C3256.32 429.192 3233.9 394.815 3192.68 394.815C3151.48 394.815 3129.62 428.573 3129.62 490.805C3129.62 553.039 3152.05 586.178 3192.68 586.178C3233.33 586.178 3256.32 552.998 3256.32 490.805ZM3384.81 331.468H3474.95V373.521C3495.56 337.989 3528.01 321.398 3566.87 321.398C3627.59 321.398 3672.95 358.705 3672.95 437.528V650.226H3582.81V455.892C3582.81 415.615 3566.87 394.856 3533.88 394.856C3497.92 394.856 3474.93 426.263 3474.93 467.119V650.185H3384.76V331.468H3384.81Z" fill="url(#paint1_linear_57_3)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_57_3" x1="-3.69472" y1="453.5" x2="3574.26" y2="453.5" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#7A3BE8"/>
|
||||
<stop offset="1" stop-color="#5146E5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_57_3" x1="-0.000959475" y1="453.5" x2="3574.26" y2="453.5" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#7A3BE8"/>
|
||||
<stop offset="1" stop-color="#5146E5"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
20
docs/logo/light.svg
Normal file
20
docs/logo/light.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg width="3673" height="907" viewBox="0 0 3673 907" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<mask id="mask0_57_3" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="3673" height="907">
|
||||
<path d="M3673 0H0V907H3673V0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_57_3)">
|
||||
<path d="M701.749 101.644C687.873 83.3211 671.535 66.8962 653.309 52.9475C610.122 19.7264 556.138 0 497.555 0H0V907H101.112L433.636 639.127L638.898 473.762C643.866 470.502 648.67 467.078 653.35 463.445C661.312 457.339 668.948 450.777 676.093 443.802C681.06 438.974 685.781 433.979 690.338 428.739C723.424 391.019 745.676 343.56 752.326 291.149C753.681 280.379 754.38 269.361 754.38 258.218C754.38 199.368 734.756 145.059 701.749 101.644ZM101.112 101.644H497.596C583.601 101.644 653.35 171.718 653.35 258.218C653.35 305.305 632.658 347.565 599.898 376.246L369.717 242.659L345.251 228.462L344.759 228.174L337.533 223.964C331.375 221.117 324.478 219.507 317.252 219.507C290.405 219.507 268.646 241.38 268.646 268.329V650.847L101.194 789.632V101.644H101.112ZM369.635 531.785V359.945L391.106 372.407L452.602 408.064L516.603 445.246L369.676 566.988V531.745L369.635 531.785Z" fill="url(#paint0_linear_57_3)"/>
|
||||
<path d="M965.017 247.321H1121.18C1220.2 247.321 1281.49 297.668 1281.49 382.394C1281.49 467.119 1219.62 518.661 1122.37 518.661H1059.32V650.185H965.017V247.321ZM1059.32 322.554V443.43H1117.08C1163.06 443.43 1184.28 419.122 1184.28 383.013C1184.28 346.903 1161.87 322.595 1119.46 322.595H1059.36L1059.32 322.554ZM1318.03 331.468H1408.18V375.915C1428.21 337.989 1458.88 321.398 1491.27 321.398C1504.24 321.398 1516.02 324.949 1522.51 331.468V407.898C1511.92 405.545 1500.71 404.347 1486.55 404.347C1432.32 404.347 1408.18 435.136 1408.18 485.524V650.226H1318.03V331.509V331.468ZM1686.35 659.677C1587.95 659.677 1527.23 595.711 1527.23 490.848C1527.23 385.983 1588.52 321.398 1682.82 321.398C1777.12 321.398 1837.22 384.788 1837.22 489.073V509.213H1619.15C1623.87 560.179 1647.43 587.416 1686.35 587.416C1715.83 587.416 1735.86 574.374 1745.3 545.363H1839.6C1823.1 618.821 1764.14 659.718 1686.39 659.718L1686.35 659.677ZM1620.95 457.049H1744.11C1737.05 415.574 1715.83 393.661 1682.82 393.661C1649.81 393.661 1628.01 415.574 1620.95 457.049ZM2149.58 553.617C2149.58 616.427 2091.83 659.677 2009.31 659.677C1926.79 659.677 1871.41 624.145 1859.63 545.322H1949.78C1953.89 574.952 1978.07 590.924 2011.65 590.924C2043.46 590.924 2059.39 578.501 2059.39 558.941C2059.39 497.326 1867.27 552.42 1867.27 424.447C1867.27 371.126 1910.29 321.357 1995.15 321.357C2071.18 321.357 2128.94 356.313 2137.76 436.868H2048.18C2042.89 404.266 2024.01 390.647 1992.19 390.647C1968.63 390.647 1953.31 402.49 1953.31 419.66C1953.31 482.47 2149.54 427.376 2149.54 553.533L2149.58 553.617ZM2328.73 659.677C2230.34 659.677 2169.62 595.711 2169.62 490.848C2169.62 385.983 2230.91 321.398 2325.21 321.398C2419.51 321.398 2479.61 384.788 2479.61 489.073V509.213H2261.54C2266.26 560.179 2289.82 587.416 2328.73 587.416C2358.22 587.416 2378.24 574.374 2387.7 545.363H2482C2465.49 618.821 2406.54 659.718 2328.77 659.718L2328.73 659.677ZM2263.3 457.049H2386.45C2379.4 415.574 2358.18 393.661 2325.17 393.661C2292.16 393.661 2270.37 415.574 2263.3 457.049ZM2517.3 331.468H2607.44V373.521C2628.05 337.989 2660.48 321.398 2699.36 321.398C2760.08 321.398 2805.45 358.705 2805.45 437.528V650.226H2715.28V455.892C2715.28 415.615 2699.36 394.856 2666.35 394.856C2630.39 394.856 2607.4 426.263 2607.4 467.119V650.185H2517.25V331.468H2517.3ZM2866.78 400.18H2827.89V331.468H2866.78V257.432H2956.92V331.468H3021.75V400.18H2956.92V535.253C2956.92 566.038 2965.18 583.246 3004.06 583.246H3021.13V651.383C3011.11 656.128 2991.07 659.677 2966.9 659.677C2899.13 659.677 2866.73 620.594 2866.73 546.517V400.18H2866.78ZM3037.09 490.805C3037.09 382.394 3098.38 321.357 3192.68 321.357C3286.97 321.357 3348.85 386.52 3348.85 490.805C3348.85 595.092 3286.97 659.636 3192.68 659.636C3098.38 659.636 3037.09 595.67 3037.09 490.805ZM3256.32 490.805C3256.32 429.192 3233.9 394.815 3192.68 394.815C3151.48 394.815 3129.62 428.573 3129.62 490.805C3129.62 553.039 3152.05 586.178 3192.68 586.178C3233.33 586.178 3256.32 552.998 3256.32 490.805ZM3384.81 331.468H3474.95V373.521C3495.56 337.989 3528.01 321.398 3566.87 321.398C3627.59 321.398 3672.95 358.705 3672.95 437.528V650.226H3582.81V455.892C3582.81 415.615 3566.87 394.856 3533.88 394.856C3497.92 394.856 3474.93 426.263 3474.93 467.119V650.185H3384.76V331.468H3384.81Z" fill="url(#paint1_linear_57_3)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_57_3" x1="-3.69472" y1="453.5" x2="3574.26" y2="453.5" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#7A3BE8"/>
|
||||
<stop offset="1" stop-color="#5146E5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_57_3" x1="-0.000959475" y1="453.5" x2="3574.26" y2="453.5" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#7A3BE8"/>
|
||||
<stop offset="1" stop-color="#5146E5"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
31
docs/quickstart.mdx
Normal file
31
docs/quickstart.mdx
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
title: "Quickstart"
|
||||
description: "Follow these steps to get Presenton up and running using Docker"
|
||||
---
|
||||
|
||||
### 🚀 Run Presenton
|
||||
|
||||
#### 🔧 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
|
||||
````
|
||||
|
||||
#### 🪟 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
|
||||
```
|
||||
|
||||
> ✅ You can replace `5000` with any other available port to avoid conflicts.
|
||||
|
||||
|
||||
### 🌐 Open in Your Browser
|
||||
|
||||
After running the container, open your browser and navigate to:
|
||||
|
||||
```
|
||||
http://localhost:5000
|
||||
```
|
||||
|
||||
You’re now ready to start generating presentations!
|
||||
4
docs/snippets/snippet-intro.mdx
Normal file
4
docs/snippets/snippet-intro.mdx
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
One of the core principles of software development is DRY (Don't Repeat
|
||||
Yourself). This is a principle that apply to documentation as
|
||||
well. If you find yourself repeating the same content in multiple places, you
|
||||
should consider creating a custom snippet to keep your content in sync.
|
||||
Loading…
Add table
Reference in a new issue