A markdown-based presentation editor with AI-powered content and theme generation. Built as an Nx monorepo with Angular, Express, and PostgreSQL.
- Markdown editor with live slide preview (powered by Monaco Editor)
- Slide thumbnails with theme-aware rendering
- Resizable editor panes
- Mermaid diagram support with theme-aware styling
- Multiple built-in themes (Default, Dark, Minimal, Corporate, Creative)
- Custom theme creation (manual color picker + AI generation)
- AI assistant for generating slide content and styles (supports Anthropic, OpenAI, Gemini)
- MCP server for AI tool integration (Claude Code, etc.)
- Presentation mode
- Auto-save
- Node.js (v20+)
- npm
For web version:
- Docker (for PostgreSQL) or a local PostgreSQL instance
For desktop version:
- Rust (latest stable)
git clone https://github.com/BenjaminDobler/slides.git
cd slidesnpm installUsing Docker (recommended):
docker compose up -dThis starts a PostgreSQL 16 instance on port 5432 with user postgres, password postgres, and database slides.
Or use your own PostgreSQL instance.
Create a .env file in the project root:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/slides?schema=public
JWT_SECRET=your-secret-key
ENCRYPTION_KEY=a-32-character-encryption-key!!
DATABASE_URL— PostgreSQL connection stringJWT_SECRET— Secret for signing JWT auth tokensENCRYPTION_KEY— Used to encrypt stored AI provider API keys (must be 32 characters)
npx prisma migrate deployThis creates the built-in themes:
npx prisma db seedIn two terminals (or use &):
# Terminal 1 — Backend (port 3333)
npx nx serve backend
# Terminal 2 — Frontend (port 4200)
npx nx serve frontendOpen http://localhost:4200 in your browser.
The desktop version runs without authentication and uses a local SQLite database. No PostgreSQL or Docker required.
npm run desktopThis starts the frontend dev server and launches the Tauri app. Hot reload is enabled for the frontend.
npm run desktop:buildBuilt packages are in apps/desktop/src-tauri/target/release/bundle/:
- macOS:
dmg/Slides_*.dmg - Windows:
msi/*.msiandnsis/*.exe - Linux:
deb/*.debandappimage/*.AppImage
If you see "app is damaged" error on macOS, run:
xattr -cr /Applications/Slides.appslides/
apps/
backend/ # Express API server (web version)
frontend/ # Angular application
desktop/ # Tauri desktop app
src-tauri/ # Rust backend for desktop
libs/
markdown-parser/ # Shared markdown-to-slides parser
shared-types/ # Shared TypeScript interfaces
prisma/
schema.prisma # Database schema (web version)
seed.ts # Theme seed data
migrations/ # Prisma migrations
Slides includes a Model Context Protocol (MCP) server that allows AI tools like Claude Code to create and manage presentations.
The MCP server is built into the desktop app and runs automatically on http://localhost:3332/mcp/sse.
Add to your Claude Code config (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"slides": {
"url": "http://localhost:3332/mcp/sse"
}
}
}No authentication required — the MCP server runs locally with the desktop app.
For the web version, use the published MCP server package:
{
"mcpServers": {
"slides": {
"command": "npx",
"args": ["-y", "slides-mcp-server"],
"env": {
"SLIDES_AUTH_TOKEN": "<your-token>",
"SLIDES_BACKEND_URL": "http://localhost:3332"
}
}
}
}Get your auth token from Settings in the web app.
- Frontend: Angular 21, Monaco Editor, Mermaid.js
- Backend (Web): Express, Prisma 7, PostgreSQL
- Backend (Desktop): Rust, Axum, SQLite
- Desktop: Tauri 2
- AI: Anthropic, OpenAI, and Gemini provider support
- Tooling: Nx monorepo, TypeScript