Skip to content

Commit adf254a

Browse files
inkko44claude
andcommitted
Bolt Slides — initial open source release
Presentation decks that are working web apps: a responsive React deck engine (paged navigation, click-builds, sidebar + grid view, content- anchored annotations, synced presenter mode) plus the Bolt skill that teaches an agent to author complete decks from a single prompt. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 9517e02 commit adf254a

53 files changed

Lines changed: 10114 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bolt/skills/slides/SKILL.md

Lines changed: 318 additions & 0 deletions
Large diffs are not rendered by default.

.github/assets/cover.png

528 KB
Loading

.github/assets/grid-view.png

343 KB
Loading

.github/workflows/ci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-node@v4
15+
with:
16+
node-version: 22
17+
cache: npm
18+
- run: npm ci
19+
- run: npx tsc --noEmit
20+
- run: npm run build

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules/
2+
dist/
3+
.vite/
4+
.DS_Store
5+
.env

CONTRIBUTING.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Contributing to Bolt Slides
2+
3+
Thanks for helping make slides less boring.
4+
5+
## Setup
6+
7+
```bash
8+
npm install
9+
npm run dev # demo deck at http://localhost:5173
10+
```
11+
12+
Before opening a PR:
13+
14+
```bash
15+
npx tsc --noEmit
16+
npm run build
17+
```
18+
19+
CI runs the same two checks.
20+
21+
## Lay of the land
22+
23+
- **`src/deck/`** — the presentation engine and chrome (navigation, sidebar, grid view, annotations, presenter mode). Changes here affect every deck built from this template, so keep them small, keyboard-accessible, and responsive.
24+
- **`src/components/`** — the slide component library. New components are welcome; they must be responsive (no fixed canvas assumptions) and themable via the tokens in `src/styles/tokens.css` only.
25+
- **`.bolt/skills/slides/SKILL.md`** — the authoring guide agents follow. If you change engine behavior, shortcuts, or component APIs, update the skill in the same PR.
26+
- **`src/App.tsx`** — the demo deck. It exists to showcase every component; keep it in sync when you add one.
27+
28+
## Guidelines
29+
30+
- Theme through `tokens.css` variables — never hard-code colors in components.
31+
- Test at a phone viewport (≤ 640px) as well as desktop; the dock, sidebar, grid view, and annotation toolbar all have mobile layouts.
32+
- Keep the demo deck presentable — it's many people's first impression.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 StackBlitz
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 135 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,135 @@
1-
# bolt-slides
1+
<div align="center">
2+
3+
# ⚡ Bolt Slides
4+
5+
**Presentation decks that are working web apps.**
6+
7+
One prompt in — your agent builds a deck where every slide is a live, responsive web page.
8+
3D, live data, working prototypes, and whatever you can prompt.
9+
10+
[![Open in Bolt](https://img.shields.io/badge/Open_in-⚡_Bolt-1a1a2e?style=flat-square)](https://bolt.new/github.com/stackblitz/bolt-slides)
11+
[![Open in StackBlitz](https://img.shields.io/badge/Open_in-StackBlitz-1389fd?style=flat-square)](https://stackblitz.com/github/stackblitz/bolt-slides)
12+
[![License: MIT](https://img.shields.io/badge/License-MIT-c8f56e?style=flat-square)](./LICENSE)
13+
14+
<img src=".github/assets/cover.png" alt="Bolt Slides — cover slide with the floating dock" width="820" />
15+
16+
</div>
17+
18+
---
19+
20+
Slides have been static for forty years. Bolt Slides makes them software:
21+
22+
- **Make your slides work for you.** Selling a house? Add a 3D walkthrough, a mortgage calculator, an interactive neighborhood map.
23+
- **Make the room build on them.** Your team drops ideas onto a shared whiteboard, live, while you present.
24+
- **Make the data answer questions.** Filter the table, sort the chart, spin a 3D model, drill into the number that matters — mid-presentation.
25+
- **Every screen is a front row seat.** Slides are responsive web layouts, not a fixed 1080p canvas — the audience can follow along from their phones.
26+
27+
Under the hood it's a classic paged deck — Slidev-style dock, thumbnail sidebar, grid overview, click-builds, annotations, synced presenter mode — where each slide is a plain React component. If you can build it for the web, you can present it.
28+
29+
## Quick start
30+
31+
**With an agent (the fun way).** Open the repo in [Bolt](https://bolt.new/github.com/stackblitz/bolt-slides) and prompt it:
32+
33+
> Build me a deck pitching «your thing» to «your audience».
34+
35+
The bundled skill ([`.bolt/skills/slides/SKILL.md`](./.bolt/skills/slides/SKILL.md)) teaches the agent how to theme, compose, and write the deck — including setting the tab title and favicon — so a single prompt returns a finished, presentable app.
36+
37+
**By hand.**
38+
39+
```bash
40+
git clone https://github.com/stackblitz/bolt-slides
41+
cd bolt-slides
42+
npm install
43+
npm run dev
44+
```
45+
46+
The dev server opens a 26-slide demo that exercises every component. Delete the demo slides in [`src/App.tsx`](./src/App.tsx) and author your own.
47+
48+
## Authoring
49+
50+
Each top-level child of `<Deck>` is one slide. Compose them from the component library, or write plain JSX:
51+
52+
```tsx
53+
<Deck>
54+
<Cover
55+
kicker="Acme · Series A"
56+
title={<span className="accent-text">Acme</span>}
57+
subtitle="Answers, not dashboards."
58+
notes="Welcome — set up the problem, then hold a beat."
59+
/>
60+
61+
<Slide center nav="Thesis">
62+
<h2 className="headline">
63+
Dashboards are everywhere. <span className="accent-text">Insight isn't.</span>
64+
</h2>
65+
<Build at={1}>
66+
<p className="subhead">Acme turns raw events into answers — automatically.</p>
67+
</Build>
68+
</Slide>
69+
70+
<Agenda
71+
kicker="Agenda"
72+
title="What we'll cover."
73+
items={['The problem', 'How it works', { title: 'Pricing & the ask', hint: '5 min' }]}
74+
/>
75+
</Deck>
76+
```
77+
78+
- **`<Build at={n}>`** reveals content on the nth click — arrow keys step through builds before advancing slides, forward *and* back.
79+
- **`notes="…"`** on any slide shows up in presenter mode; notes you edit while presenting persist locally.
80+
- Slides are ordinary React — fetch live data, mount a 3D scene, embed your actual product.
81+
82+
## Presenting
83+
84+
<img src=".github/assets/grid-view.png" alt="Grid view of every slide" width="820" />
85+
86+
| Key | Action |
87+
| --- | --- |
88+
| `` `` `Space` | Next (reveals builds first) |
89+
| `` `` | Previous (rewinds builds) |
90+
| `Home` / `End` | First / last slide |
91+
| `S` | Sidebar — thumbnail rail |
92+
| `G` | Grid view — every slide at once |
93+
| `A` | Annotate — pen, highlighter, shapes, eraser |
94+
| `F` | Fullscreen |
95+
| `P` | Presenter mode — synced new tab |
96+
| `H` | Hide the UI |
97+
| `Esc` | Close overlays |
98+
99+
- **Presenter mode** opens in a second tab with a timer, next-slide preview, and editable notes — kept in sync with the audience tab via `BroadcastChannel`.
100+
- **Annotations are content-anchored**: a circle drawn around a stat on a laptop rings the same stat on a phone, wherever the layout moved it. Drawings persist per slide.
101+
- **Deep links**: the URL hash tracks the slide (`/#7`), so you can share a link straight to a slide.
102+
103+
## Component library
104+
105+
| | Components |
106+
| --- | --- |
107+
| **Structure** | `Cover` `Agenda` `Section` `Split` `Bento` `Slide` |
108+
| **Data** | `Charts` (bar · line · donut) `Table` `StatGrid` `BigNumber` `CountUp` `VisualDashboard` |
109+
| **Story** | `Quote` `Contrast` `Comparison` `Timeline` `Steps` `Chat` |
110+
| **Product** | `CodeWindow` `BrowserFrame` `Pricing` `Team` |
111+
| **Flair** | `Globe` `TiltCard` `SpotlightCard` `Marquee` `Accordion` `Tabs` |
112+
113+
All of them are demoed in the bundled starter deck, and all of them are responsive.
114+
115+
## Theming
116+
117+
Every color, font, radius, and shadow lives in the `:root` block of [`src/styles/tokens.css`](./src/styles/tokens.css). Change `--primary` and the entire deck — chrome included — recolors. Nine ready-made theme directions are documented in the skill, from editorial luxury to dark technical.
118+
119+
## Project structure
120+
121+
```
122+
.bolt/skills/slides/ the agent-facing authoring guide (the skill)
123+
src/deck/ engine + chrome — Deck, Slide, Build, Reveal, Annotator
124+
src/components/ the slide component library
125+
src/styles/ tokens.css (theme) + base.css (system styles)
126+
src/App.tsx your deck (ships with the component demo)
127+
```
128+
129+
## Contributing
130+
131+
Issues and PRs welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md). `npm run dev` to hack, `npx tsc --noEmit && npm run build` before you push.
132+
133+
## License
134+
135+
[MIT](./LICENSE) © StackBlitz

index.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<!-- Always replace the title + favicon emoji to match the deck topic -->
7+
<title>Replace — your deck title</title>
8+
<link
9+
rel="icon"
10+
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🎞️</text></svg>"
11+
/>
12+
<meta name="theme-color" content="#05070a" />
13+
</head>
14+
<body>
15+
<div id="root"></div>
16+
<script type="module" src="/src/main.tsx"></script>
17+
</body>
18+
</html>

0 commit comments

Comments
 (0)