{"id":32343913,"url":"https://github.com/rollacaster/pim-book","last_synced_at":"2026-07-15T15:32:46.266Z","repository":{"id":90673832,"uuid":"606490953","full_name":"rollacaster/pim-book","owner":"rollacaster","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-03T17:58:33.000Z","size":4341,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-24T04:28:27.496Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rollacaster.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-25T16:48:09.000Z","updated_at":"2023-02-27T18:16:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"9addd9d9-0835-4ba8-a135-605f749301a3","html_url":"https://github.com/rollacaster/pim-book","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rollacaster/pim-book","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollacaster%2Fpim-book","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollacaster%2Fpim-book/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollacaster%2Fpim-book/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollacaster%2Fpim-book/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rollacaster","download_url":"https://codeload.github.com/rollacaster/pim-book/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollacaster%2Fpim-book/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35511386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-10-24T04:17:46.028Z","updated_at":"2026-07-15T15:32:46.261Z","avatar_url":"https://github.com/rollacaster.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rollacaster/pim-book\n\n[![License][license]][license-url]\n\nTODO replace me with a description of your project!\n\nYour first [Clerk][clerk-url] notebook lives at\n`notebooks/rollacaster/pim_book.clj`.\n\n\u003e **Note**\n\u003e This project was generated by the [`jsxgraph/clerk`\n\u003e template](https://github.com/mentat-collective/JSXGraph.cljs/tree/main/resources/jsxgraph/clerk)\n\u003e from [`JSXGraph.cljs`](https://jsxgraph.mentat.org).\n\nThis project allows you to interactively develop [Clerk][clerk-url] notebooks\nusing [`JSXGraph.cljs`](https://jsxgraph.mentat.org) code inside of your\nproject's [viewers](https://book.clerk.vision#viewers), and produce static\nbuilds of these notebooks ready for publication via [GitHub\nPages](https://pages.github.com/) or [Clerk's Garden](https://clerk.garden/).\n\n\u003e **Note**\n\u003e This README contains a good amount of Getting Started material. Feel free to\n\u003e delete anything that you don't want to keep, or move it to a file like\n\u003e `DEVELOPING.md`.\n\n## Dependencies\n\nInstall the following dependencies:\n\n- [Clojure CLI tools](https://clojure.org/guides/install_clojure)\n- [`babashka`](https://github.com/babashka/babashka#installation)\n\nYou'll also need `node` installed, preferably via\n[`nvm`](https://github.com/nvm-sh/nvm#installing-and-updating).\n\nRun the following command to see all of the [Babashka\nTasks](https://book.babashka.org/#tasks) declared in `bb.edn`:\n\n```sh\nbb tasks\n```\n\n## Choosing an Editor\n\nClerk is a notebook environment that requires you to choose your own text editor\nto work with the source files that generate your notebooks.\n\nHere are links to guides for the most popular editors and Clojure plugins::\n\n- [Calva](https://calva.io/jack-in-guide/) for [Visual Studio Code](https://code.visualstudio.com/)\n- [Cider](https://docs.cider.mx/cider/basics/up_and_running.html#launch-an-nrepl-server-from-emacs) for [Emacs](https://www.gnu.org/software/emacs/)\n- [Cursive](https://cursive-ide.com/userguide/repl.html) for [Intellij IDEA](https://www.jetbrains.com/idea/download/#section=mac)\n- [Clojure-Vim](https://github.com/clojure-vim/vim-jack-in) for [Vim](https://www.vim.org/) and [Neovim](https://neovim.io/)\n\n\u003e If this is your first time using Clojure, I recommend\n\u003e [Calva](https://calva.io/jack-in-guide/) for [Visual Studio\n\u003e Code](https://code.visualstudio.com/).\n\n## Developing with Clerk\n\nYou can develop against Clerk using its file watcher, using manual calls to\n`clerk/show!`, or with a combination of both.\n\n### Via File-Watcher\n\nThe simplest way to interact with Clerk is with Clerk's [file watcher\nmode](https://book.clerk.vision/#file-watcher).\n\nRun the following command to run the `serve!` function in `dev/user.clj`:\n\n```sh\nbb clerk-watch\n```\n\nClerk will watch for changes of any file in the `notebooks` directory. The\nClojureScript build running in the background will pick up any changes to any\nfile in the `src` directory.\n\nChange this by changing the value under `:watch-paths` in `user/serve-defaults`,\nor passing an override to `bb clerk-watch`:\n\n```\nbb clerk-watch :watch-paths '[\"different_directory\"]'\n```\n\nThis will start the Clerk server at http://localhost:7777 with a file\nwatcher that updates the page each time any file in the `src` directory changes.\n\n### REPL-Based Development\n\nAlternatively, follow your editor's instructions (see [\"Choosing an\nEditor\"](#choosing-an-editor) above) to start a Clojure REPL, and then run\n`(user/serve!)`.\n\nTo show or reload a particular notebook, call `nextjournal.clerk/show!` with the\nfile's path as argument. The [Book of Clerk](https://book.clerk.vision) has\n[good instructions on how to configure your editor for\nthis](https://book.clerk.vision/#editor-integration).\n\nYou can try this without any editor support by starting a REPL from the command\nline:\n\n```sh\nclj -A:nextjournal/clerk\n```\n\nThen start the server:\n\n```clj\n(serve!)\n```\n\nTo show a file, pass it to `clerk/show!`:\n\n```clj\n(clerk/show! \"notebooks/rollacaster/pim_book.clj\")\n```\n\n\u003e **Note**\n\u003e These commands work because dev/user.clj requires `nextjournal.clerk` under a\n\u003e `clerk` alias, and defines a `serve!` function.\n\n## Custom ClojureScript and JavaScript\n\nAll ClojureScript code you add to `src/rollacaster/custom.cljs` is available\nfor use inside any [custom viewer code you\nwrite](https://book.clerk.vision/#writing-viewers).\n\nThis is made possible by the code in `src/rollacaster/sci_viewers.cljs`. If you\nwant to add more namespaces, follow the instructions in `sci_viewers.cljs` to\nget them into Clerk's SCI environment.\n\nThat file also contains instructions on how to make JavaScript and NPM\ndependencies available to your viewers.\n\n## Static Builds\n\nOnce you're ready to share your work, run the following command to generate a\nstandalone static build of your project to the `public/build` directory:\n\n```sh\nbb build-static\n```\n\nStart a local webserver and view the static build with the following command:\n\n```\nbb serve\n```\n\nOr run both commands in sequence with:\n\n```\nbb publish-local\n```\n\n\u003e By default, the static build will include every file in the `notebooks`\n\u003e directory. Change this by changing the `:paths` entry in `static-defaults`\n\u003e inside `dev/user.clj`.\n\n### GitHub\n\nIf you push this project to GitHub, the project is configured to publish a\nstatic build to [GitHub Pages](https://pages.github.com/) on each commit to the\n`main` branch.\n\n\u003e Disable this by deleting the `.github/workflows/gh-pages.yml` file.\n\nTo host this project on GitHub:\n\n- [Create a GitHub repository](https://github.com/new). Ideally the owner\n  matches `rollacaster` and the project name is `pim-book`.\n- Run the following in this project's directory:\n\n```sh\ngit init\ngit add .\ngit commit -m \"first commit\"\ngit branch -M main\ngit remote add origin git@github.com:rollacaster/pim-book.git\ngit push -u origin main\n```\n\nThen visit https://github.com/rollacaster/pim-book to see your site.\n\n### GitHub Pages\n\nIf you've hosted your project on GitHub, run the following to manually deploy your site to GitHub Pages:\n\n```\nbb release-gh-pages\n```\n\nBy default your site will live at https://rollacaster.github.io/pim-book.\n\n### Clerk Garden\n\nNextjournal runs a site called [Clerk Garden](https://github.clerk.garden/) that\ncan generate and host your static builds for you.\n\nOnce your project is hosted on GitHub, simply visit\n\nhttps://github.clerk.garden/rollacaster/pim-book\n\nto build and visit your compiled static site.\n\n\u003e Note that this URL will not automatically update on pushes to GitHub! You'll\n\u003e need to visit the url with `?update=1` appended to force it to update.\n\n### Custom Domain\n\nIf you're hosting your static site at a custom domain ([see these\ninstructions](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site)),\nmodify `static-defaults` in `dev/user.clj` to pass the URL via the `:cname` key.\n\n## Linting with `clj-kondo`\n\nThis project is configured with a GitHub action to lint all files using\n[`clj-kondo`](https://github.com/clj-kondo/clj-kondo).\n\n\u003e Disable this by deleting the `.github/workflows/kondo.yml` file.\n\nTo initialize linting, run the following command:\n\n```\nclj-kondo --copy-configs --dependencies --lint \"$(clojure -A:nextjournal/clerk -Spath)\"\n```\n\nand commit all generated files.\n\n```\nbb lint\n```\n\n## License\n\nCopyright © 2023 Thomas\n\n_EPLv1.0 is just the default for projects generated by `clj-new`: you are not_\n_required to open source this project, nor are you required to use EPLv1.0!_\n_Feel free to remove or change the `LICENSE` file and remove or update this_\n_section of the `README.md` file!_\n\nDistributed under the Eclipse Public License version 1.0.\n\n[clerk-url]: https://clerk.vision\n[license]: https://img.shields.io/badge/License-EPL%201.0-green.svg\n[license-url]: LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollacaster%2Fpim-book","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frollacaster%2Fpim-book","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollacaster%2Fpim-book/lists"}