{"id":20307579,"url":"https://github.com/pink-gorilla/webly","last_synced_at":"2026-03-05T15:32:26.781Z","repository":{"id":46008553,"uuid":"278578797","full_name":"pink-gorilla/webly","owner":"pink-gorilla","description":"reagent/reframe application skelleton","archived":false,"fork":false,"pushed_at":"2026-02-27T20:19:18.000Z","size":11745,"stargazers_count":7,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-27T23:57:46.772Z","etag":null,"topics":["bidi","cljs","reagent","ring-handlers","shadow-cljs","websocket"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pink-gorilla.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2020-07-10T08:19:39.000Z","updated_at":"2026-02-27T20:19:22.000Z","dependencies_parsed_at":"2024-04-22T22:26:43.711Z","dependency_job_id":"3940e802-7706-4580-8a57-9f63ddc738c1","html_url":"https://github.com/pink-gorilla/webly","commit_stats":null,"previous_names":[],"tags_count":274,"template":false,"template_full_name":null,"purl":"pkg:github/pink-gorilla/webly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pink-gorilla%2Fwebly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pink-gorilla%2Fwebly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pink-gorilla%2Fwebly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pink-gorilla%2Fwebly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pink-gorilla","download_url":"https://codeload.github.com/pink-gorilla/webly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pink-gorilla%2Fwebly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30133224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T14:41:47.141Z","status":"ssl_error","status_checked_at":"2026-03-05T14:41:21.567Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bidi","cljs","reagent","ring-handlers","shadow-cljs","websocket"],"created_at":"2024-11-14T17:18:17.673Z","updated_at":"2026-03-05T15:32:26.761Z","avatar_url":"https://github.com/pink-gorilla.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Webly [![GitHub Actions status |pink-gorilla/webly](https://github.com/pink-gorilla/webly/workflows/CI/badge.svg)](https://github.com/pink-gorilla/webly/actions?workflow=CI)[![Clojars Project](https://img.shields.io/clojars/v/org.pinkgorilla/webly.svg)](https://clojars.org/org.pinkgorilla/webly)\n\n**End Users** this project is not for you.\n\n- With webly you can build clj/cljs web apps (server: clj, frontend: reagent/reframe)\n- webly uses great tools such as: reagent, reframe, tailwind-css, shadow-cljs\n- webly brings a things that can be hard to configure (or repetitive) when you develop a web app such as:\n  - unit test runner\n  - routing (via edn config), extensible both in frontend  and backend\n  - keybindings\n  - loading animation\n  - notifications and dialogs\n\n- webly is used in [Goldly](https://github.com/pink-gorilla/goldly).\n\n# run the ui demo\n\nClone this repo and run:\n```\ncd demo-webly\nclj -X:webly:npm-install\n\neither:\nclj -X:webly:compile\nclj -X:webly:run \nor\n\nclj -X:webly:run:watch\n\n```\n\nThe demo runs a webserver on port 8080.\n\nA simple demo is on [Webly Github Pages](https://pink-gorilla.github.io/webly/)\n\n\n# features\n\n## web app\n- dynamically generated app html that works with csrf\n- ring middleware for api calls\n- this means a registry for ring-handlers and reagent-views\n\n## webly build \n  - this feature is available for apps that use webly\n  - compiles/watches via shadow-cljs \n  - does not require shadow-cljs.edn\n  - bundle-size report at compile time\n\n\n# webly - how to use:\n\nTo start webly you have to pass it two parameter: **profile** and **config**\n\n# Webly Compile Profiles\n\n**Webly profile** can be one of the following strings:\n- watch: builds and runs shadow dev server (shadow-cljs watch)\n- compile: builds bundle and output bundle stats\n- release: builds release bundle (for production)  no tenx. no source-maps bundle stats\n- jetty: runs app, with bundle compiled via compile or release \n- ci: builds bundle for unit tests\n- npm-install: just installs npm dependencies (based on deps.cljs)\n\n**Webly config**:\n- is a clojure datastructure \n- is used in backend (clj) and frontend (cljs)\n- can be passed as a string (link to a edn file or resource) - mandatory if webly is used in a leiningen project\n- can be passed as a clojure datastructure - for quicker configuration in deps.edn projects.\n\n## npm dependencies\n- keep your npm depeendencies *only* in deps.cljs\n- do NOT create a package.json file!\n- package.json will be auto generated\n\n\nAdd npm dependencies that you want to use into a clojure deps.cljs\n\n```\n{:npm-deps\n {; font awesome\n  \"@fortawesome/fontawesome-free\" \"^5.13.0\"\n```\n\nSometimes github repo and npm module do not match. \nCheck this to see what goes on:  https://unpkg.com/@ricokahler/oauth2-popup-flow@2.0.0-alpha.1/index.js\n\n## unit tests\n- clj `bb test-clj`\n- cljs: `bb test-cljs`\n\n## static build\n\n```\n  cd demo-webly\n  clj -X:webly:compile  or clojure -X:webly:release-adv\n  clj -X:webly:static\n  cp node_modules/@icon .gorilla/static/index_files -r\n ./http-server.sh\n\n```\n\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpink-gorilla%2Fwebly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpink-gorilla%2Fwebly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpink-gorilla%2Fwebly/lists"}