Skip to content

rioryugen/DeckCraft

Repository files navigation


⚑ Transform any idea into a professional presentation



πŸ€– Multi-LLM
OpenAI β€’ Gemini β€’ Claude
Ollama β€’ Custom APIs

🎨 Smart Templates
Auto-layout β€’ Themes
Professional designs

πŸ’¬ Chat Editor
Iterate with AI
Real-time editing

πŸ“¦ Export
PPTX β€’ PDF
One-click download

πŸ“‹ Table of Contents

Click to expand/collapse

✨ Features

πŸ€– AI-Powered Generation
Feature Description
🧠 Smart Outlines AI generates structured outlines from any topic
πŸ“ Content Generation Full slide content with speaker notes
🎯 Tone Control Professional, casual, academic, creative
🌍 Multi-language Generate in 50+ languages
πŸ“Š Verbosity Levels Concise, standard, or detailed
🎨 Design & Templates
Feature Description
πŸ–ΌοΈ Auto-Layout AI picks the best slide layout per content
🎭 Theme Engine Generate custom color themes with AI
πŸ“ Template Studio Create and save custom templates
πŸ–ŒοΈ Smart Styling Automatic font sizing and spacing
πŸ”— Integrations
Provider Models Status
OpenAI GPT-4.1, GPT-4o, o3, o4-mini βœ…
Google Gemini 2.5 Pro/Flash βœ…
Anthropic Claude Sonnet/Opus βœ…
Ollama Llama, Mistral, Phi, etc. βœ…
GitHub Models All OpenAI models βœ…
Custom Any OpenAI-compatible API βœ…
πŸ“„ Document Processing
Feature Description
πŸ“‘ PDF Upload Extract content from PDF documents
πŸ“Š PPTX Import Import and edit existing presentations
πŸ“ Text/Markdown Generate from plain text or markdown
πŸ” Smart Chunking Semantic document splitting

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       DeckCraft                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  packages/  β”‚    β”‚   desktop/   β”‚    β”‚ export-engine/ β”‚  β”‚
β”‚  β”‚             β”‚    β”‚              β”‚    β”‚               β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”‚    β”‚  Electron    β”‚    β”‚  PPTX/PDF     β”‚  β”‚
β”‚  β”‚  β”‚  api/ β”‚ │◄───│  Desktop     β”‚    β”‚  Generation   β”‚  β”‚
β”‚  β”‚  β”‚       β”‚ β”‚    β”‚  App         β”‚    β”‚  Runtime      β”‚  β”‚
β”‚  β”‚  β”‚FastAPIβ”‚ β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”‚  β””β”€β”€β”€β”¬β”€β”€β”€β”˜ β”‚                                           β”‚
β”‚  β”‚      β”‚     β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β–Όβ”€β”€β”€β” β”‚         β”‚  tools/  β”‚                      β”‚
β”‚  β”‚  β”‚  web/ β”‚ β”‚         β”‚          β”‚                      β”‚
β”‚  β”‚  β”‚       β”‚ β”‚         β”‚  Build & β”‚                      β”‚
β”‚  β”‚  β”‚Next.jsβ”‚ β”‚         β”‚  Deploy  β”‚                      β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
πŸ“‚ Detailed Structure
DeckCraft/
β”œβ”€β”€ πŸ“¦ packages/
β”‚   β”œβ”€β”€ 🐍 api/                 # FastAPI Backend
β”‚   β”‚   β”œβ”€β”€ app/                # Routes, middleware, lifespan
β”‚   β”‚   β”œβ”€β”€ core/               # LLM integration, utilities
β”‚   β”‚   β”œβ”€β”€ providers/          # Services (DB, image gen, docs)
β”‚   β”‚   β”œβ”€β”€ schemas/            # Pydantic & SQL models
β”‚   β”‚   β”œβ”€β”€ config/             # Constants & configuration
β”‚   β”‚   β”œβ”€β”€ templates/          # Slide template schemas
β”‚   β”‚   └── tests/              # Pytest test suite
β”‚   β”‚
β”‚   └── 🌐 web/                 # Next.js Frontend
β”‚       β”œβ”€β”€ app/                # App Router pages
β”‚       β”œβ”€β”€ shared/             # Reusable UI components
β”‚       β”œβ”€β”€ state/              # Redux store & slices
β”‚       β”œβ”€β”€ lib/                # Utility functions
β”‚       └── types/              # TypeScript definitions
β”‚
β”œβ”€β”€ πŸ–₯️ desktop/                 # Electron App
β”‚   β”œβ”€β”€ app/                    # Main process & IPC
β”‚   β”œβ”€β”€ resources/              # Bundled runtime assets
β”‚   └── build/                  # Installer configs & icons
β”‚
β”œβ”€β”€ πŸ“€ export-engine/           # PPTX export runtime
β”œβ”€β”€ πŸ”§ tools/                   # Build & deploy scripts
β”œβ”€β”€ 🐳 Dockerfile              # Production container
β”œβ”€β”€ 🐳 docker-compose.yml      # Full stack orchestration
└── πŸ“– README.md               # You are here!

πŸš€ Quick Start

πŸ’» Local Development

Prerequisites

Tool Version Purpose
Python 3.11+ Backend runtime
Node.js 18+ Frontend runtime
uv Latest Python package manager
npm 9+ Node package manager

1️⃣ Clone & Setup Backend

# Clone the repository
git clone https://github.com/rioryugen/DeckCraft.git
cd DeckCraft

# Install backend dependencies
cd packages/api
uv sync

# Create environment config
cp ../../.env.example .env
# Edit .env with your API keys

2️⃣ Start Backend

cd packages/api
uv run uvicorn server:app --host 0.0.0.0 --port 8000

3️⃣ Start Frontend

cd packages/web
npm install
npm run dev

4️⃣ Open in Browser

🌐 Frontend:  http://localhost:3000
πŸ“‘ API Docs:  http://localhost:8000/docs
🐳 Docker (One-Command Setup)
# Clone and run
git clone https://github.com/rioryugen/DeckCraft.git
cd DeckCraft

# Set your API key
echo "OPENAI_API_KEY=your-key-here" > .env

# Launch everything
docker compose up -d

Access at http://localhost:3000 πŸŽ‰


βš™οΈ Configuration

πŸ”‘ Environment Variables
Variable Description Default Required
LLM Provider: openai | google | anthropic | ollama | custom openai βœ…
OPENAI_API_KEY OpenAI API key - If using OpenAI
GOOGLE_API_KEY Google Gemini API key - If using Google
ANTHROPIC_API_KEY Anthropic API key - If using Anthropic
CUSTOM_LLM_URL Custom OpenAI-compatible endpoint - If using custom
CUSTOM_MODEL Model name for custom provider - If using custom
CUSTOM_LLM_API_KEY API key for custom provider - If using custom
DISABLE_THINKING Disable thinking param (for GitHub Models) false No
DISABLE_IMAGE_GENERATION Skip AI image generation false No
DISABLE_AUTH Disable authentication false No
APP_DATA_DIRECTORY Storage path for presentations ./app_data No
MEM0_ENABLED Enable AI memory features false No
πŸ€– Provider Quick Setup

OpenAI (Default)

LLM=openai
OPENAI_API_KEY=sk-...

GitHub Models (Free)

LLM=custom
CUSTOM_LLM_URL=https://models.github.ai/inference
CUSTOM_MODEL=openai/gpt-4.1
CUSTOM_LLM_API_KEY=ghp_...
DISABLE_THINKING=false

Ollama (Local)

LLM=ollama
OLLAMA_URL=http://localhost:11434

Google Gemini

LLM=google
GOOGLE_API_KEY=AI...

πŸ”Œ API Reference

πŸ“‘ Endpoints

Generate Presentation

POST /api/v1/ppt/presentation/generate
Content-Type: application/json
{
  "content": "Benefits of Remote Work",
  "n_slides": 5,
  "language": "English",
  "template": "general",
  "tone": "professional",
  "verbosity": "standard",
  "export_as": "pptx"
}

Response:

{
  "id": "uuid-here",
  "status": "completed",
  "download_url": "/api/v1/ppt/presentation/{id}/download"
}

List Presentations

GET /api/v1/ppt/presentations

Get Presentation Status

GET /api/v1/ppt/presentation/{id}/status

Chat with Presentation

POST /api/v1/ppt/chat
Content-Type: application/json
{
  "presentation_id": "uuid-here",
  "message": "Make slide 3 more concise"
}
🐍 Python SDK Example
import requests

# Generate a presentation
response = requests.post("http://localhost:8000/api/v1/ppt/presentation/generate", json={
    "content": "Introduction to Machine Learning",
    "n_slides": 6,
    "language": "English",
    "template": "general",
    "tone": "academic",
    "verbosity": "detailed",
    "export_as": "pptx"
})

result = response.json()
print(f"Presentation ID: {result['id']}")
πŸ“œ cURL Examples
# Generate presentation
curl -X POST http://localhost:8000/api/v1/ppt/presentation/generate \
  -H "Content-Type: application/json" \
  -d '{"content":"AI in Healthcare","n_slides":5,"language":"English","template":"general","tone":"professional","verbosity":"standard","export_as":"pptx"}'

# List all presentations
curl http://localhost:8000/api/v1/ppt/presentations

# Download PPTX
curl -O http://localhost:8000/api/v1/ppt/presentation/{id}/download

πŸ§ͺ Testing

# Backend tests
cd packages/api
uv run pytest

# With coverage
uv run pytest --cov=. --cov-report=html

# Frontend tests
cd packages/web
npx cypress run

πŸ“– Usage Examples

πŸ“Š Business Pitch Deck
{
  "content": "SaaS startup pitch for an AI writing assistant. Target: Series A investors. Key metrics: 50k MAU, 200% MoM growth, $2M ARR.",
  "n_slides": 10,
  "tone": "professional",
  "verbosity": "standard"
}
πŸŽ“ Educational Lecture
{
  "content": "Introduction to Quantum Computing for undergraduate students. Cover qubits, superposition, entanglement, and current applications.",
  "n_slides": 12,
  "tone": "academic",
  "verbosity": "detailed"
}
πŸš€ Product Launch
{
  "content": "New smartwatch launch. Features: health monitoring, 7-day battery, water resistance, AI assistant integration.",
  "n_slides": 8,
  "tone": "creative",
  "verbosity": "concise"
}

πŸ—ΊοΈ Roadmap

Phase Feature Status
βœ… Multi-LLM support Done
βœ… Template engine Done
βœ… Chat-based editing Done
βœ… PPTX export Done
βœ… Docker deployment Done
πŸ”„ PDF export In Progress
πŸ“‹ Real-time collaboration Planned
πŸ“‹ Plugin system Planned
πŸ“‹ Presentation analytics Planned

πŸ“ Changelog

v1.0.0 (2026-05-22)

  • πŸŽ‰ Initial release
  • πŸ€– Multi-LLM support (OpenAI, Google, Anthropic, Ollama, Custom)
  • 🎨 Template-based slide generation
  • πŸ’¬ Chat-based iterative editing
  • πŸ“¦ PPTX export
  • 🐳 Docker support
  • πŸ–₯️ Electron desktop app

🀝 Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing)
  5. Open a Pull Request

πŸ“„ License

MIT License Β© 2026 RioRyuGen


πŸ‘€ Author

RioRyuGen

GitHub


Built with ❀️ using FastAPI, Next.js, and AI


About

DeckCraft - AI-powered presentation generator. Transform any idea into professional slide decks in seconds using GPT. Free, open source, JavaScript.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors