DeckShala is an open-source, AI-powered presentation generator β a self-hostable alternative to Gamma.app that creates beautiful, fully editable slides in minutes.
Live Demo Β· Report a Bug Β· Request a Feature Β· Discord
- Features
- Tech Stack
- Getting Started
- Usage
- Local Models Guide
- Project Structure
- Roadmap
- Contributing
- License
- Acknowledgements
- Support
- 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
- 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 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
| 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 |
Before you begin, ensure you have the following installed:
- Node.js 18.x or higher
- npm, yarn, or pnpm package manager
- PostgreSQL database
- Ollama (for local AI models - RECOMMENDED, see Ollama Setup Guide)
- Required for authentication:
- Google Client ID and Secret (for authentication)
- Optional (only if not using Ollama):
- OpenAI API key
- Together AI API key
π‘ NEW: This project now uses Ollama for local AI inference by default! No expensive API keys required. See OLLAMA_SETUP.md for complete setup instructions.
-
Clone the repository
git clone https://github.com/DevVentures/DeckShala.git cd DeckShala -
Install dependencies
pnpm install
-
Set up environment variables
Create a
.envfile in the root directory with the following variables:# Ollama Configuration (Local AI - RECOMMENDED) OLLAMA_BASE_URL="http://localhost:11434" # AI Providers (Optional - only if not using Ollama) 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.
-
Initialize the database
pnpm db:push
-
Start the development server
pnpm dev
-
Open the application
Navigate to http://localhost:3000 in your browser.
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
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
You can use either Ollama or LM Studio for using local models in DeckShala.
- 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.
- Install Ollama.
- Download whichever model you want to use (for example:
ollama pull llama3.1).
- 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.
deckshala/
βββ .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
β βββ middleware.ts # Next.js middleware
β βββ 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
| Feature | Status | Notes |
|---|---|---|
| Export to PowerPoint (.pptx) | π‘ Partially Done | Works but images and other components do not translate one-to-one |
| Media embedding | π‘ Partially Done | Functionality is there, but UI/UX needs 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 | π‘ In Progress | Support for AI-generated charts |
| CI / Automated testing | π’ Done | GitHub Actions CI with lint, type-check, unit tests, and Playwright E2E tests |
| Write e2e tests | π‘ In Progress | Core Playwright E2E tests added (presentation create, export); expanding coverage |
| 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 |
| API | π΄ Not Started | Allow developers to use DeckShala to generate presentation content in their own applications |
π 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!
We welcome contributions from the community! Here's how you can help:
-
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
- 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.
This project is licensed under the MIT License - see the LICENSE file for details.
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
Need help or have questions?
- π¬ Discord Community
- π Report a Bug
- π‘ Request a Feature
- π§ Contact us via GitHub Issues or Discord
Built with β€οΈ by techySPHINX