{"id":22316898,"url":"https://github.com/somecho/p5cljs-editor","last_synced_at":"2025-07-06T02:38:17.946Z","repository":{"id":166966969,"uuid":"642521327","full_name":"somecho/p5cljs-editor","owner":"somecho","description":"Write P5 sketches using ClojureScript in the browser","archived":false,"fork":false,"pushed_at":"2024-01-02T19:06:17.000Z","size":7381,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T04:13:02.642Z","etag":null,"topics":["client-side","cljs","clojurescript","creative-coding","editor","javascript","js","p5","p5js","processing","reactjs","web-application","web-editor"],"latest_commit_sha":null,"homepage":"https://p5cljs-editor.soch.cc","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/somecho.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-05-18T18:58:49.000Z","updated_at":"2024-12-31T00:23:36.000Z","dependencies_parsed_at":"2024-01-02T20:24:42.676Z","dependency_job_id":"5e2a6388-0d35-4a8e-b316-e8feb84f9a43","html_url":"https://github.com/somecho/p5cljs-editor","commit_stats":null,"previous_names":["somecho/p5-cljs-web-editor","somecho/p5cljs-editor"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/somecho/p5cljs-editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fp5cljs-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fp5cljs-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fp5cljs-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fp5cljs-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/somecho","download_url":"https://codeload.github.com/somecho/p5cljs-editor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fp5cljs-editor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263839204,"owners_count":23518235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-side","cljs","clojurescript","creative-coding","editor","javascript","js","p5","p5js","processing","reactjs","web-application","web-editor"],"created_at":"2024-12-03T23:08:13.157Z","updated_at":"2025-07-06T02:38:17.922Z","avatar_url":"https://github.com/somecho.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/banner.png/\"\u003e\n\u003c/div\u003e           \n\n---\n![GitHub package.json version](https://img.shields.io/github/package-json/v/p5cljs-editor/p5cljs-editor.github.io)\n![](https://github.com/p5cljs-editor/p5cljs-editor.github.io/actions/workflows/test.yml/badge.svg)\n\nInspired by the wonderful [p5.js web editor](https://editor.p5js.org/). Now you can write p5 sketches using [ClojureScript](https://clojurescript.org/) in your browser! The p5.cljs editor features:\n- 100% client side compiling (no server needed)\n- third-party extensibility via adding CDN's\n- anonymously shareable sketches\n\nGet started writing p5 sketches in the [p5.cljs editor](https://p5cljs-editor.soch.cc/).\n\n\n## Examples\nThere is a growing collection of tutorials and sketches. Have a look at them at [the gallery](./gallery.md). Tutorials and sketches are open for community contributions. To contribute, simply modify `gallery.md` by adding a title with a link and your name. Please keep in mind that list is sorted alphabetically by title.\n\n## How your sketches are made shareable\nBy opting out of the use of a database, the p5.cljs editor takes a different approach. It uses the URL as persistent data structure. All assets are encoded with the deflate algorithm and appended to the URL as a parameter. This means, after running your sketch, all you need to do is copy the link and share it.\n\nThis approach does impose limitations, such as the fact that sketches have limited lengths based on the length of the resulting encoded URL. It also means that data such as image, audio and font files cannot be used shareably. To use these features, it is recommended to try p5.cljs locally on your system. \n\n## Local development\nThe entire editor is made using React. All you need is yarn. Clone the repo, install dependencies and start.\n```\ngit clone https://github.com/somecho/p5cljs-editor\ncd p5cljs-editor\nyarn \nyarn dev\n```\n### Testing\nJest is the test runner used for this project and Puppeteer the main framework. To test, make sure the dev server is running at `http://localhost:5173` then `yarn test`. Alternatively, if you are on a Linux environment, you can run the tasks in parallel like so `yarn dev \u0026 yarn test`. The Github Action that tests the project uses the latter.\n\n## Compiling ClojureScript in the browser\nThe ClojureScript library for Clojure can, using `cljs.js/compile-str` compile itself (i.e. a string of valid ClojureScript). To leverage this _pretty cool_ fact, this editor uses the ClojureScript core library already compiled to JavaScript using [cljs-compiler-compiler](https://github.com/somecho/cljs-compiler-compiler). \n\n## Contributing \nContributors are welcome. There are no concrete contributing guidelines right now. If you would like to contribute, you should \n1. Fork this repo\n2. Create a branch from the **dev** branch\n3. Make a pull request to the **dev** branch\n4. Make sure your changes do not break anything. See [testing](#Testing)\n\n## Disclaimer\nThis project is not affiliated with [p5.js](https://p5js.org/) or the [Processing Foundation](https://processing.org/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomecho%2Fp5cljs-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsomecho%2Fp5cljs-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomecho%2Fp5cljs-editor/lists"}