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.
What a project contains
Section titled “What a project contains”| File / folder | Role |
|---|---|
project.yaml | The schema: your tables, columns, keys, relationships, and indexes. |
data/<table>.csv | One file per table holding its rows, as plain CSV. |
history.log | An append-only journal of every command you have run. |
| the database file | The 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 is derived
Section titled “The database is derived”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:
rebuildYour work saves itself
Section titled “Your work saves itself”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.)
Temporary vs. named projects
Section titled “Temporary vs. named projects”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:
saveEmpty, untouched temporary projects are cleaned up automatically, so casual experimenting never leaves clutter behind.
Where projects live
Section titled “Where projects live”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.
Sharing a project
Section titled “Sharing a project”The export command packages a project as a zip you can send to anyone:
exportThe 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.