A high-performance, AI-assisted presentation editing platform built with React 19, Elysia, and TypeScript.
- Bun (v1.0+)
- Node.js (v20+)
# Install dependencies
bun install# Copy environment templates
cp apps/server/.env.example apps/server/.env
cp apps/web/.env.example apps/web/.envRequired: Set ANTHROPIC_API_KEY in apps/server/.env for AI assistant features.
# Start both Frontend and Backend
bun run dev- Frontend: http://localhost:3001
- Backend: http://localhost:3000
For portable deployment without installing dependencies, use the standalone binary.
# Download and extract
tar -xzf slides.tar.gz
cd slides
# Run with default settings (uses bundled data)
./slides --port 4000
# Run with custom slideshow directory
./slides --data-dir /path/to/slideshows --port 4000
# Run with AI assistant enabled
./slides --api-key sk-ant-xxx --port 4000 --open
# Optional one-time setup: save defaults + install launcher
./slides --init --data-dir /path/to/slideshows --port 4000 --api-key sk-ant-xxx
# After init, you can just run `slides` if the launcher was installed into your PATH.# Clone and install
git clone <repo-url>
cd slides
bun install
# Build standalone binary + archive
cd apps/server
bun run compile:standalone
# Output: dist-standalone/slides.tar.gz (~23MB; slides.zip on Windows)| Flag | Description | Default |
|---|---|---|
--port <n> |
Server port | 3000 |
--data-dir <path> |
Slideshow JSON directory | ./data/slideshows |
--api-key <key> |
Anthropic API key for AI features | (none) |
--open |
Open browser on start | false |
--init |
Save defaults to config + try installing launcher | - |
--install-path <path> |
Custom install dir for launcher symlink | auto-detected |
--help |
Show help | - |
Saved defaults live in ~/.config/slides/config.json (or %APPDATA%\slides\config.json on Windows) and are used when flags/env are not provided. Flags still win over saved config. To change defaults later, re-run slides --init with new values or edit that config file directly.
slides/
├── slides # Binary (launcher name)
├── web/ # Web assets (must be colocated)
└── data/slideshows/ # Default slideshows
└── default.json
You can use the bundled data/slideshows/ or point to your own directory with --data-dir.
# Run all tests
bun testWe maintain comprehensive documentation in the docs/ directory.
Start here:
- Product: What this is and why it exists.
- System: High-level architecture and technical overview.
- Process: How we work (PRs, Linear, maintenance).
Deep dives:
- Architecture: Detailed system design.
- Frontend: React app structure and patterns.
- Backend: API and server details.
Meta:
- Docs Architecture: How the documentation is organized.
.
├── apps/
│ ├── web/ # Frontend (React, TanStack Router)
│ └── server/ # Backend (Elysia, ORPC)
├── packages/
│ ├── api/ # Shared API definition
│ ├── config/ # Shared TS config
│ └── core/ # Core domain logic
└── docs/ # Documentation
- Runtime: Bun
- Monorepo: TurboRepo
- Frontend: React 19, TanStack Router, TanStack Query, TailwindCSS v4
- Backend: Elysia, ORPC
- Validation: Zod, TypeBox