P5 Code Sandbox

All Contributors

Experiment to have a code sandbox powered by Monaco editor for testing p5.js code. Based on this blog post "Create a JavaScript Code Sandbox" by Matija. The idea is to be able to build a documentation page for sketches produced during seminars, like in my seminar gestalten-in-code but have all the sketches editable in the sandbox.

See a demo over at p5.inpyjamas.dev

Features

Current feature set is limited but it can:

  • Save changes to local storage
  • Control via component prop if changes should be saved to local storage
  • Control via URL SearchParameters if the local storage should be disabled
  • Format using Prettier
  • All the great features Monaco has.

See @ff6347 p5js code sandbox project for planned features

Development

npm ci
npm run dev

πŸš€ Project Structure

Inside of your Astro project, you'll see the following folders and files:

/
β”œβ”€β”€ public/
β”‚   └── favicon.svg
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── sandbox.css // the components css
β”‚   β”‚   └── Sandbox.tsx // the component to load in pages
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── local-storage.ts // the local storage customHook
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── iframe-source.ts // the html for the iframe
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Layout.astro
β”‚   └── pages/
β”‚       └── index.astro
└── package.json

Astro Docs

Astro looks for .astro or .md files in the src/pages/ directory. Each page is exposed as a route based on its file name.

There's nothing special about src/components/, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.

Any static assets, like images, can be placed in the public/ directory.

🧞 Commands

All commands are run from the root of the project, from a terminal:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:4321
npm run build Build your production site to ./dist/
npm run preview Preview your build locally, before deploying
npm run astro ... Run CLI commands like astro add, astro check
npm run astro -- --help Get help using the Astro CLI

πŸ‘€ Want to learn more?

Feel free to check our documentation or jump into our Discord server.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Fabian MorΓ³n Zirfas
Fabian MorΓ³n Zirfas

πŸ’» 🎨 πŸ€” πŸš‡

This project follows the all-contributors specification. Contributions of any kind welcome!