{"id":304176,"name":"CSA Admin","description":"Offers you a wide range of features specifically developed for the needs of Community Supported Agriculture.","url":"https://github.com/csa-admin-org/csa-admin","last_synced_at":"2026-08-17T20:32:53.863Z","repository":{"id":39341782,"uuid":"79675934","full_name":"csa-admin-org/csa-admin","owner":"csa-admin-org","description":"Web application to manage CSA (Community Supported Agriculture), ACP (Agriculture Contractuelle de Proximité) or Solawi (Solidarische Landwirtschaft) organizations.","archived":false,"fork":false,"pushed_at":"2026-08-16T10:21:05.000Z","size":41102,"stargazers_count":80,"open_issues_count":0,"forks_count":22,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-08-16T12:12:26.910Z","etag":null,"topics":["acp","csa","managment","rails","ruby","solawi"],"latest_commit_sha":null,"homepage":"https://csa-admin.org","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csa-admin-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"AGENTS.md","claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2017-01-21T22:08:39.000Z","updated_at":"2026-08-16T10:21:39.000Z","dependencies_parsed_at":"2026-08-08T11:33:55.757Z","dependency_job_id":null,"html_url":"https://github.com/csa-admin-org/csa-admin","commit_stats":null,"previous_names":["csa-admin-org/csa-admin","acp-admin/acp-admin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/csa-admin-org/csa-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org","download_url":"https://codeload.github.com/csa-admin-org/csa-admin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36714786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-16T02:00:06.462Z","response_time":62,"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"}},"owner":{"login":"csa-admin-org","name":"CSA Admin","uuid":"174861785","kind":"organization","description":"Web application to administrate CSA (Community Supported Agriculture)","email":"info@csa-admin.org","website":"https://csa-admin.org","location":"Switzerland","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/174861785?v=4","repositories_count":1,"last_synced_at":"2024-09-07T09:58:16.975Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/csa-admin-org","funding_links":[],"total_stars":37,"followers":0,"following":0,"created_at":"2024-09-07T09:58:17.683Z","updated_at":"2024-09-07T09:58:17.683Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org/repositories"},"packages":[{"id":14932252,"name":"github.com/csa-admin-org/csa-admin","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":[],"repository_url":"https://github.com/csa-admin-org/csa-admin","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2026-08-11T16:55:38.000Z","latest_release_published_at":"2026-08-11T16:55:38.000Z","latest_release_number":"v0.0.0-20260811165538-5f11f2d1124b","last_synced_at":"2026-08-16T20:06:50.063Z","created_at":"2026-08-12T00:32:57.654Z","updated_at":"2026-08-16T20:06:50.064Z","registry_url":"https://pkg.go.dev/github.com/csa-admin-org/csa-admin","install_command":"go get github.com/csa-admin-org/csa-admin","documentation_url":"https://pkg.go.dev/github.com/csa-admin-org/csa-admin#section-documentation","metadata":{},"repo_metadata":{"id":39341782,"uuid":"79675934","full_name":"csa-admin-org/csa-admin","owner":"csa-admin-org","description":"Web application to manage CSA (Community Supported Agriculture), ACP (Agriculture Contractuelle de Proximité) or Solawi (Solidarische Landwirtschaft) organizations.","archived":false,"fork":false,"pushed_at":"2026-08-16T10:21:05.000Z","size":41102,"stargazers_count":80,"open_issues_count":0,"forks_count":22,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-08-16T12:12:26.910Z","etag":null,"topics":["acp","csa","managment","rails","ruby","solawi"],"latest_commit_sha":null,"homepage":"https://csa-admin.org","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csa-admin-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"AGENTS.md","claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2017-01-21T22:08:39.000Z","updated_at":"2026-08-16T10:21:39.000Z","dependencies_parsed_at":"2026-08-08T11:33:55.757Z","dependency_job_id":null,"html_url":"https://github.com/csa-admin-org/csa-admin","commit_stats":null,"previous_names":["csa-admin-org/csa-admin","acp-admin/acp-admin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/csa-admin-org/csa-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org","download_url":"https://codeload.github.com/csa-admin-org/csa-admin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36714786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-16T02:00:06.462Z","response_time":62,"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"},"owner_record":{"login":"csa-admin-org","name":"CSA Admin","uuid":"174861785","kind":"organization","description":"Web application to administrate CSA (Community Supported Agriculture)","email":"info@csa-admin.org","website":"https://csa-admin.org","location":"Switzerland","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/174861785?v=4","repositories_count":1,"last_synced_at":"2024-09-07T09:58:16.975Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/csa-admin-org","funding_links":[],"total_stars":37,"followers":0,"following":0,"created_at":"2024-09-07T09:58:17.683Z","updated_at":"2024-09-07T09:58:17.683Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csa-admin-org/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-08-16T12:20:50.685Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":4.796011385411047,"dependent_packages_count":4.494101325906062,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":4.6450563556585545},"purl":"pkg:golang/github.com/csa-admin-org/csa-admin","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/csa-admin-org/csa-admin","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/csa-admin-org/csa-admin","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/csa-admin-org/csa-admin/dependencies","status":"removed","funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-08-15T19:33:51.561Z","issues_count":75,"pull_requests_count":55,"avg_time_to_close_issue":8467237.268656716,"avg_time_to_close_pull_request":463056.7037037037,"issues_closed_count":67,"pull_requests_closed_count":54,"pull_request_authors_count":7,"issue_authors_count":8,"avg_comments_per_issue":1.4666666666666668,"avg_comments_per_pull_request":0.5454545454545454,"merged_pull_requests_count":31,"bot_issues_count":0,"bot_pull_requests_count":32,"past_year_issues_count":5,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":2319289.25,"past_year_avg_time_to_close_pull_request":1464936.3333333333,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.8,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/issues","maintainers":[{"login":"thibaudgg","count":75,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudgg"}],"active_maintainers":[{"login":"thibaudgg","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudgg"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fcsa-admin-org%2Fcsa-admin/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2281772,"maintainers_count":0,"namespaces_count":839392,"keywords_count":124084,"github":"golang","metadata":{"funded_packages_count":66853,"sync_missing_packages_cursor":{"timestamp":"2026-08-17T00:00:58.969562Z","path":"github.com/Tektoncd/operator","version":"v0.78.0"},"rate_limit":1},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-08-17T05:01:11.862Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":6384046,"full_name":"csa-admin-org/csa-admin","default_branch":"master","total_commits":4629,"total_committers":8,"total_bot_commits":10,"total_bot_committers":1,"mean_commits":578.625,"dds":0.006480881399870353,"past_year_total_commits":1184,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":592.0,"past_year_dds":0.0008445945945946276,"last_synced_at":"2026-08-05T13:32:15.458Z","last_synced_commit":"497fcb55008c7a845f9b20073ddc1ff0277069d0","created_at":"2024-11-20T00:02:01.960Z","updated_at":"2026-08-04T13:04:17.295Z","committers":[{"name":"Thibaud Guillaume-Gentil","email":"thibaud@thibaud.gg","login":"thibaudgg","count":4599},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":10},{"name":"Moritz Orbach","email":"solawi@apfelboymchen.net","login":null,"count":8},{"name":"videolmo","email":"80804563+videolmo","login":"videolmo","count":4},{"name":"Manuel Rast","email":"manuel.rast@immerda.ch","login":"mrast","count":4},{"name":"Fred Radeff","email":"fradeff@akademia.ch","login":null,"count":2},{"name":"Olivier Amblet","email":"olivier.amblet@pix4d.com","login":"oliamb","count":1},{"name":"Marco Roth","email":"marco.roth@intergga.ch","login":"marcoroth","count":1}],"past_year_committers":[{"name":"Thibaud Guillaume-Gentil","email":"thibaud@thibaud.gg","login":"thibaudgg","count":1183},{"name":"Marco Roth","email":"marco.roth@intergga.ch","login":"marcoroth","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-10T00:00:10.517Z","repositories_count":6626395,"commits_count":918499963,"contributors_count":39007589,"owners_count":1330510,"committers_count":3291350,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"csa-admin-org/csa-admin","html_url":"https://github.com/csa-admin-org/csa-admin","last_synced_at":"2026-08-15T19:33:51.561Z","status":null,"issues_count":75,"pull_requests_count":55,"avg_time_to_close_issue":8467237.268656716,"avg_time_to_close_pull_request":463056.7037037037,"issues_closed_count":67,"pull_requests_closed_count":54,"pull_request_authors_count":7,"issue_authors_count":8,"avg_comments_per_issue":1.4666666666666668,"avg_comments_per_pull_request":0.5454545454545454,"merged_pull_requests_count":31,"bot_issues_count":0,"bot_pull_requests_count":32,"past_year_issues_count":5,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":2319289.25,"past_year_avg_time_to_close_pull_request":1464936.3333333333,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.8,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"created_at":"2024-11-20T00:02:04.281Z","updated_at":"2026-08-15T19:33:51.561Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/csa-admin-org%2Fcsa-admin/issues","issue_labels_count":{"Cocagne":7,"Lumière des Champs":3,"TaPatate!":3,"P2R":2,"Touvière":2,"CulturesLocales":1,"Les Paniers de la Mule":1,"AlpGrava":1,"Potagers de Gaia":1,"Rage de Vert":1,"Fairdura":1,"Grundnahrig":1},"pull_request_labels_count":{"ruby":6,"dependencies":6},"issue_author_associations_count":{"MEMBER":62,"NONE":12,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":40,"MEMBER":13,"NONE":2},"issue_authors":{"thibaudgg":62,"NealDill":4,"secretariatldc":3,"PatriciaCocagne":2,"leokraemer":1,"oliamb":1,"Alex77825":1,"WildeRauke":1},"pull_request_authors":{"dependabot[bot]":32,"thibaudgg":13,"videolmo":4,"zpartakov":2,"mrast":2,"oliamb":1,"marcoroth":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-16T00:00:06.928Z","repositories_count":16038987,"issues_count":40194541,"pull_requests_count":130347931,"authors_count":11457529,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"MEMBER":4,"NONE":1},"past_year_pull_request_author_associations_count":{"MEMBER":2,"CONTRIBUTOR":1},"past_year_issue_authors":{"thibaudgg":4,"NealDill":1},"past_year_pull_request_authors":{"thibaudgg":2,"marcoroth":1},"maintainers":[{"login":"thibaudgg","count":75,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudgg"}],"active_maintainers":[{"login":"thibaudgg","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thibaudgg"}]},"events":{"total":{"DeleteEvent":5,"PullRequestEvent":6,"ForkEvent":7,"IssuesEvent":45,"WatchEvent":23,"IssueCommentEvent":38,"PushEvent":726,"PullRequestReviewCommentEvent":3,"CreateEvent":6},"last_year":{"DeleteEvent":1,"PullRequestEvent":2,"ForkEvent":1,"IssuesEvent":7,"WatchEvent":7,"IssueCommentEvent":5,"PushEvent":321,"PullRequestReviewCommentEvent":3,"CreateEvent":2}},"keywords":["acp","csa","managment","rails","ruby","solawi"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-08-24T05:00:23.861Z","updated_at":"2022-08-24T05:00:23.861Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/Gemfile","dependencies":[{"id":2461201115,"package_name":"rails","ecosystem":"rubygems","requirements":"~\u003e 7.0.3","direct":true,"kind":"runtime","optional":false},{"id":2461201116,"package_name":"bootsnap","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201117,"package_name":"pg","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201118,"package_name":"puma","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201119,"package_name":"lograge","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201120,"package_name":"bcrypt","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201121,"package_name":"date_validator","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201122,"package_name":"i18n","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201123,"package_name":"i18n-backend-side_by_side","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201124,"package_name":"rails-i18n","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201125,"package_name":"rack-status","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201126,"package_name":"rack-cors","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201127,"package_name":"phony_rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201128,"package_name":"tod","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201129,"package_name":"activeadmin","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201130,"package_name":"sprockets-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201131,"package_name":"cancancan","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201132,"package_name":"simple_form","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201133,"package_name":"inline_svg","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201134,"package_name":"slim","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201135,"package_name":"turbolinks","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201136,"package_name":"importmap-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201137,"package_name":"turbo-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201138,"package_name":"stimulus-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201139,"package_name":"tailwindcss-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201140,"package_name":"invisible_captcha","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201141,"package_name":"cld","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201142,"package_name":"sidekiq","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201143,"package_name":"sidekiq-scheduler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201144,"package_name":"faraday","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201145,"package_name":"faraday-cookie_jar","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201146,"package_name":"gibbon","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201147,"package_name":"icalendar","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201148,"package_name":"image_processing","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201149,"package_name":"mini_magick","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201150,"package_name":"prawn","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201151,"package_name":"prawn-table","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201152,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201153,"package_name":"rubyXL","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201154,"package_name":"rexml","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201155,"package_name":"postmark-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201156,"package_name":"premailer-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201157,"package_name":"liquid","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201158,"package_name":"camt_parser","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201159,"package_name":"epics","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201160,"package_name":"rqrcode","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201161,"package_name":"countries","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201162,"package_name":"sentry-ruby","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201163,"package_name":"sentry-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201164,"package_name":"sentry-sidekiq","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201165,"package_name":"kramdown","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201166,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201167,"package_name":"aws-sdk-s3","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201168,"package_name":"redis","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201169,"package_name":"barnes","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201170,"package_name":"matrix","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":2461201171,"package_name":"dotenv-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201172,"package_name":"byebug","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201173,"package_name":"pdf-inspector","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201174,"package_name":"rspec-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201175,"package_name":"faker","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201176,"package_name":"web-console","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201177,"package_name":"listen","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201178,"package_name":"bullet","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201179,"package_name":"letter_opener","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201180,"package_name":"launchy","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201181,"package_name":"factory_bot_rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201182,"package_name":"capybara","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201183,"package_name":"capybara-email","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":2461201184,"package_name":"super_diff","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2022-08-24T05:00:24.001Z","updated_at":"2022-08-24T05:00:24.001Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/Gemfile.lock","dependencies":[{"id":2461202177,"package_name":"epics","ecosystem":"rubygems","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":2461202178,"package_name":"Ascii85","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202179,"package_name":"actioncable","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202180,"package_name":"actionmailbox","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202181,"package_name":"actionmailer","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202182,"package_name":"actionpack","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202183,"package_name":"actiontext","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202184,"package_name":"actionview","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202185,"package_name":"activeadmin","ecosystem":"rubygems","requirements":"2.13.1","direct":false,"kind":"runtime","optional":false},{"id":2461202186,"package_name":"activejob","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202187,"package_name":"activemodel","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202188,"package_name":"activerecord","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202189,"package_name":"activestorage","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202190,"package_name":"activesupport","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202191,"package_name":"addressable","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":2461202192,"package_name":"afm","ecosystem":"rubygems","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202193,"package_name":"arbre","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202194,"package_name":"attr_extras","ecosystem":"rubygems","requirements":"6.2.5","direct":false,"kind":"runtime","optional":false},{"id":2461202195,"package_name":"aws-eventstream","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202196,"package_name":"aws-partitions","ecosystem":"rubygems","requirements":"1.619.0","direct":false,"kind":"runtime","optional":false},{"id":2461202197,"package_name":"aws-sdk-core","ecosystem":"rubygems","requirements":"3.132.0","direct":false,"kind":"runtime","optional":false},{"id":2461202198,"package_name":"aws-sdk-kms","ecosystem":"rubygems","requirements":"1.58.0","direct":false,"kind":"runtime","optional":false},{"id":2461202199,"package_name":"aws-sdk-s3","ecosystem":"rubygems","requirements":"1.114.0","direct":false,"kind":"runtime","optional":false},{"id":2461202200,"package_name":"aws-sigv4","ecosystem":"rubygems","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":2461202201,"package_name":"barnes","ecosystem":"rubygems","requirements":"0.0.9","direct":false,"kind":"runtime","optional":false},{"id":2461202202,"package_name":"bcrypt","ecosystem":"rubygems","requirements":"3.1.18","direct":false,"kind":"runtime","optional":false},{"id":2461202203,"package_name":"bindex","ecosystem":"rubygems","requirements":"0.8.1","direct":false,"kind":"runtime","optional":false},{"id":2461202204,"package_name":"bootsnap","ecosystem":"rubygems","requirements":"1.13.0","direct":false,"kind":"runtime","optional":false},{"id":2461202205,"package_name":"builder","ecosystem":"rubygems","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":2461202206,"package_name":"bullet","ecosystem":"rubygems","requirements":"7.0.3","direct":false,"kind":"runtime","optional":false},{"id":2461202207,"package_name":"byebug","ecosystem":"rubygems","requirements":"11.1.3","direct":false,"kind":"runtime","optional":false},{"id":2461202208,"package_name":"camt_parser","ecosystem":"rubygems","requirements":"2.12.0","direct":false,"kind":"runtime","optional":false},{"id":2461202209,"package_name":"cancancan","ecosystem":"rubygems","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202210,"package_name":"capybara","ecosystem":"rubygems","requirements":"3.37.1","direct":false,"kind":"runtime","optional":false},{"id":2461202211,"package_name":"capybara-email","ecosystem":"rubygems","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":2461202212,"package_name":"chunky_png","ecosystem":"rubygems","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202213,"package_name":"cld","ecosystem":"rubygems","requirements":"0.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202214,"package_name":"concurrent-ruby","ecosystem":"rubygems","requirements":"1.1.10","direct":false,"kind":"runtime","optional":false},{"id":2461202215,"package_name":"connection_pool","ecosystem":"rubygems","requirements":"2.2.5","direct":false,"kind":"runtime","optional":false},{"id":2461202216,"package_name":"countries","ecosystem":"rubygems","requirements":"5.1.2","direct":false,"kind":"runtime","optional":false},{"id":2461202217,"package_name":"crass","ecosystem":"rubygems","requirements":"1.0.6","direct":false,"kind":"runtime","optional":false},{"id":2461202218,"package_name":"css_parser","ecosystem":"rubygems","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202219,"package_name":"date_validator","ecosystem":"rubygems","requirements":"0.12.0","direct":false,"kind":"runtime","optional":false},{"id":2461202220,"package_name":"diff-lcs","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202221,"package_name":"digest","ecosystem":"rubygems","requirements":"3.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202222,"package_name":"domain_name","ecosystem":"rubygems","requirements":"0.5.20190701","direct":false,"kind":"runtime","optional":false},{"id":2461202223,"package_name":"dotenv","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":2461202224,"package_name":"dotenv-rails","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":2461202225,"package_name":"erubi","ecosystem":"rubygems","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202226,"package_name":"et-orbi","ecosystem":"rubygems","requirements":"1.2.7","direct":false,"kind":"runtime","optional":false},{"id":2461202227,"package_name":"factory_bot","ecosystem":"rubygems","requirements":"6.2.1","direct":false,"kind":"runtime","optional":false},{"id":2461202228,"package_name":"factory_bot_rails","ecosystem":"rubygems","requirements":"6.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202229,"package_name":"faker","ecosystem":"rubygems","requirements":"2.22.0","direct":false,"kind":"runtime","optional":false},{"id":2461202230,"package_name":"faraday","ecosystem":"rubygems","requirements":"2.5.2","direct":false,"kind":"runtime","optional":false},{"id":2461202231,"package_name":"faraday-cookie_jar","ecosystem":"rubygems","requirements":"0.0.7","direct":false,"kind":"runtime","optional":false},{"id":2461202232,"package_name":"faraday-net_http","ecosystem":"rubygems","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202233,"package_name":"ffi","ecosystem":"rubygems","requirements":"1.15.5","direct":false,"kind":"runtime","optional":false},{"id":2461202234,"package_name":"formtastic","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202235,"package_name":"formtastic_i18n","ecosystem":"rubygems","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":2461202236,"package_name":"fugit","ecosystem":"rubygems","requirements":"1.5.3","direct":false,"kind":"runtime","optional":false},{"id":2461202237,"package_name":"gibbon","ecosystem":"rubygems","requirements":"3.4.4","direct":false,"kind":"runtime","optional":false},{"id":2461202238,"package_name":"globalid","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202239,"package_name":"has_scope","ecosystem":"rubygems","requirements":"0.8.0","direct":false,"kind":"runtime","optional":false},{"id":2461202240,"package_name":"hashery","ecosystem":"rubygems","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":2461202241,"package_name":"htmlentities","ecosystem":"rubygems","requirements":"4.3.4","direct":false,"kind":"runtime","optional":false},{"id":2461202242,"package_name":"http-cookie","ecosystem":"rubygems","requirements":"1.0.5","direct":false,"kind":"runtime","optional":false},{"id":2461202243,"package_name":"i18n","ecosystem":"rubygems","requirements":"1.12.0","direct":false,"kind":"runtime","optional":false},{"id":2461202244,"package_name":"i18n-backend-side_by_side","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202245,"package_name":"icalendar","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":2461202246,"package_name":"ice_cube","ecosystem":"rubygems","requirements":"0.16.4","direct":false,"kind":"runtime","optional":false},{"id":2461202247,"package_name":"image_processing","ecosystem":"rubygems","requirements":"1.12.2","direct":false,"kind":"runtime","optional":false},{"id":2461202248,"package_name":"importmap-rails","ecosystem":"rubygems","requirements":"1.1.5","direct":false,"kind":"runtime","optional":false},{"id":2461202249,"package_name":"inherited_resources","ecosystem":"rubygems","requirements":"1.13.1","direct":false,"kind":"runtime","optional":false},{"id":2461202250,"package_name":"inline_svg","ecosystem":"rubygems","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":2461202251,"package_name":"invisible_captcha","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202252,"package_name":"jmespath","ecosystem":"rubygems","requirements":"1.6.1","direct":false,"kind":"runtime","optional":false},{"id":2461202253,"package_name":"jquery-rails","ecosystem":"rubygems","requirements":"4.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202254,"package_name":"json","ecosystem":"rubygems","requirements":"2.6.2","direct":false,"kind":"runtime","optional":false},{"id":2461202255,"package_name":"kaminari","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202256,"package_name":"kaminari-actionview","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202257,"package_name":"kaminari-activerecord","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202258,"package_name":"kaminari-core","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202259,"package_name":"kramdown","ecosystem":"rubygems","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202260,"package_name":"launchy","ecosystem":"rubygems","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202261,"package_name":"letter_opener","ecosystem":"rubygems","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":2461202262,"package_name":"liquid","ecosystem":"rubygems","requirements":"5.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202263,"package_name":"listen","ecosystem":"rubygems","requirements":"3.7.1","direct":false,"kind":"runtime","optional":false},{"id":2461202264,"package_name":"lograge","ecosystem":"rubygems","requirements":"0.12.0","direct":false,"kind":"runtime","optional":false},{"id":2461202265,"package_name":"loofah","ecosystem":"rubygems","requirements":"2.18.0","direct":false,"kind":"runtime","optional":false},{"id":2461202266,"package_name":"mail","ecosystem":"rubygems","requirements":"2.7.1","direct":false,"kind":"runtime","optional":false},{"id":2461202267,"package_name":"marcel","ecosystem":"rubygems","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":2461202268,"package_name":"matrix","ecosystem":"rubygems","requirements":"0.4.2","direct":false,"kind":"runtime","optional":false},{"id":2461202269,"package_name":"method_source","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202270,"package_name":"mini_magick","ecosystem":"rubygems","requirements":"4.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202271,"package_name":"mini_mime","ecosystem":"rubygems","requirements":"1.1.2","direct":false,"kind":"runtime","optional":false},{"id":2461202272,"package_name":"mini_portile2","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":2461202273,"package_name":"minitest","ecosystem":"rubygems","requirements":"5.16.3","direct":false,"kind":"runtime","optional":false},{"id":2461202274,"package_name":"msgpack","ecosystem":"rubygems","requirements":"1.5.4","direct":false,"kind":"runtime","optional":false},{"id":2461202275,"package_name":"multi_json","ecosystem":"rubygems","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":2461202276,"package_name":"net-imap","ecosystem":"rubygems","requirements":"0.2.3","direct":false,"kind":"runtime","optional":false},{"id":2461202277,"package_name":"net-pop","ecosystem":"rubygems","requirements":"0.1.1","direct":false,"kind":"runtime","optional":false},{"id":2461202278,"package_name":"net-protocol","ecosystem":"rubygems","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":2461202279,"package_name":"net-smtp","ecosystem":"rubygems","requirements":"0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202280,"package_name":"nio4r","ecosystem":"rubygems","requirements":"2.5.8","direct":false,"kind":"runtime","optional":false},{"id":2461202281,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"1.13.8","direct":false,"kind":"runtime","optional":false},{"id":2461202282,"package_name":"optimist","ecosystem":"rubygems","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":2461202283,"package_name":"patience_diff","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202284,"package_name":"pdf-core","ecosystem":"rubygems","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":2461202285,"package_name":"pdf-inspector","ecosystem":"rubygems","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":2461202286,"package_name":"pdf-reader","ecosystem":"rubygems","requirements":"2.10.0","direct":false,"kind":"runtime","optional":false},{"id":2461202287,"package_name":"pg","ecosystem":"rubygems","requirements":"1.4.3","direct":false,"kind":"runtime","optional":false},{"id":2461202288,"package_name":"phony","ecosystem":"rubygems","requirements":"2.20.0","direct":false,"kind":"runtime","optional":false},{"id":2461202289,"package_name":"phony_rails","ecosystem":"rubygems","requirements":"0.15.0","direct":false,"kind":"runtime","optional":false},{"id":2461202290,"package_name":"postmark","ecosystem":"rubygems","requirements":"1.22.1","direct":false,"kind":"runtime","optional":false},{"id":2461202291,"package_name":"postmark-rails","ecosystem":"rubygems","requirements":"0.22.1","direct":false,"kind":"runtime","optional":false},{"id":2461202292,"package_name":"prawn","ecosystem":"rubygems","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202293,"package_name":"prawn-table","ecosystem":"rubygems","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":2461202294,"package_name":"premailer","ecosystem":"rubygems","requirements":"1.16.0","direct":false,"kind":"runtime","optional":false},{"id":2461202295,"package_name":"premailer-rails","ecosystem":"rubygems","requirements":"1.11.1","direct":false,"kind":"runtime","optional":false},{"id":2461202296,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"4.0.7","direct":false,"kind":"runtime","optional":false},{"id":2461202297,"package_name":"puma","ecosystem":"rubygems","requirements":"5.6.4","direct":false,"kind":"runtime","optional":false},{"id":2461202298,"package_name":"raabro","ecosystem":"rubygems","requirements":"1.4.0","direct":false,"kind":"runtime","optional":false},{"id":2461202299,"package_name":"racc","ecosystem":"rubygems","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":2461202300,"package_name":"rack","ecosystem":"rubygems","requirements":"2.2.4","direct":false,"kind":"runtime","optional":false},{"id":2461202301,"package_name":"rack-cors","ecosystem":"rubygems","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":2461202302,"package_name":"rack-status","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":2461202303,"package_name":"rack-test","ecosystem":"rubygems","requirements":"2.0.2","direct":false,"kind":"runtime","optional":false},{"id":2461202304,"package_name":"rails","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202305,"package_name":"rails-dom-testing","ecosystem":"rubygems","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":2461202306,"package_name":"rails-html-sanitizer","ecosystem":"rubygems","requirements":"1.4.3","direct":false,"kind":"runtime","optional":false},{"id":2461202307,"package_name":"rails-i18n","ecosystem":"rubygems","requirements":"7.0.5","direct":false,"kind":"runtime","optional":false},{"id":2461202308,"package_name":"railties","ecosystem":"rubygems","requirements":"7.0.3.1","direct":false,"kind":"runtime","optional":false},{"id":2461202309,"package_name":"rake","ecosystem":"rubygems","requirements":"13.0.6","direct":false,"kind":"runtime","optional":false},{"id":2461202310,"package_name":"ransack","ecosystem":"rubygems","requirements":"3.2.1","direct":false,"kind":"runtime","optional":false},{"id":2461202311,"package_name":"rb-fsevent","ecosystem":"rubygems","requirements":"0.11.1","direct":false,"kind":"runtime","optional":false},{"id":2461202312,"package_name":"rb-inotify","ecosystem":"rubygems","requirements":"0.10.1","direct":false,"kind":"runtime","optional":false},{"id":2461202313,"package_name":"redis","ecosystem":"rubygems","requirements":"4.7.1","direct":false,"kind":"runtime","optional":false},{"id":2461202314,"package_name":"regexp_parser","ecosystem":"rubygems","requirements":"2.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202315,"package_name":"request_store","ecosystem":"rubygems","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":2461202316,"package_name":"responders","ecosystem":"rubygems","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":2461202317,"package_name":"rexml","ecosystem":"rubygems","requirements":"3.2.5","direct":false,"kind":"runtime","optional":false},{"id":2461202318,"package_name":"rqrcode","ecosystem":"rubygems","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":2461202319,"package_name":"rqrcode_core","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202320,"package_name":"rspec-core","ecosystem":"rubygems","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202321,"package_name":"rspec-expectations","ecosystem":"rubygems","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202322,"package_name":"rspec-mocks","ecosystem":"rubygems","requirements":"3.11.1","direct":false,"kind":"runtime","optional":false},{"id":2461202323,"package_name":"rspec-rails","ecosystem":"rubygems","requirements":"5.1.2","direct":false,"kind":"runtime","optional":false},{"id":2461202324,"package_name":"rspec-support","ecosystem":"rubygems","requirements":"3.11.0","direct":false,"kind":"runtime","optional":false},{"id":2461202325,"package_name":"ruby-rc4","ecosystem":"rubygems","requirements":"0.1.5","direct":false,"kind":"runtime","optional":false},{"id":2461202326,"package_name":"ruby-vips","ecosystem":"rubygems","requirements":"2.1.4","direct":false,"kind":"runtime","optional":false},{"id":2461202327,"package_name":"ruby2_keywords","ecosystem":"rubygems","requirements":"0.0.5","direct":false,"kind":"runtime","optional":false},{"id":2461202328,"package_name":"rubyXL","ecosystem":"rubygems","requirements":"3.4.25","direct":false,"kind":"runtime","optional":false},{"id":2461202329,"package_name":"rubyzip","ecosystem":"rubygems","requirements":"2.3.2","direct":false,"kind":"runtime","optional":false},{"id":2461202330,"package_name":"rufus-scheduler","ecosystem":"rubygems","requirements":"3.8.2","direct":false,"kind":"runtime","optional":false},{"id":2461202331,"package_name":"sentry-rails","ecosystem":"rubygems","requirements":"5.4.2","direct":false,"kind":"runtime","optional":false},{"id":2461202332,"package_name":"sentry-ruby","ecosystem":"rubygems","requirements":"5.4.2","direct":false,"kind":"runtime","optional":false},{"id":2461202333,"package_name":"sentry-sidekiq","ecosystem":"rubygems","requirements":"5.4.2","direct":false,"kind":"runtime","optional":false},{"id":2461202334,"package_name":"sidekiq","ecosystem":"rubygems","requirements":"6.5.4","direct":false,"kind":"runtime","optional":false},{"id":2461202335,"package_name":"sidekiq-scheduler","ecosystem":"rubygems","requirements":"4.0.2","direct":false,"kind":"runtime","optional":false},{"id":2461202336,"package_name":"simple_form","ecosystem":"rubygems","requirements":"5.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202337,"package_name":"sixarm_ruby_unaccent","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202338,"package_name":"slim","ecosystem":"rubygems","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202339,"package_name":"sprockets","ecosystem":"rubygems","requirements":"4.1.1","direct":false,"kind":"runtime","optional":false},{"id":2461202340,"package_name":"sprockets-rails","ecosystem":"rubygems","requirements":"3.4.2","direct":false,"kind":"runtime","optional":false},{"id":2461202341,"package_name":"statsd-ruby","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":2461202342,"package_name":"stimulus-rails","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202343,"package_name":"strscan","ecosystem":"rubygems","requirements":"3.0.4","direct":false,"kind":"runtime","optional":false},{"id":2461202344,"package_name":"super_diff","ecosystem":"rubygems","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":2461202345,"package_name":"tailwindcss-rails","ecosystem":"rubygems","requirements":"2.0.12","direct":false,"kind":"runtime","optional":false},{"id":2461202346,"package_name":"temple","ecosystem":"rubygems","requirements":"0.8.2","direct":false,"kind":"runtime","optional":false},{"id":2461202347,"package_name":"thor","ecosystem":"rubygems","requirements":"1.2.1","direct":false,"kind":"runtime","optional":false},{"id":2461202348,"package_name":"tilt","ecosystem":"rubygems","requirements":"2.0.11","direct":false,"kind":"runtime","optional":false},{"id":2461202349,"package_name":"timeout","ecosystem":"rubygems","requirements":"0.3.0","direct":false,"kind":"runtime","optional":false},{"id":2461202350,"package_name":"tod","ecosystem":"rubygems","requirements":"3.1.0","direct":false,"kind":"runtime","optional":false},{"id":2461202351,"package_name":"ttfunk","ecosystem":"rubygems","requirements":"1.7.0","direct":false,"kind":"runtime","optional":false},{"id":2461202352,"package_name":"turbo-rails","ecosystem":"rubygems","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":2461202353,"package_name":"turbolinks","ecosystem":"rubygems","requirements":"5.2.1","direct":false,"kind":"runtime","optional":false},{"id":2461202354,"package_name":"turbolinks-source","ecosystem":"rubygems","requirements":"5.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202355,"package_name":"tzinfo","ecosystem":"rubygems","requirements":"2.0.5","direct":false,"kind":"runtime","optional":false},{"id":2461202356,"package_name":"unf","ecosystem":"rubygems","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":2461202357,"package_name":"unf_ext","ecosystem":"rubygems","requirements":"0.0.8.2","direct":false,"kind":"runtime","optional":false},{"id":2461202358,"package_name":"uniform_notifier","ecosystem":"rubygems","requirements":"1.16.0","direct":false,"kind":"runtime","optional":false},{"id":2461202359,"package_name":"web-console","ecosystem":"rubygems","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202360,"package_name":"websocket-driver","ecosystem":"rubygems","requirements":"0.7.5","direct":false,"kind":"runtime","optional":false},{"id":2461202361,"package_name":"websocket-extensions","ecosystem":"rubygems","requirements":"0.1.5","direct":false,"kind":"runtime","optional":false},{"id":2461202362,"package_name":"xpath","ecosystem":"rubygems","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":2461202363,"package_name":"zeitwerk","ecosystem":"rubygems","requirements":"2.6.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2026-08-08T11:33:53.684Z","updated_at":"2026-08-08T11:33:53.684Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/.github/workflows/ci.yml","dependencies":[{"id":25958588574,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v6","direct":true,"kind":"composite","optional":false},{"id":25958588575,"package_name":"jdx/mise-action","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25958588576,"package_name":"speedshop/ids_must_be_indexed","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":25958588577,"package_name":"github/codeql-action/upload-sarif","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/security.yml","sha":null,"kind":"manifest","created_at":"2025-12-24T01:01:07.233Z","updated_at":"2025-12-24T01:01:07.233Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/.github/workflows/security.yml","dependencies":[{"id":25777006225,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v5","direct":true,"kind":"composite","optional":false},{"id":25777006226,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":25777006227,"package_name":"github/codeql-action/upload-sarif","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2025-12-24T01:01:08.076Z","updated_at":"2025-12-24T01:01:08.076Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/Dockerfile","dependencies":[{"id":25777006228,"package_name":"docker.io/library/ruby","ecosystem":"docker","requirements":"$RUBY_VERSION-slim","direct":true,"kind":"build","optional":false},{"id":25777006229,"package_name":"base","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2025-12-24T01:01:12.362Z","updated_at":"2025-12-24T01:01:12.362Z","repository_link":"https://github.com/csa-admin-org/csa-admin/blob/master/package.json","dependencies":[{"id":25777006297,"package_name":"@herb-tools/linter","ecosystem":"npm","requirements":"^0.8.2","direct":true,"kind":"development","optional":false},{"id":25777006298,"package_name":"@herb-tools/formatter","ecosystem":"npm","requirements":"^0.8.2","direct":true,"kind":"development","optional":false},{"id":25777006299,"package_name":"prettier","ecosystem":"npm","requirements":"^3.6.2","direct":true,"kind":"development","optional":false},{"id":25777006300,"package_name":"prettier-plugin-tailwindcss","ecosystem":"npm","requirements":"^0.6.14","direct":true,"kind":"development","optional":false}]}],"score":null,"created_at":"2024-11-20T00:02:00.182Z","updated_at":"2026-08-17T20:32:53.866Z","avatar_url":"https://github.com/csa-admin-org.png","language":"Ruby","category":"Consumption","sub_category":"Agriculture and Nutrition","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003ca href=\"https://csa-admin.org\"\u003e\n  \u003cimg title=\"CSA/ACP/Solawi Admin logo\" src=\"https://csa-admin.org/images/logo-23671d2e.svg\" width=\"100\"\u003e\n\u003c/a\u003e\n\n# CSA/ACP/Solawi Admin\n\n[![CI](https://github.com/csa-admin-org/csa-admin/actions/workflows/ci.yml/badge.svg)](https://github.com/csa-admin-org/csa-admin/actions/workflows/ci.yml)\n[![Security](https://github.com/csa-admin-org/csa-admin/actions/workflows/security.yml/badge.svg)](https://github.com/csa-admin-org/csa-admin/actions/workflows/security.yml)\n[![Ruby](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcsa-admin-org%2Fcsa-admin%2Fmaster%2Fmise.toml\u0026query=%24.tools.ruby\u0026label=Ruby\u0026color=CC342D\u0026logo=ruby\u0026logoColor=white)](https://www.ruby-lang.org/)\n[![Ruby on Rails](https://img.shields.io/badge/Ruby_on_Rails-CC0000?logo=ruby-on-rails\u0026logoColor=white)](https://rubyonrails.org/)\n\nCSA/ACP/Solawi Admin is a web application to manage Community Supported Agriculture organizations:\n- **CSA** (Community Supported Agriculture)\n- **ACP** (Agriculture Contractuelle de Proximité)\n- **Solawi** (Solidarische Landwirtschaft)\n\nLearn more on [csa-admin.org](https://csa-admin.org).\n\n## Features\n\n- Member management (status, contact information, etc.)\n- Membership management (basket size, depot location, quantity, delivery cycle, etc.)\n- Basket complements (delivery frequency, quantity, etc.)\n- Online grocery store for additional product orders\n- Advanced delivery cycle management (every two weeks, winter/summer, etc.)\n- Basket content management (harvest-based quantity calculations, price monitoring, etc.)\n- Bidding rounds for solidarity-based basket pricing (member pledges with min/max bounds)\n- Automatic invoicing:\n  - memberships\n  - membership shares / annual fees\n  - invoice dispatch with QR code and SEPA reference numbers\n  - automatic payment statement import from bank accounts (EBICS 3.0/H005/BTF, BAS, bunq)\n  - overdue notices\n- Activity participation management with member registration forms\n- Transactional email and built-in newsletter system\n- Multilingual support (**en, fr, de, it, nl**)\n\nNeed a demo or a specific feature? [Contact me](mailto:info@csa-admin.org).\n\n## Organizations\n\nThis application is currently used by [more than 30 organizations](https://csa-admin.org/#organizations) in Switzerland, Germany, and the Netherlands, and manages more than 140,000 basket deliveries per year.\n\n## Technical overview\n\n- Built with Ruby on Rails\n- Multi-tenant architecture:\n  - tenant resolved from the configured request host\n  - one isolated SQLite database per tenant\n- Asynchronous jobs handled by Solid Queue and Active Job (SQLite-backed)\n- Transactional emails and newsletters sent via Postmark\n- Tenant-local bank connections for automatic payment imports and EBICS 3.0/H005/BTF uploads; see `docs/bank_connections.md` for manual console setup\n\n## Getting started\n\nDevelopment requirements are managed with [Mise](https://mise.jdx.dev) 2026.7 or newer. Local development uses [puma-dev](https://github.com/puma/puma-dev) over HTTPS.\n\n1. Clone the repository.\n2. Install and activate Mise, then install and configure puma-dev for your system.\n3. Trust the project configuration and bootstrap the application:\n\n   ```sh\n   mise trust\n   mise bootstrap\n   ```\n\n   This installs libvips and Poppler, the Ruby, Node, and Aube versions declared in `mise.toml`, then runs `bin/setup --skip-server`. On Intel macOS, install libvips and Poppler through Homebrew first because Mise's Brew bootstrap supports Apple Silicon only.\n\n4. Update the generated `config/tenant.yml` with your admin and member hostnames.\n5. From the repository directory, link the configured base domain to puma-dev. For the sample `my-domain.org` configuration:\n\n   ```sh\n   puma-dev link -n my-domain\n   ```\n\n6. Open the configured `admin_host` or `members_host`, replacing its public top-level domain with `.test`. For example:\n   - `admin.ragedevert.ch` → [admin.ragedevert.test](https://admin.ragedevert.test)\n   - `membres.ragedevert.ch` → [membres.ragedevert.test](https://membres.ragedevert.test)\n\n   Use the configured host rather than deriving it from the tenant name: host labels and domains vary between organizations. Admin and member portals have separate authentication contexts. The `acme` tenant is test-only and is not available for local browser access.\n\n7. Sign in through the selected tenant's local admin host with an admin email for that tenant.\n\n## Development\n\nUseful commands:\n\n- Bootstrap / refresh the local environment: `mise bootstrap` or `bin/setup --skip-server`\n- Update toolchains and dependency lockfiles (`bin/update`; also syncs Ruby/Herb pins)\n- Run all tests: `bin/rails test:all`\n- Run final validation (setup, style, security, tests, seeds): `bin/ci`\n- Run part of the CI workflow declared in `config/ci.rb`:\n  - `bin/ci -g style` / `bin/ci -g security` / `bin/ci -g tests`\n  - `bin/ci -s \"Style: RuboCop\"` (exact step title; case-insensitive)\n  - `bin/ci -h` for all options\n- Individual linters/formatters remain available (`bin/rubocop`, `bin/locales`, `bin/herb`, …)\n\n## Contributing\n\nContributions are welcome.\n\nBefore starting substantial work (new feature, larger refactor), please [contact me](mailto:info@csa-admin.org) first so we can align on scope and implementation.\n\nFor smaller fixes and improvements, feel free to open a pull request.\n\n## Support\n\n- Thibaud Guillaume-Gentil ([info@csa-admin.org](mailto:info@csa-admin.org))\n\nFor demos, support, or custom feature requests, [contact me](mailto:info@csa-admin.org).\n\n## License\n\nCSA/ACP/Solawi Admin is released under the [O’Saasy License](https://osaasy.dev).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","archiving","transforms","measur","generic","observation","compose","conversion","projection","animals"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/304176","html_url":"https://ost.ecosyste.ms/projects/304176"}