Click to expand/collapse
π€ 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 | β |
| 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 |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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!
π» Local Development
| Tool | Version | Purpose |
|---|---|---|
| Python | 3.11+ | Backend runtime |
| Node.js | 18+ | Frontend runtime |
| uv | Latest | Python package manager |
| npm | 9+ | Node package manager |
# 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 keyscd packages/api
uv run uvicorn server:app --host 0.0.0.0 --port 8000cd packages/web
npm install
npm run devπ 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 -dAccess at http://localhost:3000 π
π 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=falseOllama (Local)
LLM=ollama
OLLAMA_URL=http://localhost:11434Google Gemini
LLM=google
GOOGLE_API_KEY=AI...π‘ Endpoints
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"
}GET /api/v1/ppt/presentationsGET /api/v1/ppt/presentation/{id}/statusPOST /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# 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π 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"
}| 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 |
- π 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
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open a Pull Request
MIT License Β© 2026 RioRyuGen