Skip to content

Quickstart

Get Slidefactory running and generate your first presentation.

# Start all services (PostgreSQL, Redis, MinIO, API, Worker)
docker compose -f docker-compose-api-only.yaml up -d

# Create admin user + API key
docker exec -it slidefactory-api slidefactory init all
docker exec -it slidefactory-api slidefactory api-key create "Dev Key" --user-id 1 --scopes "*"
# Save the generated key (starts with sf_)

Option B: From Source

Prerequisites

  • Python 3.11+, Node.js 20+
  • PostgreSQL 15+ with pgvector extension
  • Redis 7+
  • MinIO (or Azure Blob Storage)

Install

git clone https://github.com/cgast/slidefactory-core.git
cd slidefactory-core

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Configure

Create .env:

DATABASE_URL=postgresql://postgres:postgres@localhost:5432/slidefactory
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/1
STORAGE_PROVIDER=minio
MINIO_CLIENT_URL=http://localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
SECRET_KEY=$(openssl rand -hex 32)

AI_PROVIDER=openai
AI_MODEL=gpt-4
OPENAI_API_KEY=sk-your-key

N8N_API_URL=http://localhost:5678
N8N_API_KEY=n8n_api_your-key

Initialize & Start

# Database + admin user
slidefactory init all

# Create API key
slidefactory api-key create "Dev Key" --user-id 1 --scopes "*"

# Start backend
uvicorn slidefactory.app.main:app --host 0.0.0.0 --port 8080

# Start worker (separate terminal)
celery -A slidefactory.app.celery_app worker -Q process_queue,office365_queue,workflow_queue

Generate a Presentation

Via CLI

slidefactory presentation generate \
  --template-id 42 \
  --data-file data.json \
  --output-name "Q4_Report"

Via REST API

curl -X POST http://localhost:8080/api/presentations/generate \
  -H "X-API-Key: sf_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": 42,
    "data": {"company": "Acme Corp", "year": 2024},
    "output_name": "Q4_Report"
  }'

Via Web UI

Open http://localhost:8080/app/ and log in with your admin credentials.

Next Steps