Premium apps

Project Backup Builder

Combine usefulweb project files into one Bundlekeep backup with checksums.

Either project objects, or {"name": "file.json", "content": "<project text>"} to keep the exact text and name.

More options

Recorded as the backup and file date. Empty = no date, so the same files always give the identical backup.

Try an example: Back up a cabinet and a circuit · Keep exact file names and skip a duplicate

More about this tool

How it works

Give a list of project files from any usefulweb premium apps: the tool packs them unchanged into one Bundlekeep backup, names each file after its project, skips identical copies and records a SHA-256 checksum per file.

  • Each entry is kept as text: entries given with "content" stay byte for byte, project objects are written as indented JSON. Entries must be JSON objects or arrays of at most 10 MB.
  • File names come from the entry or from the project name plus the app’s extension (for example kitchen.kerfwise.json); clashing names get a number, names without folders or reserved characters are enforced.
  • Identical files (same SHA-256 of the text) are added once. Limits: 200 files and 50 MB per backup.
  • The backup only records a date when you enter one, so the same files and settings always produce the identical backup file and checksum.
  • The backup is the Bundlekeep format described in project.schema.json; open it in Bundlekeep to review, verify and restore single files.

Sources

Part of Bundlekeep

How to use the Project Backup Builder

Pack project files from several usefulweb apps into one Bundlekeep backup with a SHA-256 checksum per file.

What it is for

If you use several usefulweb premium apps, your work ends up in many small project files: a kitchen in Kerfwise, a circuit in Ohmforge, a household plan in Hearth. The Project Backup Builder packs them into one Bundlekeep backup file, so a script or an AI agent can archive them in one step and you can open the result in Bundlekeep to review and restore single projects.

Every file is stored unchanged — byte for byte when you pass it as text — together with the app it belongs to and a SHA-256 checksum recorded at that moment. Identical files are added only once.

The builder does not read projects from your browser (the Bundlekeep workspace does that with its scan), does not encrypt the backup and does not check whether each app accepts the project.

Worked example

The first example packs two templates: a Kerfwise base cabinet and the Ohmforge "LED with series resistor" circuit. The tool answered: "Packed 2 project files from 2 apps into one backup."

Worked example
FileAppProjectBytes
base-cabinet-600.kerfwise.jsonKerfwiseBase cabinet 600413
led-with-series-resistor.ohmforge.jsonOhmforgeLED with series resistor2,580

Together the projects measured 2,993 bytes; the downloadable backup.bundlekeep.json was 4,073 bytes, because it adds names, checksums and indentation. Both files were marked "Verified". No backup date was entered, so running the example again gives a byte-identical file with the same checksum.

The second example shows two details. It passes the cabinet twice — once named my-base-cabinet.kerfwise.json, once as copy.json with identical text — plus a Twinworks line as a plain object. The result: 2 files, 6,650 bytes of projects and "Identical copies skipped: 1". The cabinet kept the name you gave it, the Twinworks project was named after its content, 3-station-line.twinworks.json. This example also sets the backup date 2026-10-31, which is stored as 2026-10-31T00:00:00Z for the backup and each file; the download measured 8,245 bytes.

How to read the result

  • Files and Apps count what went into the backup; Identical copies skipped counts duplicates by checksum.
  • The table lists each file's name, app, project name and size. "Embedded data" counts pictures stored inside a project.
  • Download backup is the .bundlekeep.json file. Open it in the Bundlekeep workspace or check it later with the Project Backup Verifier.
  • Warnings name files that need extra care, for example a Paperwell dossier without its documents.

Tips and common mistakes

  • Pass {"name": "…", "content": "…"} when the exact text matters, for example to keep a file signed or hashed elsewhere. Objects are re-serialised with two-space indentation.
  • Names must be unique and without folders; clashing names get -2, -3 and so on.
  • The projects field is a JSON array written as text. In a script, build the array first and send JSON.stringify(array).
  • Backup date is optional. Leave it empty for reproducible archives (the same files always give the same checksum), or enter the day you made the backup to see it later in Bundlekeep.
  • Limits: 200 files, 10 MB per file, 50 MB per backup.
  • The download link expires after about two hours. Store the file right away.

FAQ

Is the backup encrypted?

No. Encrypt it with Local File Encryption Studio before storing it somewhere others can read.

Can I add files to an existing backup?

Not with this tool. Open the backup in the Bundlekeep workspace and add files there, or rebuild it with all files.

What if a file has no known format?

It is still added, with a warning, as long as it is a JSON object or array.

Does the server keep my projects?

Only the generated download, for about two hours. Use the workspace for private data: it works entirely in your browser.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://bundlekeepbackupbuilder.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://bundlekeepbackupbuilder.usefulweb.app/mcp · tool name bundlekeep_backup_builder
Example request
curl -s -X POST https://bundlekeepbackupbuilder.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{}'
Feedback · ideas & bug reports welcome