~/Library/Application Support/app.reelpile.desktop/
data/ db.json, ig-cookies.txt, backups/
media/ videos, posters, images, extracted mp3s
bin/ yt-dlp, ffmpeg, gallery-dl, recognise
logs/ server.log, shell.log
The path is shown in Settings under Data. ⚠️ It is plain text: there is no "reveal in Finder" button and no way to change the folder from inside the app. The only Finder-opening action is Open logs.
The format is plain JSON. A single db.json. No SQLite. Writes are atomic (temp file, then rename), so a crash mid-save cannot corrupt the library.
Media files are named by the card's UUID: <uuid>.mp4, poster <uuid>.jpg, carousel <uuid>.1.jpg, extracted audio <uuid>.mp3.
Auto-backup, as it really is
- A snapshot is taken on save, at most once every 5 minutes, plus one at every app launch.
- The last 60 are kept. (The cap is shared between the two kinds, so in practice fewer than 60 of either.)
- They live in
data/backups/, in two shapes:db-2026-07-24T10-32-27.jsonfor the every-five-minutes kind anddb-start-2026-07-24T10-32-27.jsonfor the one taken at launch. - A snapshot is a copy of
db.json: boards, cards, positions, notes. Neither videos nor the Instagram cookie are in it — but if you have ever published a board, it does carry that board's write key, the credential that can overwrite or unpublish the link your client is looking at. The same is true of the⬇ Backupdownload, which servesdb.jsonwhole. It is not a secret-free file. - In Settings this is one row,
Auto-backup, readingon · N snapshots kept. There is no off switch. "on" is hard-coded.
How you actually use a snapshot matters. Automatically, they save you in exactly one situation: if db.json is missing or unreadable at start-up, the newest snapshot is loaded silently. There is no interface for picking a snapshot by hand. The ↩ Restore button only accepts a file you exported yourself with ⬇ Backup. To use an auto-snapshot you have to open the folder in Finder, and no button in the app opens that folder.
The four backup buttons
| Button | What it does |
|---|---|
⬇ Backup | downloads db.json: boards and cards, no video |
↩ Restore | loads such a JSON back |
⬇ Full backup (with videos & login) | a .tar of the library: database + all media + the Instagram cookie |
↩ Restore full backup… | native file picker, unpacks it back |
The note underneath, verbatim: "A full backup carries your videos and your Instagram login — keep it private. Restoring replaces your current board. Use ReelPile on one machine at a time."
Restoring is destructive and asks first; a copy of the current state is genuinely saved before it is replaced.
Something here wrong, or something missing? Tell us — the manual is corrected against the app, not the other way round.