Step 1: Set Things Up
Let’s start by getting Presenton up and running locally.Clone the Repository
Open your terminal and run:Start the Server
Now, fire up Presenton using Docker:Step 2: Understand How Template Work
Presenton organizes slide designs into templates. Each template contains one or more slide layouts and some metadata that describes the group.Where Templates Live
All templates are located in:Explore a Template
Pick any template folder and open it. Here’s what you’ll typically find inside:settings.json
: This file contains basic information about the template, such as its description and behavior.- One or more
.tsx
files: Each.tsx
file defines the layout of a single slide, including its schema (used by the AI to generate content) and the React component that renders the slide visually.
.tsx
file as a “slide template” that Presenton can use when building a presentation.
Preview Templates in the UI
To see all available presentation templates and their slide layouts in your browser, go to: http://localhost:5000/template-preview This preview page gives you a visual overview of each presentation template and lets you inspect how each slide will look when used. When generating a presentation, you’ll be able to pick from these templates in the Outlines and Templates step of the process.Step 3: Build Your Own Template
Now it’s time to roll up your sleeves and create a custom template of your own.Create a New Directory
In thepresentation-templates
folder, make a new directory. This will be your template.
💡 The name you give this folder will appear in the UI as the template name.
Add a settings.json
File
Create a file named settings.json
and paste the following:
description
: Basic description of this template.ordered
: We will talk about this later. Keep it false for now.default
: Iftrue
, this template will be used by default when generating a presentation.
Step 4: Add Your First Slide Layout
Let’s create an actual slide template now.Create a .tsx
File
Step 5: Define Schema & Component
Each slide layout needs two parts:- A schema (Zod) — tells the AI what kind of data this slide expects.
- A component (React) — renders the slide visually.
Schema
✨ Tip: Thedefault
values help render the preview, andmeta.description
helps the AI generate better content.
SlideComponent
Step 6: Preview Your Template
Time to see your creation in action! Visit: http://localhost:5000/template-preview You should now see your presentation template listed. Click on it, and your new slide layout should appear. Boom — that’s it! Your template is now ready to useYou can now select this new template in Outlines and Templates page while generating your presentation.
Adding More Slides to Your Presentation Template
Now that you’ve got your first slide working, let’s take it a step further and add another slide, this time with a title, description, image, and icon.Create a New Slide Layout File
Inside your layout group directory, create a new file:Define the Schema
Here’s a full schema that includes a title, description, image, and icon:🖼️ To include AI-generated images and icons in your slides, make sure to useImageSchema
andIconSchema
.
Create the Slide Component
Now let’s define how the slide will be rendered:Preview the New Slide
Just like before, head to: 📍 http://localhost:5000/template-preview You should now see both slides listed under your presentation template. 🎉 That’s it! Now your template includes two slides.Rename Your Slide Files for Better AI Matching
While your slide layout files can technically be named anything, giving them meaningful names helps the AI choose slide that best match the content of each slide. For example, instead of generic names like:💡 Pro tip: The more descriptive the filename, the better the layout selection works — even whenordered
is set tofalse
.
How Slides Are Selected in a Template
When generating a presentation using your template, Presenton will automatically choose a slide layout for each slide from the ones available in the presentation template. But what if you want to control exactly which slide layout is used for each slide? Let’s say you want:- Slide 1 to always use the layout with just title and description
- Slide 2 to always use the layout with title, image, icon, and description
ordered
field in your settings.json
.
Use ordered: true
for Specific Slide Order
Open your settings.json
and set ordered
to true
:
📛 The filenames determine the slide order when ordered
is set to true.
Now, when this template is selected during presentation generation:
- Slide 1 will always use
1-TitleDescriptionSlide.tsx
- Slide 2 will always use
2-TitleDescriptionImageIconSlide.tsx
.tsx
files — each one with its own design and schema.
Now go build something awesome! 💡✨
Got more ideas? Add more .tsx
files inside your template directory and let your creativity run wild. 🎨💡