"The portraits move here." — Every Hogwarts student, ever.
WizardingFrame turns any screen into a living, breathing magical portrait — just like the moving paintings in Harry Potter. Display your photos, Apple Live Photos, and short videos with cinematic effects that make them look like they belong on the walls of Hogwarts.
- Seamless looping slideshow of photos & videos
- Cinematic effects: film grain, vignette, warm color grading
- Converts Apple Live Photos into smooth looping animations
- Wizarding Mode — full Harry Potter portrait aesthetic
- Live reload — drop a file in the
media/folder and it appears instantly, no restart
| Device | How |
|---|---|
| macOS | Native screensaver (.saver bundle) |
| Raspberry Pi 4/5 + display | Chromium kiosk mode (recommended) |
| Old iPad / Android tablet | PWA — add to home screen |
| Any laptop / desktop | Just open a browser tab |
| Smart TV / Fire Stick | Browser tab |
The easiest way to run WizardingFrame on a Mac:
-
Build the screensaver:
cd screensaver && ./build.sh
Requires Xcode Command Line Tools (
xcode-select --install). -
Double-click
screensaver/WizardingFrame.saverto install. -
Open System Settings → Screen Saver, select WizardingFrame, click Options to choose your media folder:
- iCloud Drive:
~/Library/Mobile Documents/com~apple~CloudDocs/WizardingFrame/ - Local: any folder you pick (defaults to
~/Pictures/WizardingFrame/)
- iCloud Drive:
git clone https://github.com/ErickZBrambila/wizardingFrame.git
cd wizardingFrame
bash setup.sh
npm startgit clone https://github.com/ErickZBrambila/wizardingFrame.git
cd wizardingFrame
.\setup.ps1
npm startIf you see an execution policy error, first run:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- Drop photos/videos into the
media/folder - Open http://localhost:3000 — the browser opens automatically
- To upload from your phone: open http://[your-computer-ip]:3000/upload.html
Visit the URL shown in the terminal (e.g. http://192.168.1.42:3000) from any device on your WiFi network. The upload page has drag-and-drop and shows your current media library.
Live Photos become seamless bounce-loop videos — the real Harry Potter portrait effect.
Important: AirDrop sends only the still HEIC — the motion component is stripped. You must export as Unmodified Original to keep both files.
- Open Photos on your Mac
- Select the Live Photos you want
- File → Export → Export Unmodified Original
- Save them anywhere (e.g. Desktop)
- Move/copy the exported folder contents into
media/
Each Live Photo exports as a pair: IMG_XXXX.HEIC + IMG_XXXX.MOV
# macOS
brew install ffmpeg
# Raspberry Pi / Linux
sudo apt install ffmpegnpm run pipelineThe pipeline:
- Detects HEIC + MOV pairs automatically
- Converts each pair into a smooth
_loop.mp4bounce video - Deletes the originals so only the loop plays
- Your frame reloads instantly (no restart needed)
For custom input/output paths:
node pipeline/convert.js --input ./my-folder --output ./media
wizardingFrame/
├── screensaver/ # macOS .saver bundle (Swift + WKWebView)
│ ├── Sources/ # Swift source: WizardingFrameView, MediaSchemeHandler, ConfigureSheet
│ ├── build.sh # Build script → WizardingFrame.saver
│ └── WizardingFrame.saver/
├── server/ # Node.js — serves media, handles uploads, WebSocket
├── player/ # The display web app
│ ├── effects/ # Film grain + vignette canvas renderer
│ ├── modes/ # Wizarding mode (color grade + effects)
│ ├── styles/ # CSS (animations, crossfade, mode filters)
│ ├── index.html # Main frame display
│ └── upload.html # Upload UI (phone-friendly)
├── pipeline/ # ffmpeg: Live Photos → looping video
├── config/ # frame.json — your settings
├── docs/ # Raspberry Pi + iPad setup guides
├── media/ # Drop your content here (gitignored)
├── setup.sh # Setup script for macOS/Linux/Pi
└── setup.ps1 # Setup script for Windows
- Project scaffold + architecture
- Core web player with smooth crossfade
- Film grain + vignette effects
- Wizarding Mode (warm color grade + cinematic effects)
- Live folder watching (drop file → appears on frame)
- Upload page (phone-friendly, drag & drop)
- macOS + Windows + Pi setup scripts
- Live Photo → looping video converter (ffmpeg wrapper) with Ken Burns effect
- macOS native screensaver (.saver bundle, Swift + WKWebView)
- iCloud Drive + local media folder support in screensaver
- Web UI for managing config / switching modes
- HEIC/HEIF image support
- Raspberry Pi one-command installer
- iPad PWA improvements
- Community frame overlay themes
- Zen + Family mode refinements
- Mobile companion app
See docs/CONTRIBUTING.md. All skill levels welcome!
- Designers: SVG frame overlays
- Developers: new effects, modes, hardware support
- Docs: hardware guides, translations
MIT — free for everyone. Share the magic.