{"id":26028599,"url":"https://github.com/rpub-clj/rpub","last_synced_at":"2025-07-12T11:06:57.104Z","repository":{"id":280599278,"uuid":"942474909","full_name":"rpub-clj/rpub","owner":"rpub-clj","description":"A free open-source CMS written in Clojure.","archived":false,"fork":false,"pushed_at":"2025-07-05T18:50:58.000Z","size":1196,"stargazers_count":60,"open_issues_count":14,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-05T19:03:39.843Z","etag":null,"topics":["clojure","clojurescript","cms","rpub"],"latest_commit_sha":null,"homepage":"https://rpub.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rpub-clj.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}},"created_at":"2025-03-04T06:52:56.000Z","updated_at":"2025-07-05T18:51:02.000Z","dependencies_parsed_at":"2025-03-04T09:37:10.434Z","dependency_job_id":"677297a5-53ab-496b-8944-5a020a5cb685","html_url":"https://github.com/rpub-clj/rpub","commit_stats":null,"previous_names":["rpub-clj/rpub"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rpub-clj/rpub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpub-clj%2Frpub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpub-clj%2Frpub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpub-clj%2Frpub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpub-clj%2Frpub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rpub-clj","download_url":"https://codeload.github.com/rpub-clj/rpub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpub-clj%2Frpub/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263792813,"owners_count":23512312,"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":["clojure","clojurescript","cms","rpub"],"created_at":"2025-03-06T17:18:51.658Z","updated_at":"2025-07-12T11:06:57.099Z","avatar_url":"https://github.com/rpub-clj.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rPub\n\n[![stability-alpha](https://img.shields.io/badge/stability-alpha-f4d03f.svg)](https://github.com/mkenney/software-guides/blob/master/STABILITY-BADGES.md#alpha)\n[![Docker](https://img.shields.io/badge/docker-0.1.0-blue)](https://hub.docker.com/r/rpub/rpub)\n[![Clojars](https://img.shields.io/badge/clojars-dev.rpub%2Frpub%200.1.0-blue)](https://clojars.org/dev.rpub/rpub)\n[![Slack](https://img.shields.io/badge/slack-join_chat-orange.svg)](https://clojurians.slack.com/archives/C07QM1N21SP)\n\n**A free open-source CMS written in Clojure.**\n\n## Table of Contents\n\n[Features](#features) • [Quick Start](#quick-start) • [API](#api) • [Plugins](#plugins) • [Contributing](#contributing) • [Credits](#credits) • [License](#license)\n\n## Features\n\n**[See the rPub announcement post for more details.](https://radsmith.com/rpub)**\n\n- Designed to be easy to set up and use with no coding required\n- Includes an admin UI to manage content and settings\n- Supports custom fields to allow for all types of content\n- Supports browsing and installing plugins from the admin UI\n- Supports themes and customizing appearance from the admin UI\n- Supports developing plugins and themes interactively using the REPL\n- Uses SQLite by default with protocols to support alternative storage backends\n- MIT license allows the code to be modified for both commercial and non-commercial use\n\n\u003ca href=\"https://raw.githubusercontent.com/rpub-clj/static-files/refs/heads/main/screenshot.webp\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/rpub-clj/static-files/refs/heads/main/screenshot.webp\"\u003e\u003c/a\u003e\n\n## Quick Start\n\n### App (With Docker)\n\n*Requirements:* [Docker](https://docs.docker.com/get-started/introduction/get-docker-desktop/) • [Docker Compose](https://docs.docker.com/compose/install/)\n\n```shell\nmkdir rpub \u0026\u0026 cd rpub\ncurl -O https://raw.githubusercontent.com/rpub-clj/rpub/refs/tags/v0.1.0/docker-compose.yaml\ndocker compose up\n```\n\n### App (Without Docker)\n\n*Requirements:* [Git](https://github.com/git-guides/install-git) • [Java](https://adoptium.net/installation/) • [Clojure](https://clojure.org/guides/install_clojure) • [Babashka](https://github.com/babashka/babashka#installation)\n\n```shell\nmkdir rpub \u0026\u0026 cd rpub\nbb -Sdeps '{:deps {dev.rpub/rpub {:mvn/version \"0.1.0\"}}}' -m rpub.tasks/supervisor --mvn/version 0.1.0\n```\n\n### Library\n\n*Requirements:* [Git](https://github.com/git-guides/install-git) • [Java](https://adoptium.net/installation/) • [Clojure](https://clojure.org/guides/install_clojure) • Auto-Restarts\n\n*Note:* To load changes to the classpath outside of the REPL, rPub stops the JVM and expects it to be auto-restarted. To implement auto-restarts you can either a) use a wrapper (see [`rpub.tasks/supervisor`](https://github.com/rpub-clj/rpub/blob/main/API.md#rpub.tasks/supervisor)) or b) configure an existing supervisor to do this (e.g. Docker or systemd).\n\n```clojure\n;; deps.edn\n{:paths [\"src\"]\n :deps {dev.rpub/rpub {:mvn/version \"0.1.0\"}}}\n\n;; src/com/example.clj\n(ns com.example\n  (:require [rpub.core :as rpub])\n\n(defn -main [\u0026 _]\n  (rpub/start!))\n```\n\n```shell\nclojure -M -m com.example\n```\n\n## API\n\n**[See the `API.md` file for all public functions.](API.md)**\n\n*Note: Any functions not listed in this file should be considered implementation details and subject to change.*\n\n## Plugins\n\n[**See the `rpub-clj/plugins` repository for a list of all available plugins.**](https://github.com/rpub-clj/plugins)\n\nPlugins can be added by extending the [`rpub.core/plugin`](https://github.com/rpub-clj/rpub/blob/main/API.md#rpub.core/plugin) multimethod:\n\n```clojure\n;; data/example-plugin/deps.edn\n{:paths [\"src\"]\n :deps {}\n :aliases {:dev {:extra-deps {dev.rpub/rpub {:mvn/version \"0.1.0\"}}}}}\n\n;; data/example-plugin/src/com/example/plugin.clj\n(ns com.example.plugin\n  (:require [rpub.core :as rpub]))\n\n(defn init [opts])\n\n(defn middleware [opts])\n\n(defn routes [opts])\n\n(defmethod rpub/plugin ::plugin [_]\n  {:label \"Hello\"\n   :description \"An example plugin.\"\n   :init init\n   :middleware middleware\n   :routes routes})\n```\n\nTo use the plugin, require the namespace before you start rPub. If you install a plugin through the admin UI, it will do this for you automatically:\n\n```clojure\n;; data/deps.edn\n{:paths [\".\"]\n :deps {dev.rpub/rpub {:mvn/version \"0.1.0\"}\n        com.example/plugin {:local/root \"example-plugin\"}}}\n\n;; data/app.clj\n(ns app\n  (:require [rpub.main :as main]\n            [com.example.plugin]))\n\n(defn -main [\u0026 _]\n  (main/start!))\n```\n\n## Contributing\n\nIf you'd like to contribute to rPub, you're welcome to create [issues for ideas, feature requests, and bug reports](https://github.com/rpub-clj/rpub/issues).\n\n## Credits\n\nSee the [`CREDITS.md`](CREDITS.md) file.\n\n## License\n\nCopyright © 2025 Radford Smith\n\nrPub is distributed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpub-clj%2Frpub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frpub-clj%2Frpub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpub-clj%2Frpub/lists"}