https://github.com/spirali/fairyflow
Python-driven tool for creating animated slides and general-purpose animations
https://github.com/spirali/fairyflow
Last synced: about 2 months ago
JSON representation
Python-driven tool for creating animated slides and general-purpose animations
- Host: GitHub
- URL: https://github.com/spirali/fairyflow
- Owner: spirali
- License: mit
- Created: 2026-03-21T18:41:53.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-17T12:30:18.000Z (2 months ago)
- Last Synced: 2026-05-17T14:28:17.771Z (2 months ago)
- Language: Rust
- Homepage:
- Size: 5.1 MB
- Stars: 7
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FairyFlow — animated slides & animations in Python
Documentation ·
Get started ·
Examples
---
**FairyFlow** is a Python-driven tool for creating animated slides and general-purpose animations. You write plain Python, and FairyFlow evaluates it live in an interactive environment that keeps your code, scene tree, and rendered result in sync.
## Key features
- **Python-first authoring** — animations are plain `.py` scripts; no DSL to learn
- **Live interactive environment** — edit code, press Ctrl+Enter, see the result instantly
- **Easy scene exploration** — code editor connects code, the scene tree, and elements in rendered image
- **Vector scene graph** — scenes are stored as vector graphics and rasterized at the last moment, so any output resolution is lossless
- **Presentation cues** — `cue()` pauses the player for click-to-advance presentations
- **Multiple export formats** — standalone `.ffpkg` player package, MP4 video, and multi-page PDF
- **Performant backend** — Backend is implemented in Rust
## Documentation
****
## Quick start
```bash
pip install fairyflow
fairyflow init my_project
fairyflow open my_project
```
`fairyflow open` starts a local web server and prints the URL to the interactive studio. Open `scenes/scene1.ffpy` in the editor, write some code, and press Ctrl+Enter to evaluate:
```python
with Scene():
stext("Hello world!").fade_out()
```
## Project layout
```
my_project/
├── fairyflow.toml ← project settings (fps, prologue path)
├── prologue.py ← shared imports and defaults for all scenes
├── scenes/
│ └── scene1.ffpy ← animation code
└── sequences/
└── sequence1.ffsq ← ordered playlist of scenes for export
```
## License
MIT — see [LICENSE](LICENSE).