ALLWEONE® AI Presentation Generator
⭐ Help us reach more developers and grow the ALLWEONE community. Star this repo!
An open-source, AI-powered presentation generator inspired by Gamma.app that creates beautiful, customizable slides in minutes. This tool is part of the broader ALLWEONE AI platform.
https://github.com/user-attachments/assets/a21dbd49-75b8-4822-bcec-a75b581d9c60
🔗 Quick Links
📋 Table of Contents
- Features
- Tech Stack
- Getting Started
- Usage
- Local Models Guide
- Project Structure
- Roadmap
- Contributing
- License
- Acknowledgements
- Support
🌟 Features
Core Functionality
- AI-Powered Content Generation: Create complete presentations on any topic with AI
- Customizable Slides: Choose the number of slides, language, and page style
- Editable Outlines: Review and modify AI-generated outlines before finalizing
- Real-Time Generation: Watch your presentation build live as content is created
- Auto-Save: Everything saves automatically as you work
Design & Customization
- Multiple Themes: 9 built-in themes with more coming soon
- Custom Theme Creation: Create and save your own themes from scratch
- Full Editability: Modify text, fonts, and design elements as needed
- Image Generation: Choose different AI image generation models for your slides
- Audience-Focused Styles: Select between professional and casual presentation styles
Presentation Tools
- Presentation Mode: Present directly from the application
- Rich Text Editing: Powered by Plate Editor for comprehensive text and image handling
- Drag and Drop: Intuitive slide reordering and element manipulation
🧰 Tech Stack
| Category | Technologies |
|---|---|
| Framework | Next.js, React, TypeScript |
| Styling | Tailwind CSS |
| Database | PostgreSQL with Prisma ORM |
| AI Integration | OpenAI API, Together AI |
| Authentication | NextAuth.js |
| UI Components | Radix UI |
| Text Editor | Plate Editor |
| File Uploads | UploadThing |
| Drag & Drop | DND Kit |
🚀 Getting Started
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js 18.x or higher
- npm, yarn, or pnpm package manager
- PostgreSQL database
- Required API keys:
- OpenAI API key (for AI generation features)
- Together AI API key (for image generation)
- Google Client ID and Secret (for authentication)
Installation
-
Clone the repository
git clone git@github.com:allweonedev/presentation-ai.git cd presentation-ai -
Install dependencies
pnpm install -
Set up environment variables
Create a
.envfile in the root directory with the following variables:# AI Providers OPENAI_API_KEY="" TOGETHER_AI_API_KEY="" # Next Auth Configuration NEXTAUTH_SECRET="" NEXTAUTH_URL="http://localhost:3000" # Google OAuth Provider GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET="" # File Upload Service UPLOADTHING_TOKEN="" UNSPLASH_ACCESS_KEY="" TAVILY_API_KEY="" # PostgreSQL Database DATABASE_URL="postgresql://username:password@localhost:5432/presentation_ai"💡 Tip: Copy
.env.exampleto.envand fill in your actual values.
Database Setup
-
Initialize the database
pnpm db:push -
Start the development server
pnpm dev -
Open the application
Navigate to http://localhost:3000 in your browser.
💻 Usage
Creating a Presentation
Follow these steps to create your first AI-generated presentation:
- Login the website
- Navigate to the dashboard
- Enter your presentation topic
- Choose the number of slides (recommended: 5-10)
- Select your preferred language
- Choose a page style
- Toggle web search (if you want)
- Click "Generate Outline"
- Review and edit the AI-generated outline
- Select a theme for your presentation
- Choose an image source (ai / stock)
- Select your presentation style (Professional/Casual)
- Click "Generate Presentation"
- Wait for the AI to create your slides in real-time
- Preview, edit, and refine your presentation as needed
- Present directly from the app or export your presentation
Custom Themes
Create personalized themes to match your brand or style:
- Click "Create New Theme"
- Start from scratch or derive from an existing theme
- Customize colors, fonts, and layout
- Save your theme for future use
🧠 Local Models Guide
You can use either Ollama or LM Studio for using local models in ALLWEONE presentation ai.
LM Studio
- Install LM Studio.
- In the LM Studio app, turn the Server ON and enable CORS.
- Download any model you want to use inside LM Studio.
Ollama
- Install Ollama.
- Download whichever model you want to use (for example:
ollama pull llama3.1).
Using Local Models in the App
- Open the app and open the text model selector.
- Chose the model you want to use (it must be downloaded in lm studio or ollama)
- Enjoy the generation
Notes:
- Models will automatically appear in the Model Selector when the LM Studio server or the Ollama daemon is running.
- Make sure LM Studio has CORS enabled so the browser can connect.
📁 Project Structure
presentation/
├── .next/ # Next.js build output
├── node_modules/ # Dependencies
├── prisma/ # Database schema and migrations
│ └── schema.prisma # Prisma database model
├── src/ # Source code
│ ├── app/ # Next.js app router
│ ├── components/ # Reusable UI components
│ │ ├── auth/ # Authentication components
│ │ ├── presentation/ # Presentation-related components
│ │ │ ├── dashboard/ # Dashboard UI
│ │ │ ├── editor/ # Presentation editor
│ │ │ │ ├── custom-elements/ # Custom editor elements
│ │ │ │ ├── dnd/ # Drag and drop functionality
│ │ │ │ └── native-elements/ # Native editor elements
│ │ │ ├── outline/ # Presentation outline components
│ │ │ ├── theme/ # Theme-related components
│ │ │ └── utils/ # Presentation utilities
│ │ ├── prose-mirror/ # ProseMirror editor for outlines
│ │ ├── plate/ # Text editor components
│ │ │ ├── hooks/ # Editor hooks
│ │ │ ├── lib/ # Editor libraries
│ │ │ ├── ui/ # Plate editor UI components
│ │ │ ├── utils/ # Functions necessary for platejs
│ │ │ └── plugins/ # Editor plugins
│ │ └── ui/ # Shared UI components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions and shared code
│ ├── provider/ # Context providers
│ ├── server/ # Server-side code
│ ├── states/ # State management
│ ├── styles/ # Styles required in the project
│ ├── proxy.ts # Next.js proxy
│ └── env.js # Environment configuration
├── .env # Environment variables (not in git)
├── .env.example # Example environment variables
├── next.config.js # Next.js configuration
├── package.json # Project dependencies and scripts
├── tailwind.config.ts # Tailwind CSS configuration
└── tsconfig.json # TypeScript configuration
🗺️ Roadmap
| Feature | Status | Notes |
|---|---|---|
| Export to PowerPoint (.pptx) | 🟡 Partially Done | Works but the images and other component do not translate one to one |
| Media embedding | 🟡 Partially Done | Functionality is there, but ui/ux need improvement |
| Additional built-in themes | 🟡 In Progress | Currently have 9 themes, planning to add 15+ more |
| Mobile responsiveness | 🟡 In Progress | Improving layout and interactions for mobile devices |
| Advanced charts | 🟡 Started | Support for AI generated charts |
| Write e2e tests | 🔴 Not Started | Writing test to check the core features, so that we can catch if any changes break anything |
| Real-time collaboration | 🔴 Not Started | Multiple users editing the same presentation simultaneously |
| Export to PDF | 🔴 Not Started | High priority - allow users to download presentations as PDFs |
| Template library | 🔴 Not Started | Pre-built templates for common presentation types (pitch decks, reports, etc.) |
| Animation and transitions | 🔴 Not Started | Add slide transitions and element animations |
| Voice-over recording | 🔴 Not Started | Record and attach voice narration to slides |
| Cloud storage integration | 🔴 Not Started | Connect with Google Drive, Dropbox, OneDrive |
| Presentation analytics | 🔴 Not Started | Track views, engagement, and presentation performance |
| AI presenter notes | 🔴 Not Started | Auto-generate speaker notes for each slide |
| Custom font uploads | 🔴 Not Started | Allow users to upload and use their own fonts |
| Plugin system | 🔴 Not Started | Allow community to build and share extensions |
📝 Note: This roadmap is subject to change based on community feedback and priorities. Want to contribute to any of these features? Check out our Contributing Guidelines!
🤝 Contributing
We welcome contributions from the community! Here's how you can help:
How to Contribute
-
Fork the repository
-
Create a feature branch
git checkout -b feature/amazing-feature -
Commit your changes
git commit -m 'Add some amazing feature' -
Push to the branch
git push origin feature/amazing-feature -
Open a Pull Request
Contribution Guidelines
- Follow the existing code style and conventions
- Write clear commit messages
- Be respectful and constructive in discussions
For more details, please read our Contributing Guidelines.
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgements
Special thanks to the following projects and organizations:
- OpenAI for AI generation capabilities
- Plate Editor for rich text editing
- Radix UI for accessible UI components
- Next.js for the React framework
- All our open-source contributors
💬 Support
Need help or have questions?
- 💬 Discord Community
- 🐛 Report a Bug
- 💡 Request a Feature
- 📧 Contact us via GitHub Issues or Discord
Built with ❤️ by the ALLWEONE™ Team