{"id":13559145,"url":"https://github.com/crowi/crowi","last_synced_at":"2026-07-01T15:00:44.121Z","repository":{"id":19800005,"uuid":"23059825","full_name":"crowi/crowi","owner":"crowi","description":"Crowi - The Markdown Wiki - Empower the team with sharing your knowledge","archived":false,"fork":false,"pushed_at":"2026-06-29T02:01:09.000Z","size":53674,"stargazers_count":1099,"open_issues_count":0,"forks_count":164,"subscribers_count":61,"default_branch":"main","last_synced_at":"2026-06-29T04:04:43.880Z","etag":null,"topics":["crowi","knowledge","markdown-wiki","typescript","wiki"],"latest_commit_sha":null,"homepage":"https://crowi.wiki","language":"TypeScript","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/crowi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2014-08-18T05:32:58.000Z","updated_at":"2026-06-29T02:01:13.000Z","dependencies_parsed_at":"2025-04-19T20:21:58.165Z","dependency_job_id":"728acfe5-31f5-4d92-9a93-2b10dc74b886","html_url":"https://github.com/crowi/crowi","commit_stats":{"total_commits":2412,"total_committers":48,"mean_commits":50.25,"dds":0.5812603648424544,"last_synced_commit":"49bd606e492faca79efe5750a3c83daa378e77c0"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/crowi/crowi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowi%2Fcrowi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowi%2Fcrowi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowi%2Fcrowi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowi%2Fcrowi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crowi","download_url":"https://codeload.github.com/crowi/crowi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowi%2Fcrowi/sbom","scorecard":{"id":309764,"data":{"date":"2025-08-11","repo":{"name":"github.com/crowi/crowi","commit":"d980fae9d68516f13cdbb060f2adcc10d53f1174"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/19 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/crowi/crowi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/crowi/crowi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/crowi/crowi/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/crowi/crowi/main.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:22: pin your Docker image by updating node:12.18.2-buster-slim to node:12.18.2-buster-slim@sha256:c12227147d4573c9b3f9e17093b5b4088924fee99f91fc05ef19f92d364ee3dd","Warn: containerImage not pinned by hash: elasticsearch/Dockerfile:1: pin your Docker image by updating docker.elastic.co/elasticsearch/elasticsearch:7.4.0 to docker.elastic.co/elasticsearch/elasticsearch:7.4.0@sha256:ccacb1463adc6daee970ed45e34cc46c14ba22116b64d5d4fac58044dfd61e8c","Warn: containerImage not pinned by hash: elasticsearch/Dockerfile.sudachi:1","Warn: containerImage not pinned by hash: elasticsearch/Dockerfile.sudachi:7: pin your Docker image by updating docker.elastic.co/elasticsearch/elasticsearch:7.4.0 to docker.elastic.co/elasticsearch/elasticsearch:7.4.0@sha256:ccacb1463adc6daee970ed45e34cc46c14ba22116b64d5d4fac58044dfd61e8c","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned","Info:   2 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 14 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"185 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-rrc9-gqf8-8rwg","Warn: Project is vulnerable to: GHSA-4w2v-q235-vp99","Warn: Project is vulnerable to: GHSA-cph5-m8f7-6c5x","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-7p89-p6hx-q4fw","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-vc8w-jr9v-vj7f","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-4jwp-vfvf-657p","Warn: Project is vulnerable to: GHSA-v8w9-2789-6hhr","Warn: Project is vulnerable to: GHSA-257v-vj4p-3w2h","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-h452-7996-h45h","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-wm7h-9275-46v2","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-j4f2-536g-r55m","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-6h5x-7c5m-7cr7","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-vfrc-7r7c-w9mx","Warn: Project is vulnerable to: GHSA-7wwv-vh3v-89cq","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-545q-3fg6-48m7","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr","Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg","Warn: Project is vulnerable to: GHSA-gxr4-xjj5-5px2","Warn: Project is vulnerable to: GHSA-jpcq-cgw6-v4j6","Warn: Project is vulnerable to: GHSA-wgfq-7857-4jcc","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-4wx3-54gh-9fr9","Warn: Project is vulnerable to: GHSA-ch52-vgq2-943f","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-r6rj-9ch6-g264","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-f825-f98c-gj3g","Warn: Project is vulnerable to: GHSA-h8hf-x3f4-xwgp","Warn: Project is vulnerable to: GHSA-9m93-w8w6-76hh","Warn: Project is vulnerable to: GHSA-m7xq-9374-9rvx","Warn: Project is vulnerable to: GHSA-vg7j-7cwx-8wgw","Warn: Project is vulnerable to: GHSA-p92x-r36w-9395","Warn: Project is vulnerable to: GHSA-45q2-34rf-mr94","Warn: Project is vulnerable to: GHSA-44fp-w29j-9vj5","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-w7rc-rwvf-8q5r","Warn: Project is vulnerable to: GHSA-92xj-mqp7-vmcj","Warn: Project is vulnerable to: GHSA-wxgw-qj99-44c2","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-r8f7-9pfq-mjmv","Warn: Project is vulnerable to: GHSA-48ww-j4fc-435p","Warn: Project is vulnerable to: GHSA-hwqf-gcqm-7353","Warn: Project is vulnerable to: GHSA-9h6g-pr28-7cqp","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-v923-w3x8-wh69","Warn: Project is vulnerable to: GHSA-f794-r6xc-hf3v","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-hwj9-h5mp-3pm3","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-wvhm-4hhf-97x9","Warn: Project is vulnerable to: GHSA-h4hr-7fg3-h35w","Warn: Project is vulnerable to: GHSA-gj77-59wh-66hg","Warn: Project is vulnerable to: GHSA-hqhp-5p83-hx96","Warn: Project is vulnerable to: GHSA-3949-f494-cm99","Warn: Project is vulnerable to: GHSA-x7hr-w5r2-h6wg","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-5q6m-3h65-w53x","Warn: Project is vulnerable to: GHSA-35q2-47q7-3pc3","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-6vwx-mwp8-fh44","Warn: Project is vulnerable to: GHSA-hhqj-cfjx-vj25","Warn: Project is vulnerable to: GHSA-7mwh-4pqv-wmr8","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-h9rv-jmmf-4pgx","Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-fxwf-4rqh-v8g3","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-xfhh-g9f5-x4m4","Warn: Project is vulnerable to: GHSA-qm95-pgcg-qqfq","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-w5hq-hm5m-4548","Warn: Project is vulnerable to: GHSA-2rq5-699j-x7p6","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-662x-fhqg-9p8v","Warn: Project is vulnerable to: GHSA-394c-5j6w-4xmx","Warn: Project is vulnerable to: GHSA-78cj-fxph-m83p","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-c9f4-xj24-8jqx","Warn: Project is vulnerable to: GHSA-332q-7ff2-57h2","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-9m6j-fcg5-2442","Warn: Project is vulnerable to: GHSA-hh27-ffr2-f2jc","Warn: Project is vulnerable to: GHSA-rqff-837h-mm52","Warn: Project is vulnerable to: GHSA-8v38-pw62-9cw2","Warn: Project is vulnerable to: GHSA-hgjh-723h-mx2j","Warn: Project is vulnerable to: GHSA-jf5r-8hm2-f872","Warn: Project is vulnerable to: GHSA-f5w6-r7rg-mcgq","Warn: Project is vulnerable to: GHSA-qgmg-gppg-76g5","Warn: Project is vulnerable to: GHSA-g3ch-rx76-35fx","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc","Warn: Project is vulnerable to: GHSA-72mh-269x-7mh5","Warn: Project is vulnerable to: GHSA-h4j5-c7cj-74xg","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T22:56:53.023Z","repository_id":19800005,"created_at":"2025-08-17T22:56:53.024Z","updated_at":"2025-08-17T22:56:53.024Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35011257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crowi","knowledge","markdown-wiki","typescript","wiki"],"created_at":"2024-08-01T12:05:22.557Z","updated_at":"2026-07-01T15:00:44.111Z","avatar_url":"https://github.com/crowi.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","javascript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"packages/web/public/logo/500w.png\" width=\"500\" alt=\"Crowi\"\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003eCrowi\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eThe Markdown Wiki — empower the team with sharing your knowledge.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/crowi/crowi/actions/workflows/ci.yml/badge.svg\" alt=\"GitHub Actions CI\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003e [!CAUTION]\n\u003e **Crowi v2 — codename *Reignite* — is in active prerelease.**\n\u003e\n\u003e - Prereleases are published (latest **`2.0.0-alpha.3`**) and support an in-place\n\u003e   upgrade from a v1 MongoDB. There is no *stable* v2 yet, so the API / config\n\u003e   surface can still change between alphas — pin a version and read the release\n\u003e   notes. For a real deployment use a published release, not this branch's HEAD.\n\u003e - Crowi v1.x is deprecated and unmaintained.\n\u003e - Track progress in [`TODO.md`](./TODO.md), the [docs](https://crowi.wiki), and the\n\u003e   [v2 announcement on Zenn](https://zenn.dev/sotarok/articles/34795a35a4ef74).\n\n## What is Crowi\n\nCrowi is a **Markdown Wiki** for team knowledge sharing. URL paths *are* the\npage hierarchy, so `/team/handbook/onboarding` reads exactly the way it's\nwritten. v2 (\"Reignite\") rebuilds the stack from Express + Swig + jQuery\nto a **Hono API + Next.js 16 (App Router) + React 19**, while keeping v1's\nMongoDB data shape intact — your existing wiki migrates over.\n\n**v2 highlights:** real-time collaborative editing (Yjs / Hocuspocus), an\nembedded Model Context Protocol (MCP) server for AI agents, OAuth 2.0 +\npersonal access tokens, a pluggable storage / search / renderer / mail\narchitecture, sensitive-config encryption (AES-256-GCM), dark mode, and the\n`@crowi/cli` end-user CLI.\n\n## Monorepo layout\n\nThis repository is a Turborepo + pnpm workspace.\n\n```\ncrowi/\n├── apps/\n│   ├── crowi-runner/      # Reference runner project (@crowi/runner-app): dev launch\n│   │                      #   point + build source for the full Docker image. Owns\n│   │                      #   @crowi/api + the full plugin set + crowi.config.json.\n│   ├── crowi-runner-slim/ # Minimal runner project: build source for the slim Docker\n│   │                      #   image (core + a minimal plugin set)\n│   └── crowi-site/        # crowi.wiki LP + docs (Next.js + Fumadocs, port 4303)\n├── .env.example           # Dev runtime env template (copy to .env)\n└── packages/\n    ├── api/                          # Hono 4 API library (port 4301)\n    ├── api-contract/                  # Shared Hono (@hono/zod-openapi) contracts + Zod schemas\n    ├── web/                           # Next.js 16 frontend (port 4302)\n    ├── collab/                        # Realtime collab server (Yjs / Hocuspocus), attached to the api\n    ├── runner/                        # Config loader + plugin resolver (used by @crowi/api boot)\n    ├── cli/                           # `@crowi/cli` end-user CLI (read / write / search over the HTTP API)\n    ├── admin-cli/                     # `crowi-admin` CLI (init / migrate / re-encrypt; DB-direct)\n    ├── plugin-api/                    # Plugin SDK (CrowiPlugin / registries / context)\n    ├── plugin-aws/                    # Shared AWS credentials base plugin\n    ├── plugin-storage-local/          # Default-on local FS storage driver\n    ├── plugin-storage-aws-s3/         # S3 storage driver\n    ├── plugin-search-elasticsearch/   # Elasticsearch search driver\n    ├── plugin-search-opensearch/      # OpenSearch search driver\n    ├── plugin-search-mongo/           # MongoDB-native search driver (no external service)\n    ├── plugin-mail-smtp/              # SMTP mail transport\n    ├── plugin-mail-resend/            # Resend mail transport\n    ├── plugin-mail-aws-ses/           # AWS SES mail transport\n    ├── plugin-renderer-emoji/         # `:emoji:` → 🎉 renderer\n    ├── plugin-renderer-katex/         # KaTeX math renderer\n    ├── plugin-renderer-plantuml/      # PlantUML diagram renderer\n    └── plugin-renderer-crowi-legacy/  # v1-era wikilinks / strikethrough / etc.\n```\n\nThe API package is plugin-agnostic at runtime — `@crowi/runner`\nresolves plugin npm names against the runner project's `node_modules/`\nvia `createRequire(\u003cprojectDir\u003e/package.json)`. Operators add a plugin\nby declaring it in their runner's `package.json` deps and listing it\nin `crowi.config.json:plugins`; the api never needs to be rebuilt.\n\n## Tech stack\n\n- **API**: Hono 4 + `@hono/zod-openapi` + Mongoose + JWT auth (`jwtAuth` middleware); OAuth 2.0 + PAT; embedded MCP server\n- **Realtime**: Yjs + Hocuspocus, attached to the api process (`@crowi/collab`)\n- **Web**: Next.js 16 (App Router, Turbopack) + React 19 + Tailwind CSS v4 + shadcn/ui + @tanstack/react-query\n- **Site**: Next.js 16 (static export) + Fumadocs UI + i18n (ja / en)\n- **Shared**: TypeScript 5.x strict, pnpm workspaces, Turborepo\n- **Lint / Format**: Biome (format) + ESLint (lint), lefthook hooks\n- **Tests**: Jest + supertest + mongodb-memory-server (API + collab)\n\n## Requirements\n\n- Node.js 24.x\n- pnpm 10.x (pinned via `packageManager` in `package.json`)\n- MongoDB\n- Redis\n- A search backend (optional, plugin-driven): Elasticsearch / OpenSearch, or the external-service-free MongoDB driver\n- Docker / Docker Compose (for local infrastructure)\n\n## Local development\n\n```bash\n# 1. Install dependencies\npnpm install\n\n# 2. Start dependency services (MongoDB / Redis / Elasticsearch / PlantUML)\ndocker compose up -d\n\n# 3. Set up env file at the repo root. `pnpm dev` boots the api with cwd =\n#    apps/crowi-runner (the runner projectDir), so its dev script loads this\n#    repo-root .env via `--env-file-if-exists=../../.env`. (In production / an\n#    external runner project, the api reads the .env in its own cwd via dotenv.)\ncp .env.example .env\n# Edit MONGO_URI / REDIS_URL / PASSWORD_SEED / CROWI_ENCRYPTION_KEY etc.\n\n# 4. Run everything (api on :4301, web on :4302, plugins compiled in watch mode)\npnpm dev\n```\n\nOther targeted scripts:\n\n```bash\npnpm dev:api       # just the API + plugins (no Next.js)\npnpm dev:web       # just the Next.js frontend\npnpm dev:site      # crowi.wiki LP + docs (port 4303)\n```\n\n## Environment variables\n\n`.env.example` (at the repo root) lists the full set. Highlights:\n\n| Variable | Purpose |\n| --- | --- |\n| `MONGO_URI` | MongoDB connection string |\n| `REDIS_URL` | Sessions + socket.io adapter (use `rediss://` for TLS) |\n| `PASSWORD_SEED` | Legacy password hashing seed (still used for fallback verification) |\n| `CLIENT_URL` | CORS allowlist origin in production (defaults allow localhost in dev) |\n| `CROWI_ENCRYPTION_KEY` | Base64-encoded 32-byte AES-256 key for sensitive Config encryption. Generate via `openssl rand -base64 32` or `pnpm --filter @crowi/api crypto:gen-key`. Strongly recommended to set; missing key falls back to plaintext (legacy behaviour) with a startup warning. |\n| `PORT` | API server port (default `4301`) |\n| `NODE_ENV` | `production` or `development` |\n\nStorage backend selection is driven by the runner's `crowi.config.json`\n(`storage.driver: 'local' | 's3' | ...`) plus the corresponding\n`@crowi/plugin-storage-*` package — there is no `FILE_UPLOAD` env any\nmore.\n\n## Tests / type-check / lint / build\n\n```bash\npnpm test                                  # all apps\npnpm --filter @crowi/api test              # api only\npnpm type-check                            # api + web + site\npnpm lint                                  # all apps; errors=0 required\npnpm build                                 # all\npnpm --filter @crowi/api-contract build    # required after editing contracts\n```\n\nFormat runs automatically via lefthook on commit (Biome).\nManual: `pnpm format` / `pnpm format:check`.\n\n## Plugins\n\nPlugins are regular npm packages declared in the runner project's\ndependencies and listed in `crowi.config.json:plugins`. The shipped\nfirst-party plugins live under `packages/plugin-*/`:\n\n- **Storage**: `plugin-storage-local` (default), `plugin-storage-aws-s3`\n- **Search**: `plugin-search-elasticsearch`, `plugin-search-opensearch`, `plugin-search-mongo` (no external service)\n- **Mail**: `plugin-mail-smtp`, `plugin-mail-resend`, `plugin-mail-aws-ses`\n- **Renderers**: `plugin-renderer-emoji`, `plugin-renderer-katex`, `plugin-renderer-plantuml`, `plugin-renderer-crowi-legacy`\n\nWrite your own by depending on `@crowi/plugin-api`, exporting a default\n`CrowiPlugin`, and adding the package name to your runner's\n`crowi.config.json`.\n\n## License\n\nThe MIT License (MIT). See [`LICENSE`](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowi%2Fcrowi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrowi%2Fcrowi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowi%2Fcrowi/lists"}