Skip to content

Projects and storage

Everything you do in the playground lives in a project — a folder on disk. Understanding what is in that folder explains why your work is safe, shareable, and easy to inspect.

File / folderRole
project.yamlThe schema: your tables, columns, keys, relationships, and indexes.
data/<table>.csvOne file per table holding its rows, as plain CSV.
history.logAn append-only journal of every command you have run.
the database fileThe working database the playground queries. Derived — see below.

The first three are the authoritative, human-readable record of your project. You can open them in any editor, diff them in version control, and read them without the playground.

The database file the playground queries is built from project.yaml and the CSV files. Because it is derived, it never needs to be shared or backed up separately — and if it is ever missing or stale, the rebuild command regenerates it from the readable files:

rebuild

There is no “save” step to remember. Every command writes through to the files as it runs, so a project is always up to date on disk. (The save command exists for a different purpose: giving a temporary project a permanent name — see below.)

When you start the playground without naming a project, it creates a temporary project with an automatic name. Temporary projects are perfect for quick experiments. When you want to keep one, give it a name:

save

Empty, untouched temporary projects are cleaned up automatically, so casual experimenting never leaves clutter behind.

Projects are stored in a standard per-user location for your operating system. Override it for a single run with --data-dir <PATH> — handy for keeping a course’s projects together, or for testing.

The export command packages a project as a zip you can send to anyone:

export

The zip contains the readable files (project.yaml and data/) but not the derived database or your private history.log. The recipient opens it and the playground rebuilds the database for them. Exporting and importing has its own page.