How app data is stored, backed up, and protected.
All app data is stored in a single root directory. By default this is the folder where the app was installed, but during development it is the source code directory. Everything under this root is self-contained — moving the root folder moves all your data.
| Folder / File | Contents |
|---|---|
data/pipeline.json | All pipeline entries (business info, step statuses, URLs, notes). |
data/queue.json | Businesses discovered but not yet evaluated in the Swiper. |
data/rejected.json | Businesses you pressed Pass on. Never shown again. |
data/saved_searches.json | Saved Discovery presets (niche, coordinates, radius, chunks). |
data/temp/ | Temporary prompt files created during AI operations. Auto-cleaned after each run. |
downloaded_sites/ | Raw website copies downloaded by Cyotek WebCopy. One subfolder per slug. |
edited_sites/ | AI-rebuilt React sites. One subfolder per slug. This is the working directory for all AI operations. |
example_sites/ | Sites downloaded via the ★ EXAMPLE action, organized by niche subfolder. |
Site Backups/ | Automatic backups created after each Form/Implement step. Organized as Site Backups/<slug>/Edition N/. |
Hippopotamoose does not use a database. All pipeline, queue, and rejected data is stored as JSON arrays in flat text files. This design offers:
pipeline.json in any text editorTo prevent data corruption if the app crashes during a save, all JSON writes use an atomic process:
.tmp file beside the real file.fsync)..tmp file replaces the real file atomically using os.replace().This means you will never have a half-written, corrupted JSON file. If the process is interrupted between steps, the previous version of the file is preserved intact.
If the app exits while a pipeline step shows in_progress (e.g. the AI terminal was open), that step would be permanently stuck. On every startup, the app scans for any in_progress steps and resets them to not_started. You can safely re-run any step after a crash.
A site backup is automatically created every time the Form / Implement step completes successfully. Backups are stored in Site Backups/<slug>/Edition N/ where N increments with each revision.
Backups are full folder copies — they include all site files at that point in time. You can restore a previous edition by manually copying the folder back to edited_sites/<slug>/.
If a JSON data file cannot be parsed (e.g. due to disk error or manual editing), the app renames the corrupt file with a .corrupt suffix and creates a new empty file in its place. This prevents a startup crash. You can inspect the .corrupt file with a text editor to attempt manual recovery.
Use Settings → Export All Data regularly to keep an off-site backup. The export ZIP excludes node_modules/ to keep file sizes manageable.