{"id":13760336,"url":"https://github.com/clojure-garden/clojure-garden","last_synced_at":"2025-05-10T10:32:23.720Z","repository":{"id":42489350,"uuid":"433169740","full_name":"clojure-garden/clojure-garden","owner":"clojure-garden","description":"The navigator in the Clojure ecosystem","archived":false,"fork":false,"pushed_at":"2022-08-21T15:39:15.000Z","size":8577,"stargazers_count":74,"open_issues_count":7,"forks_count":6,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-16T17:41:07.089Z","etag":null,"topics":["clojure","clojure-garden","clojure-tools","clojurescript"],"latest_commit_sha":null,"homepage":"https://clojure.garden","language":"Clojure","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/clojure-garden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["clojure-garden"]}},"created_at":"2021-11-29T19:24:09.000Z","updated_at":"2024-10-26T16:41:28.000Z","dependencies_parsed_at":"2022-08-28T05:31:22.555Z","dependency_job_id":null,"html_url":"https://github.com/clojure-garden/clojure-garden","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-garden%2Fclojure-garden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-garden%2Fclojure-garden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-garden%2Fclojure-garden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojure-garden%2Fclojure-garden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clojure-garden","download_url":"https://codeload.github.com/clojure-garden/clojure-garden/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253401756,"owners_count":21902727,"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","clojure-garden","clojure-tools","clojurescript"],"created_at":"2024-08-03T13:01:08.135Z","updated_at":"2025-05-10T10:32:22.713Z","avatar_url":"https://github.com/clojure-garden.png","language":"Clojure","funding_links":["https://github.com/sponsors/clojure-garden"],"categories":["Clojure"],"sub_categories":[],"readme":"## Clojure Garden\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Release](https://img.shields.io/github/v/release/clojure-garden/clojure-garden.svg)](https://github.com/clojure-garden/clojure-garden/releases)  \n[![Backend CI](https://github.com/clojure-garden/clojure-garden/actions/workflows/ci-backend.yml/badge.svg)](https://github.com/clojure-garden/clojure-garden/actions/workflows/ci-backend.yml)\n[![Backend codecov](https://codecov.io/gh/clojure-garden/clojure-garden/branch/master/graph/badge.svg?token=TS0K0R8M1V\u0026flag=backend)](https://codecov.io/gh/clojure-garden/clojure-garden)  \n[![Frontend CI](https://github.com/clojure-garden/clojure-garden/actions/workflows/ci-frontend.yml/badge.svg)](https://github.com/clojure-garden/clojure-garden/actions/workflows/ci-frontend.yml)\n[![Backend codecov](https://codecov.io/gh/clojure-garden/clojure-garden/branch/master/graph/badge.svg?token=TS0K0R8M1V\u0026flag=frontend)](https://codecov.io/gh/clojure-garden/clojure-garden)\n\nThe [navigator](https://clojure.garden) in the Clojure ecosystem: start quickly with the Clojure development\n\n\\#clojure \\#clojurescript\n\n\n## Introduction\n\n\u003e I want it to become a Google for Clojure libraries\n\u003e \n\u003e -- \u003ccite\u003eArtem Barmin, Clojure Garden creator\u003c/cite\u003e\n\n**clojure.garden** is a content curation platform intended to be used within the Clojure ecosystem to find the best practices \nfor your case easily and quickly.\n\nIt helps figure out the Clojure ecosystem much easier without wasting time\nwhile reading libs updates and going into context.\n\n\n## Prehistory\n\nDuring 2020-21 years we’ve conducted several surveys and gathered a number of insights from Clojure developers. We collected and \nanalyzed practitioners' opinions about Clojure's benefits and issues for understanding community challenges.\n\nOne of the most common pain points was the ‘multitude of libraries/tooling’ that results in wasting time while choosing the right \ntool and reading updates. So the main idea was to find a way to improve Clojure ergonomics and remove such friction points as \nwasting time on library choosing and decision-making about what architecture to use.\n\n\n## Actual problems we try to deal with\n\n\u003e Only by removing friction points in a developer’s Customer journey   \n\u003e map we can make Clojure more popular  \n-- \u003ccite\u003eFreshcode team\u003c/cite\u003e\n\nUsually, developers need to check around 10 resources (Slack, GitHub, Twitter, Reddit, Clojure Deref, Stack Overflow, etc) to \ndecide what library to choose. And there is still no solution for convenient data storage that allows quick and simple analysis. \nThe path from search to choosing libs is extremely complicated and resource-intensive.\n\nSo, the main 'enemies' we are going to fight with are so-called friction points during the Clojure developer journey map.\n\nAmong the negative factors influencing the developer's journey map, we consider the following:\n\n- Insufficient context level of libs usage\n- System's fragmentation due to many influencers\n- Lack of a unified knowledge base\n- Data is provided in streaming form\n\n\n## Priority goals\n\n- Creating a **unified knowledge base**\n- Moving from stream-based information feeds to the **structured  \n  comprehensive system of navigation** (Data Fluidity VS Accumulation)\n- Solving problem of choosing libraries, decision making, searching, and benchmarking\n\n\n## Long-term goals\n\n- Introduce an **“observability standard”** for the Clojure ecosystem\n- Transforming clojure.garden into **a focal point** within the language ecosystem\n- Increasing **Clojure awareness**\n- Improving **learning curve** that newcomers must undergo\n\n\n## Primary target audience\n\nSure, clojure.garden will come in handy for a wide range of users, but the main  \nsegments whose needs we want to cover are:\n\n- newcomers\n- developers who start their first pet project and are not active community members\n\nWe want to fast-track the Clojure onboarding process and make it enjoyable and seamless.\n\n\n## Tech ideas to realize:\n\n* Create a database that will make it easier to find so-called social signals about each Clojure library and all  \n  contextual information regarding it (case uses, mentions on forums, etc.):\n* Introduce LibRank ranking system based on social mentions and open-source/closed-source project.clj’s\n* Implement the metric “Clojure Ecosystem Health Score”:\n  - Create a “template” for documentation that will help authors to prepare docs easier and better\n  - Outreach library authors to write documentation according to our standards\n  - Provide human resources(developers and tech writers) for helping authors with documentation\n  - Collect project.clj stats across industry\n* Create a mechanism for crowdsourcing info based on Slack/GitHub:\n  - Allow submitting anonymous data for improving LibRank data quality\n  - Allow improving library docs and examples by encouraging community members to fulfill predefined template\n\n\n## Libs’ Criteria for Evaluation\n\n\n## Triad of main clojure.garden concepts\n\n- clarity\n- ease of navigation\n- reduction of entropy\n\n\n## Quickstart\n\n### System architecture\n\n\u003cimg alt=\"System context\" src=\"diagrams/system/clojure-garden-system-context.drawio.png\" title=\"System context\"/\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003cem\u003eclojure.garden context\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e  \n\n\u003cimg alt=\"System container\" src=\"diagrams/system/clojure-garden-system-container.drawio.png\" title=\"System container\"/\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003cem\u003eclojure.garden container\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\n### Dependencies\n\n\u003cimg alt=\"System context\" src=\"diagrams/system/clojure-garden-deps-mindmap.png\" title=\"clojure.garden dependencies\"/\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003cem\u003eclojure.garden dependencies\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e  \n\n### Deployment\n\n\u003cimg alt=\"System context\" src=\"diagrams/deployment/cicd-mindmap.png\" title=\"Repository CI/CD\"/\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003cem\u003eRepository CI/CD\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e \n\n### Roadmap\n\n- [x] Bootstrap the project \u0026 the backend module\n- [x] **\\[devops\\]** Configure local deployment\n- [x] **\\[backend\\]** Create a GitHub API client to collect starts, number of contributors,  \n      issues, releases, etc.\n- [x] **\\[backend\\]** Create a Clojars API client to collect the artifacts data\n- [x] **\\[backend\\]** Create the ER diagram for the backend database\n- [x] **\\[backend\\]** Write database migrations\n- [x] **\\[backend\\]** Create a feed crawler for Clojars\n- [x] **\\[devops\\]** Setup Metabase\n- [x] Create basic charts in Metabase\n- [x] **\\[backend\\]** Migrate to deps.edn\n- [x] Write a good README\n- [x] **\\[devops\\]** Configure GitHub actions\n- [x] **\\[frontend\\]** Bootstrap the project frontend module\n- [ ] **\\[backend\\]** Create a Slack API client to collect Clojure library mention context\n- [x] **\\[backend\\]** Create a Twitter API client to collect Clojure library mention context\n- [ ] **\\[backend\\]** Create an orchestrator for the data loading modules\n- [ ] **\\[backend\\]** **\\[frontend\\]** Create custom library grouping by tags\n- [ ] **\\[frontend\\]** Create basic charts and tables\n- [ ] **\\[frontend\\]** **\\[backend\\]** Implement library search\n- [ ] **\\[backend\\]** **\\[frontend\\]** Implement of custom library ratings\n- [ ] **\\[backend\\]** **\\[frontend\\]** implement a personal account with the ability to create your own charts and subscriptions\n\n### Contributing\n\nPlease see the [contributing guide](CONTRIBUTING.md).\n\n\n## Clojure Garden Fellowship\n\nSee a list of companies and individual developers using clojure.garden.\nAre you using clojure.garden in your company or personal projects? Let us know [here](https://freshcodeit.com/contact).\n\n## Talk\n\nAn overview of Сlojure Garden concepts on [re:Clojure 2021](https://www.reclojure.org/) presentation:\n\nhttps://youtu.be/bzSJ0EKLUZg\n\n## Core team\n\n[Artem Barmin](https://github.com/artem-barmin) \\\n[Inna Kovalenko](https://github.com/innakovalenko) \\\n[Anastasia Gretchenko](https://github.com/Agretchenko) \\\n[Ilshat Sultanov](https://github.com/just-sultanov) \\\n[Gleb Yeliseev](https://github.com/devleifr) \\\n[Volodymyr Pavliuk](https://github.com/volodymyrpavliuk)\n\n## Copyright \u0026 License\n\nThe MIT License (MIT)\n\nCopyright © 2021-2022 Freshcode LTD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojure-garden%2Fclojure-garden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclojure-garden%2Fclojure-garden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojure-garden%2Fclojure-garden/lists"}