# OpenSlides

> A free, open-source, offline desktop app for creating animated code presentations with Magic Move transitions, syntax highlighting, and stepped highlights.

OpenSlides is a free, open-source desktop application built by CodeWithThiha that turns source code into polished presentation slides. It runs entirely offline using a Tauri 2 + Rust shell over a local SQLite database, requiring no account, subscription, or internet connection. The project is released under the MIT license and is positioned as a direct alternative to the commercial codeslides.app.

## What It Is

OpenSlides is a code-presentation tool designed for developers, educators, content creators, and conference speakers who want to walk an audience through code visually. Rather than screensharing a static editor, users build slide decks where each slide contains code, and "highlight steps" let them dim unrelated lines and bring specific sections forward — advancing through the sequence with arrow keys. Magic Move transitions animate tokens between slide states so identifiers visually travel from one code version to the next instead of hard-cutting.

## Tech Stack and Architecture

The app is built with a modern, deliberately chosen stack:

- **Desktop shell:** Tauri 2 and Rust
- **Interface:** Svelte 5 (runes), TypeScript, Vite 7, and Tailwind CSS 4
- **Code rendering:** Shiki (run in a shared web worker) and shiki-magic-move
- **Local storage:** SQLite via sqlx on the Rust side, running in WAL mode
- **Motion and drag-and-drop:** Svelte transitions/springs, svelte-dnd-action, and custom pointer drag-and-drop

The editor surface is an uncontrolled textarea rather than a heavy code-editor component, which keeps slide-switching instant. Caret positions are stored outside React/Svelte state, and all writes go through a shared save queue that serializes and debounces per slide.

## Offline-First Design

Every piece of durable state — projects, slides, thumbnails, and the full-text search index — lives on disk as a local SQLite file. The syntax-highlighting worker, themes, and language grammars are bundled and loaded lazily from the local app rather than fetched at runtime. This means OpenSlides works on a plane, on a stage with unreliable venue Wi-Fi, or in any environment with no network access at all.

## Highlight Steps and Presentation Features

A slide in OpenSlides is a sequence, not just a static code block. Key presentation capabilities include:

- **Stepped highlights:** Select code, create a highlight step, and dim everything outside the selection during presentation. Number keys `1`–`9` jump to a step; `0` returns to the clean slide.
- **Magic Move transitions:** Token-level animation between slide states, with highlight geometry computed in TypeScript using a monospace path with a DOM Range fallback.
- **Autoplay:** Advances by each slide's configured duration; highlight steps consume extra navigation steps before moving to the next slide.
- **Full-screen presentation mode:** Keyboard-isolated from the editor so presenting never accidentally triggers edit shortcuts.
- **SQLite FTS5 search:** Slides are indexed with full-text search, kept in sync by database triggers, with a JavaScript substring fallback when the backend is unavailable.

## Update: v1.2.1 (July 2026)

The latest release, v1.2.1 (published 2026-07-25), is the most recent in a rapid release sequence that began in mid-July 2026. Notable milestones:

- **v1.2.0** was the first major release built from a Svelte 5 rewrite of the earlier React app, delivering significantly more stable preview, highlight, and code-transition rendering.
- **v1.2.1** switched build tooling from npm to Bun, added a macOS Universal binary covering both Apple Silicon and Intel, and fixed a dashboard visual glitch.
- Platform coverage now includes macOS (Apple Silicon, Intel, Universal), Windows (x64, ARM64), and Linux (`.deb` and `.rpm` packages).

## Open-Source Deployment Model

OpenSlides is available as prebuilt installers from GitHub Releases or can be built from source using Bun and a stable Rust toolchain with Cargo. The MIT license allows forking, modification, and redistribution without restriction. All project data is stored as a local SQLite file that users own outright — copyable, version-controllable, and fully portable.

## Features
- Code slide presentations with syntax highlighting
- Magic Move token-level transitions between slides
- Stepped code highlights with dim/enlarge controls
- Offline-first — no account, no network required
- Local SQLite storage with WAL mode
- Shiki-powered syntax highlighting in a shared web worker
- 16 syntax themes with live preview
- Full-text search via SQLite FTS5
- Drag-and-drop slide reordering
- Autoplay with per-slide timing
- Full-screen presentation mode with keyboard controls
- Slide thumbnails and hover previews
- Command palette and keyboard navigation
- Export and import slide projects
- macOS, Windows, and Linux support

## Integrations
SQLite, Shiki, shiki-magic-move, Tauri 2, Svelte 5, Rust, Bun

## Platforms
WINDOWS, MACOS, LINUX, WEB, API, VSC_EXTENSION

## Pricing
Open Source

## Version
1.2.1

## Links
- Website: https://open-slides-app.vercel.app
- Documentation: https://open-slides-app.vercel.app
- Repository: https://github.com/codewiththiha/OpenSlides
- EveryDev.ai: https://www.everydev.ai/tools/openslides
