:COUNTER 0 accounts required :INFO The Playground Slatesource has a page where every chip type is unlocked and nothing is saved. No signup wall, no trial, no email capture. You open it, you build something, you close the tab and it is gone. It exists because reading a feature list is a poor substitute for dragging a chip onto a grid and seeing what it does. :LINK https://slatesource.com/playground Open it in another tab and come back :INFO What You Get Three sample Info chips and an edit button. Click the button and the grid switches into edit mode, with a plus placeholder in every empty slot. Every published chip type is in the picker, including the ones that are normally paid items in the shop. The one exclusion is unreleased chips, which stay hidden even here. :CODE [language:typescript] const getAccessibleChipTypes = (): Set | undefined => { if (overrideRestrictions) return undefined; if (!chips || !activeUser) return new Set(); :INFO That Is the Whole Unlock The chip picker normally filters against the chip types the logged-in user owns. Returning undefined instead of a set means skip the filter entirely. Returning an empty set, which is what a logged-out visitor would otherwise get, means show nothing at all. The Playground is the only place in the codebase that passes overrideRestrictions. :NOTE The link on this page goes to a route registered as a plain sibling of login and register. No auth guard, no loader, no data fetched on entry. :INFO There Is No Backend This is the part worth being straight about. The Playground is one React screen holding a single array in component state. No localStorage, no sessionStorage, no IndexedDB, no API call anywhere in the screen. A refresh is a full reset, and the sample copy says so in the first chip rather than letting anyone find out the hard way. :INFO The Module Named Sandbox Is Something Else The backend has a package called sandbox. It is not this. It seeds development data on startup: users, chips, shop items, registration tickets, with a seeder file per developer. It has no controllers and no endpoints. Anyone reading the repo looking for the Playground's server side will find that package, and then find nothing behind it, because there is nothing behind it. :CHECKLIST What the Playground has and does not [x] Every published chip type in the picker [x] Edit mode, add, update, delete [x] Deep link with a query flag that opens straight into edit mode [ ] Saving [ ] Exporting to a real slate [ ] A reset button [ ] Sharing what you made :INFO The Missing Path Out The gap that matters most is the fourth unticked box. Someone builds a page they like in the Playground and there is no button that turns it into a slate on their account. They have to start again inside the editor. It is the obvious next step and it has not been built. :INFO Image Chips Will Fail Here Chips that carry an uploaded image post to the file endpoint, which permits anonymous reads but not anonymous writes. An anonymous Playground visitor adding a chip with a background image gets a generic upload error. Nothing in the Playground warns them first. It is a real rough edge, not a subtle one. :STATS :INFO Also Not Indexed The route sits in the no-index list for server-rendered metadata. A scratch surface with no stable content has nothing to offer a search engine, and every crawl of it would be a crawl of the same three placeholder chips. :INFO Why It Renders Correctly The Playground does not have its own renderer. It mounts the same chip rendering engine the real slate viewer uses, wrapped in the same two providers as the editor. What you see there is what a published page looks like, which is also why this page is a fair preview of it: the chips below you and the chips in the Playground come from the same components. :QUOTE [quotetype:plain] The fastest way to explain a chip is to let someone place one.