{"id":47962983,"url":"https://github.com/datadrivenconstruction/openconstructionerp","last_synced_at":"2026-06-07T12:02:13.786Z","repository":{"id":348876183,"uuid":"1199643986","full_name":"datadrivenconstruction/OpenConstructionERP","owner":"datadrivenconstruction","description":"Open-source construction ERP - BOQ, PDF/CAD/BIM takeoff, AI cost matching. 42 regional catalogues, 21 languages, 71 modules. AGPL-3.0. v3.0 - pip install openconstructionerp","archived":false,"fork":false,"pushed_at":"2026-06-01T06:59:46.000Z","size":433550,"stargazers_count":292,"open_issues_count":1,"forks_count":105,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-01T07:17:17.821Z","etag":null,"topics":["4d","5d","ai","autocad","bill-of-quantities","bim","boq","cad","calculation","construction","cost-estimation","erp","fastapi","ifc","masterformat","open-source","pdf","qto","revit","takeoff"],"latest_commit_sha":null,"homepage":"https://openconstructionerp.com","language":"TypeScript","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/datadrivenconstruction.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP_v1.9.md","authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"},"funding":{"github":["datadrivenconstruction"],"custom":["https://datadrivenconstruction.io"]}},"created_at":"2026-04-02T14:59:02.000Z","updated_at":"2026-06-01T07:06:59.000Z","dependencies_parsed_at":"2026-04-08T14:02:37.141Z","dependency_job_id":null,"html_url":"https://github.com/datadrivenconstruction/OpenConstructionERP","commit_stats":null,"previous_names":["datadrivenconstruction/openconstructionerp"],"tags_count":200,"template":false,"template_full_name":null,"purl":"pkg:github/datadrivenconstruction/OpenConstructionERP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadrivenconstruction%2FOpenConstructionERP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadrivenconstruction%2FOpenConstructionERP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadrivenconstruction%2FOpenConstructionERP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadrivenconstruction%2FOpenConstructionERP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datadrivenconstruction","download_url":"https://codeload.github.com/datadrivenconstruction/OpenConstructionERP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadrivenconstruction%2FOpenConstructionERP/sbom","scorecard":{"id":1246890,"data":{"date":"2026-05-03T11:41:40Z","repo":{"name":"github.com/datadrivenconstruction/OpenConstructionERP","commit":"7321787b614dd05a555b7efb0e1d1a447c899121"},"scorecard":{"version":"v5.0.0","commit":"ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4"},"score":4.8,"checks":[{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":3,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disable on branch 'main'","Warn: branch 'main' does not require approvers","Warn: codeowners review is not required on branch 'main'","Warn: no status checks found to merge onto branch 'main'","Warn: PRs are not required to make changes on branch 'main'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":-1,"reason":"no pull request found","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#ci-tests"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#code-review"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: datadrivenconstruction contributor org/company found, "],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#contributors"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dependency-update-tool"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#license"}},{"name":"Maintained","score":0,"reason":"project was created in last 90 days. please review its contents carefully","details":["Warn: Repository was created in last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#maintained"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cla.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/cla.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependency-review.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/dependency-review.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dependency-review.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/dependency-review.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/desktop-release.yml:132: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/desktop-release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-please.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release-please.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-signing.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release-signing.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sbom-and-licenses.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/sbom-and-licenses.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sbom-and-licenses.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/sbom-and-licenses.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sbom-and-licenses.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/sbom-and-licenses.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sbom-and-licenses.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/sbom-and-licenses.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/sbom-and-licenses.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/sbom-and-licenses.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/scorecard.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/scorecard.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/scorecard.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/scorecard.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/datadrivenconstruction/OpenConstructionERP/scorecard.yml/main?enable=pin","Warn: containerImage not pinned by hash: deploy/docker/Dockerfile.backend:1","Warn: containerImage not pinned by hash: deploy/docker/Dockerfile.frontend:1","Warn: containerImage not pinned by hash: deploy/docker/Dockerfile.frontend:11: pin your Docker image by updating nginx:alpine to nginx:alpine@sha256:5616878291a2eed594aee8db4dade5878cf7edcb475e59193904b198d9b830de","Warn: containerImage not pinned by hash: deploy/docker/Dockerfile.unified:19","Warn: containerImage not pinned by hash: deploy/docker/Dockerfile.unified:28: pin your Docker image by updating python:3.12-slim to python:3.12-slim@sha256:46cb7cc2877e60fbd5e21a9ae6115c30ace7a077b9f8772da879e4590c18c2e3","Warn: pipCommand not pinned by hash: deploy/docker/Dockerfile.backend:12-13","Warn: pipCommand not pinned by hash: deploy/docker/Dockerfile.backend:12-13","Warn: pipCommand not pinned by hash: deploy/docker/Dockerfile.unified:48-49","Warn: pipCommand not pinned by hash: deploy/docker/Dockerfile.unified:48-49","Warn: pipCommand not pinned by hash: desktop/build-sidecar.sh:57","Warn: pipCommand not pinned by hash: scripts/build-wheel.sh:32","Warn: downloadThenRun not pinned by hash: scripts/install.sh:95","Warn: pipCommand not pinned by hash: scripts/install.sh:147","Warn: pipCommand not pinned by hash: scripts/install.sh:149","Warn: pipCommand not pinned by hash: scripts/install.sh:151","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:59","Warn: pipCommand not pinned by hash: .github/workflows/desktop-release.yml:63","Warn: pipCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:31","Warn: npmCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/sbom-and-licenses.yml:42","Info:   0 out of  27 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  11 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned","Info:   0 out of  16 pipCommand dependencies pinned","Info:   8 out of   9 npmCommand dependencies pinned","Info:   0 out of   1 downloadThenRun 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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#sast"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":8,"reason":"1 out of the last 1 releases have a total of 1 signed artifacts.","details":["Info: signed release artifact: SHA256SUMS.sig: https://api.github.com/repos/datadrivenconstruction/OpenConstructionERP/releases/assets/411072977","Warn: release artifact v2.7.0 does not have provenance: https://api.github.com/repos/datadrivenconstruction/OpenConstructionERP/releases/316841176"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecard.yml:19","Info: jobLevel 'actions' permission set to 'read': .github/workflows/scorecard.yml:20","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: topLevel 'actions' permission set to 'write': .github/workflows/cla.yml:14","Warn: topLevel 'contents' permission set to 'write': .github/workflows/cla.yml:15","Warn: topLevel 'statuses' permission set to 'write': .github/workflows/cla.yml:17","Info: topLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:13","Warn: topLevel 'security-events' permission set to 'write': .github/workflows/codeql.yml:14","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:8","Warn: topLevel 'contents' permission set to 'write': .github/workflows/desktop-release.yml:20","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-please.yml:16","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-signing.yml:13","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:14","Warn: topLevel 'packages' permission set to 'write': .github/workflows/release.yml:15","Warn: topLevel 'contents' permission set to 'write': .github/workflows/sbom-and-licenses.yml:9","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:10","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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2024-0413","Warn: Project is vulnerable to: RUSTSEC-2024-0416","Warn: Project is vulnerable to: RUSTSEC-2025-0057","Warn: Project is vulnerable to: RUSTSEC-2024-0412","Warn: Project is vulnerable to: RUSTSEC-2024-0418","Warn: Project is vulnerable to: RUSTSEC-2024-0411","Warn: Project is vulnerable to: RUSTSEC-2024-0417","Warn: Project is vulnerable to: RUSTSEC-2024-0414","Warn: Project is vulnerable to: GHSA-wrw7-89jp-8q8g / RUSTSEC-2024-0429","Warn: Project is vulnerable to: RUSTSEC-2024-0415","Warn: Project is vulnerable to: RUSTSEC-2024-0420","Warn: Project is vulnerable to: RUSTSEC-2024-0419","Warn: Project is vulnerable to: RUSTSEC-2024-0370","Warn: Project is vulnerable to: GHSA-cq8v-f236-94qc / RUSTSEC-2026-0097","Warn: Project is vulnerable to: RUSTSEC-2025-0081","Warn: Project is vulnerable to: RUSTSEC-2025-0075","Warn: Project is vulnerable to: RUSTSEC-2025-0080","Warn: Project is vulnerable to: RUSTSEC-2025-0100","Warn: Project is vulnerable to: RUSTSEC-2025-0098","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-w5hq-g745-h8pq","Warn: Project is vulnerable to: GHSA-4w7w-66w2-5vf9"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2026-05-03T12:22:58.742Z","repository_id":348876183,"created_at":"2026-05-03T12:22:58.743Z","updated_at":"2026-05-03T12:22:58.743Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34020187,"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-06-07T02:00:07.652Z","response_time":124,"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":["4d","5d","ai","autocad","bill-of-quantities","bim","boq","cad","calculation","construction","cost-estimation","erp","fastapi","ifc","masterformat","open-source","pdf","qto","revit","takeoff"],"created_at":"2026-04-04T10:03:38.717Z","updated_at":"2026-06-07T12:02:13.733Z","avatar_url":"https://github.com/datadrivenconstruction.png","language":"TypeScript","funding_links":["https://github.com/sponsors/datadrivenconstruction","https://datadrivenconstruction.io"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# OpenConstructionERP\n\n**The #1 Open-Source Construction Estimation \u0026 Project Management Software**\n\nProfessional BOQ, 4D/5D planning, AI-powered estimation, CAD/BIM takeoff — all in one platform.\n\n[Demo](https://openconstructionerp.com) · [Documentation](https://openconstructionerp.com/docs) · [Discussions](https://t.me/datadrivenconstruction) · [Report Bug](https://github.com/datadrivenconstruction/OpenConstructionERP/issues)\n\n![License](https://img.shields.io/badge/license-AGPL--3.0-blue)\n![Version](https://img.shields.io/badge/version-0.2.0-green)\n![Languages](https://img.shields.io/badge/languages-21-orange)\n![Cost Items](https://img.shields.io/badge/cost_items-55%2C000%2B-red)\n![Standards](https://img.shields.io/badge/standards-20-blueviolet)\n\n\u003cimg src=\"docs/screenshots/hero-overview.jpg\" alt=\"OpenConstructionERP — Dashboard Overview\" width=\"800\" /\u003e\n\n*100% open source · 55,000+ cost items · AI estimation · 21 languages · Self-hosted*\n\n\u003c/div\u003e\n\n---\n\n## Why OpenConstructionERP?\n\nConstruction cost estimation software is expensive, closed-source, and locked to specific regions. OpenConstructionERP changes that.\n\n| What you get | How it works |\n|-------------|-------------|\n| **Free forever** | AGPL-3.0 license. No subscriptions, no per-seat fees, no vendor lock-in. |\n| **Your data, your server** | Self-hosted. Everything runs on your machine — nothing leaves your network. |\n| **21 languages** | Full UI translation: English, German, French, Spanish, Portuguese, Russian, Chinese, Arabic, Hindi, Japanese, Korean, and 10 more. |\n| **20 regional standards** | DIN 276, NRM 1/2, CSI MasterFormat, GAEB, ГЭСН, DPGF, GB/T 50500, CPWD, and more. |\n| **AI-powered** | Connect any LLM provider (Anthropic, OpenAI, Gemini, Mistral, Groq, DeepSeek) for smart estimation. |\n| **55,000+ cost items** | CWICR database with 11 regional pricing databases (DACH, UK, US, France, Spain, Brazil, Russia, UAE, China, India, Canada). |\n\n### How It Compares\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003eCapability\u003c/th\u003e\n\u003cth align=\"center\"\u003eOpenConstructionERP\u003c/th\u003e\n\u003cth align=\"center\"\u003eRIB iTWO\u003c/th\u003e\n\u003cth align=\"center\"\u003eExactal CostX\u003c/th\u003e\n\u003cth align=\"center\"\u003eSage Estimating\u003c/th\u003e\n\u003cth align=\"center\"\u003eBluebeam\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eLicense\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003eAGPL-3.0 (free)\u003c/td\u003e\u003ctd align=\"center\"\u003eProprietary\u003c/td\u003e\u003ctd align=\"center\"\u003eProprietary\u003c/td\u003e\u003ctd align=\"center\"\u003eProprietary\u003c/td\u003e\u003ctd align=\"center\"\u003eProprietary\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eSelf-hosted / offline\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#9888; partial\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003ePrice\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003cb\u003eFree forever\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e~\u0026#8364;500/mo\u003c/td\u003e\u003ctd align=\"center\"\u003e~\u0026#8364;300/mo\u003c/td\u003e\u003ctd align=\"center\"\u003e~\u0026#8364;200/mo\u003c/td\u003e\u003ctd align=\"center\"\u003e~\u0026#8364;30/mo\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eAI estimation\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; 7 LLM providers\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eUI languages\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003cb\u003e21\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e5\u003c/td\u003e\u003ctd align=\"center\"\u003e3\u003c/td\u003e\u003ctd align=\"center\"\u003e2\u003c/td\u003e\u003ctd align=\"center\"\u003e8\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eRegional standards\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u003cb\u003e20\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e4\u003c/td\u003e\u003ctd align=\"center\"\u003e3\u003c/td\u003e\u003ctd align=\"center\"\u003e2\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026mdash;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eBOQ editor\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eCAD/BIM takeoff\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; RVT IFC DWG DGN\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; PDF only\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003e4D/5D planning\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eCost database included\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; 55K+ items with rates\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006; extra cost\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006; extra cost\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006; extra cost\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eResource catalog\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; 7K+ with prices\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006; extra cost\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eValidation engine\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; 42 rules\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#9888; limited\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003eREST API\u003c/b\u003e\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10004; full access\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#9888; limited\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003ctd align=\"center\"\u003e\u0026#10006;\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003csub\u003eProduct names are trademarks of their respective owners. This comparison is based on publicly available information as of Q1 2026. Pricing is approximate (per-seat, list price) and may vary by region. OpenConstructionERP is not affiliated with any of the listed vendors.\u003c/sub\u003e\n\n---\n\n### Complete Estimation Workflow\n\nOpenConstructionERP covers the full lifecycle — from first sketch to final tender submission:\n\n```\n  Upload              Convert            Validate           Estimate           Tender\n ┌────────┐        ┌──────────┐       ┌───────────┐      ┌──────────┐      ┌──────────┐\n │PDF/CAD │───────▶│ Extract  │──────▶│ 42 rules  │─────▶│BOQ Editor│─────▶│ Bid Pkgs │\n │Photo   │        │quantities│       │ DIN/NRM/  │      │ + AI     │      │ Compare  │\n │Text    │        │ + AI     │       │ MasterFmt │      │ + Costs  │      │ Award    │\n └────────┘        └──────────┘       └───────────┘      └──────────┘      └──────────┘\n                                                               │\n                                                         ┌─────┴──────┐\n                                                         │ 4D Schedule│\n                                                         │ 5D Costs   │\n                                                         │ Risk Reg.  │\n                                                         │ Reports    │\n                                                         └────────────┘\n```\n\n---\n\n⭐ \u003cb\u003eIf you want to see new updates and database versions and if you find our tools useful please give our repositories a star to see more similar applications for the construction industry.\u003c/b\u003e\nStar OpenConstructionERP on GitHub and be instantly notified of new releases.\n\u003cp align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://github.com/datadrivenconstruction/cad2data-Revit-IFC-DWG-DGN-pipeline-with-conversion-validation-qto/blob/main/DDC_in_additon/DDC_readme_content/OCE%20star%20GitHub.gif\" width=\"100%\"/\u003e\n  \u003cbr\u003e\u003c/br\u003e\n\u003c/p\u003e\n\n---\n\n## Key Features\n\n### 📊 Bill of Quantities (BOQ) Management\n\n\u003cimg src=\"docs/screenshots/feature-boq.jpg\" alt=\"BOQ Editor — Create, manage and analyze Bills of Quantities\" width=\"800\" /\u003e\n\nBuild professional cost estimates with a powerful BOQ editor:\n\n- **Hierarchical BOQ structure** — Sections, positions, sub-positions with drag-and-drop reordering\n- **Inline editing** — Click any cell to edit. Tab between fields. Undo/redo with Ctrl+Z\n- **Resources \u0026 assemblies** — Link labor, materials, equipment to each position. Build reusable cost recipes\n- **Markups** — Overhead, profit, VAT, contingency — configure per project or use regional defaults\n- **Automatic calculations** — Quantity × unit rate = total. Section subtotals. Grand total with markups\n- **Validation** — 42 built-in rules check for missing quantities, zero prices, duplicate items, and compliance with DIN 276, NRM, MasterFormat\n- **Export** — Download as Excel, CSV, PDF report, or GAEB XML (X83)\n\n### 🗄️ Cost Databases \u0026 Resource Catalog\n\n\u003cimg src=\"docs/screenshots/feature-databases.jpg\" alt=\"Cost Database — 55,000+ items across 11 regions\" width=\"800\" /\u003e\n\nAccess the world's construction pricing data:\n\n- **CWICR database** — 55,000+ cost items covering all major construction trades. Available in 9 languages with 11 regional price sets\n- **Smart search** — Find items by description, code, or classification. AI-powered semantic search matches meaning, not just keywords (\"concrete wall\" finds \"reinforced partition C30/37\")\n- **Resource catalog** — 7,000+ materials, equipment, labor rates, and operators. Build custom assemblies from catalog items\n- **Regional pricing** — Automatic price adjustment based on project location. Compare rates across regions\n- **Import your data** — Upload your own cost database from Excel, CSV, or connect via API\n\n### 🏗️ CAD/BIM Takeoff \u0026 AI Estimation\n\n\u003cimg src=\"docs/screenshots/feature-takeoff-ai.jpg\" alt=\"CAD/BIM Takeoff and AI-powered estimation\" width=\"800\" /\u003e\n\nExtract quantities from any source — drawings, models, text, or photos:\n\n- **CAD/BIM takeoff** — Upload Revit (.rvt), IFC, AutoCAD (.dwg), or MicroStation (.dgn) files. DDC converters extract elements with volumes, areas, and lengths automatically\n- **Interactive QTO** — Choose how to group extracted data: by Category, Type, Level, Family. Format-specific presets for Revit and IFC\n- **PDF measurement** — Open construction drawings directly in the browser. Measure distances, areas, and count elements with calibrated scale\n- **AI estimation** — Describe your project in plain text, upload a building photo, or paste a PDF — AI generates a complete BOQ with quantities and market rates\n- **AI Cost Advisor** — Ask questions about pricing, materials, or estimation methodology. AI answers using your cost database as context\n- **Cost matching** — After AI generates an estimate, match each item against your CWICR database to replace AI-guessed rates with real market prices\n\n### 📅 4D Scheduling \u0026 5D Cost Model\n\nPlan your project timeline and track costs over time:\n\n- **Gantt chart** — Visual project schedule with drag-and-drop activities, dependencies (FS/FF/SS/SF), and critical path highlighting\n- **Auto-generate from BOQ** — Create schedule activities directly from your BOQ sections with cost-proportional durations\n- **Earned Value Management** — Track SPI, CPI, EAC, and variance. S-curve visualization shows planned vs actual progress\n- **Budget tracking** — Set baselines, compare snapshots, run what-if scenarios\n- **Monte Carlo simulation** — Risk-adjusted schedule analysis with probability distributions\n\n### 📋 Tendering, Risk \u0026 Reporting\n\nComplete your estimation workflow:\n\n- **Tendering** — Create bid packages, distribute to subcontractors, collect and compare bids with side-by-side price mirror\n- **Change orders** — Track scope changes with cost and schedule impact analysis\n- **Risk register** — Probability × impact matrix, mitigation strategies, risk-adjusted contingency\n- **Reports** — Generate professional PDF reports, Excel exports, GAEB XML. 12 built-in templates\n- **Documents** — Centralized file management with version tracking and drag-and-drop upload\n\n### 📝 Requirements \u0026 Quality Gates\n\nTrack and validate construction requirements with the EAC (Entity-Attribute-Constraint) system:\n\n- **EAC Triplets** — Capture requirements as structured data: Entity (wall), Attribute (fire_rating), Constraint (≥ F90)\n- **4 Quality Gates** — Completeness → Consistency → Coverage → Compliance. Run sequentially to validate requirements\n- **BOQ Traceability** — Link each requirement to BOQ positions for full traceability from spec to estimate\n- **Bulk Import** — Import requirements from structured text (pipe-delimited format)\n- **Categories** — Structural, fire safety, thermal, acoustic, waterproofing, electrical, mechanical, architectural\n\n### ✏️ PDF Markups \u0026 Annotations\n\nAnnotate construction drawings and documents directly in the browser:\n\n- **10 markup types** — Cloud, arrow, text, rectangle, highlight, polygon, distance, area, count, stamp\n- **Custom stamps** — Approved, Rejected, For Review, Revised, Final + create your own with logo and date\n- **Scale calibration** — Set real-world scale per page for accurate measurements\n- **Markups List** — Table view of all annotations with filters, search, and CSV export\n- **BOQ Integration** — Link measurements directly to BOQ positions (quantity = measured value)\n\n### ✅ Punch List\n\nTrack construction deficiencies from discovery to resolution:\n\n- **5-stage workflow** — Open → In Progress → Resolved → Verified → Closed\n- **Location pins** — Mark exact position on PDF drawings (x/y coordinates)\n- **Priority levels** — Low, Medium, High, Critical with color coding\n- **Photo attachments** — Upload photos of deficiencies from the field\n- **Categories** — Structural, mechanical, electrical, architectural, fire safety, plumbing, finishing\n- **PDF Export** — Generate punch list reports for stakeholder review\n- **Verification control** — Different user must verify (not the resolver)\n\n### 🌍 20 Regional Standards\n\n| Standard | Region | Format |\n|----------|--------|--------|\n| DIN 276 / ÖNORM / SIA | Germany / Austria / Switzerland | Excel, CSV |\n| NRM 1/2 (RICS) | United Kingdom | Excel, CSV |\n| CSI MasterFormat | United States / Canada | Excel, CSV |\n| GAEB DA XML 3.3 | DACH region | XML |\n| DPGF / DQE | France | Excel, CSV |\n| ГЭСН / ФЕР | Russia / CIS | Excel, CSV |\n| GB/T 50500 | China | Excel, CSV |\n| CPWD / IS 1200 | India | Excel, CSV |\n| Bayındırlık Birim Fiyat | Turkey | Excel, CSV |\n| 積算基準 (Sekisan) | Japan | Excel, CSV |\n| Computo Metrico / DEI | Italy | Excel, CSV |\n| STABU / RAW | Netherlands | Excel, CSV |\n| KNR / KNNR | Poland | Excel, CSV |\n| 표준품셈 | South Korea | Excel, CSV |\n| NS 3420 / AMA | Nordic countries | Excel, CSV |\n| ÚRS / TSKP | Czech Republic / Slovakia | Excel, CSV |\n| ACMM / ANZSMM | Australia / New Zealand | Excel, CSV |\n| CSI / CIQS | Canada | Excel, CSV |\n| FIDIC | UAE / GCC | Excel, CSV |\n| PBC / Base de Precios | Spain | Excel, CSV |\n\n### 🛡️ Validation \u0026 Compliance Engine\n\nEnsure your estimates meet regulatory standards before submission:\n\n- **42 built-in rules** across 13 rule sets — DIN 276, NRM, MasterFormat, GAEB, and universal BOQ quality checks\n- **Real-time validation** — Run checks with Ctrl+Shift+V. Each position gets a pass/warning/error indicator\n- **Quality score** — Overall BOQ quality percentage (0–100%) visible in the toolbar\n- **Drill-down** — Click any finding to jump directly to the affected BOQ position and fix it\n- **Custom rules** — Define project-specific validation rules via the rule builder or Python scripting\n\n### 🚀 Guided Onboarding\n\nGet productive in under 10 minutes:\n\n1. **Choose language** — Select from 21 languages. The entire UI switches instantly\n2. **Select region** — Determines default cost database, currency, and classification standard\n3. **Load cost database** — One-click import of CWICR pricing data for your region (55,000+ items)\n4. **Import resource catalog** — Materials, labor, equipment, and pre-built assemblies\n5. **Configure AI** *(optional)* — Enter an API key from any supported LLM provider\n6. **Create your first project** — Set name, region, standard, and start estimating\n\n---\n\n## Quick Start\n\n### Fastest: One-Line Install\n\n```bash\n# Linux / macOS\ncurl -sSL https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/scripts/install.sh | bash\n\n# Windows (PowerShell)\nirm https://raw.githubusercontent.com/datadrivenconstruction/OpenConstructionERP/main/scripts/install.ps1 | iex\n```\n\nAuto-detects Docker / Python / uv → installs and runs at **http://localhost:8080**\n\n### Option 1: Docker (recommended)\n\n```bash\ngit clone https://github.com/datadrivenconstruction/OpenConstructionERP.git\ncd OpenConstructionERP\nmake quickstart\n```\n\nOpen **http://localhost:8080** — builds everything in ~2 minutes.\n\n### Option 2: Local Development (no Docker)\n\n```bash\ngit clone https://github.com/datadrivenconstruction/OpenConstructionERP.git\ncd OpenConstructionERP\n\n# Install dependencies\ncd backend \u0026\u0026 pip install -r requirements.txt \u0026\u0026 cd ..\ncd frontend \u0026\u0026 npm install \u0026\u0026 cd ..\n\n# Start (Linux/macOS)\nmake dev\n\n# Start (Windows — two terminals)\n# Terminal 1: cd backend \u0026\u0026 uvicorn app.main:create_app --factory --reload --port 8000\n# Terminal 2: cd frontend \u0026\u0026 npm run dev\n```\n\nOpen **http://localhost:5173** — requires Python 3.12+ and Node.js 20+. Uses SQLite by default — zero configuration needed.\n\n### Option 3: pip install (full app — backend + frontend)\n\n```bash\npip install openconstructionerp\nopenconstructionerp serve --open\n```\n\nOne command installs everything. Opens browser at **http://localhost:8080** with full UI. Uses SQLite — zero config. [PyPI package](https://pypi.org/project/openconstructionerp/) (2.6 MB, includes pre-built frontend).\n\n### Demo Accounts\n\nThree demo accounts are created automatically on first start:\n\n| Account | Email | Password | Role |\n|---------|-------|----------|------|\n| Admin | `demo@openestimator.io` | `DemoPass1234!` | Full access |\n| Estimator | `estimator@openestimator.io` | `DemoPass1234!` | Estimator |\n| Manager | `manager@openestimator.io` | `DemoPass1234!` | Manager |\n\n\u003e Demo accounts include 5 pre-loaded projects from Berlin, London, New York, Paris, and Dubai with complete BOQs, schedules, and cost models.\n\n---\n\n## Tech Stack\n\n| Layer | Technology | Purpose |\n|-------|-----------|---------|\n| Backend | Python 3.12+ / FastAPI | Async API, Pydantic v2 validation, modular architecture |\n| Frontend | React 18 / TypeScript / Vite | SPA with code splitting, 21 language bundles |\n| Database | PostgreSQL 16+ / SQLite (dev) | OLTP with JSON columns, zero-config SQLite for development |\n| UI | Tailwind CSS / AG Grid | Professional data grid, responsive design, dark mode |\n| AI | Any LLM via REST API | Anthropic, OpenAI, Gemini, Mistral, Groq, DeepSeek |\n| Vector Search | LanceDB (embedded) / Qdrant | Semantic cost item search, 384d or 3072d embeddings |\n| CAD/BIM | [DDC cad2data](https://github.com/datadrivenconstruction) | RVT, IFC, DWG, DGN → structured quantities |\n| i18n | i18next + 21 language packs | Full RTL support (Arabic), locale-aware formatting |\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────┐\n│  Frontend (React SPA)                            │\n│  TypeScript · Tailwind · AG Grid · PDF.js        │\n└──────────────────┬───────────────────────────────┘\n                   │ REST API\n┌──────────────────┴───────────────────────────────┐\n│  Backend (FastAPI)                               │\n│  20 auto-discovered modules · Plugin system      │\n├──────────────────────────────────────────────────┤\n│  BOQ · Costs · Schedule · 5D · Validation · AI  │\n│  Takeoff · Tendering · Risk · Reports · Catalog  │\n│  Requirements · Markups · Punch List             │\n├──────────────────────────────────────────────────┤\n│  Database (PostgreSQL / SQLite)                  │\n│  Vector DB (LanceDB / Qdrant)                    │\n│  CAD Converters (DDC cad2data)                   │\n└──────────────────────────────────────────────────┘\n```\n\n---\n\n## Support the Project\n\nOpenConstructionERP is built and maintained by the community. If you find it useful:\n\n- ⭐ **[Star this repo](https://github.com/datadrivenconstruction/OpenConstructionERP)** — helps others discover the project\n- 💬 **[Join Discussions](https://t.me/datadrivenconstruction)** — ask questions, share ideas, help others\n- 🐛 **[Report issues](https://github.com/datadrivenconstruction/OpenConstructionERP/issues)** — help us improve\n- 💼 **[Professional consulting](https://datadrivenconstruction.io/contact-support/)** — custom deployment, training, enterprise support\n\n## Security\n\nOpenConstructionERP includes security hardening for production deployments:\n- Path traversal protection on all file download endpoints\n- CORS wildcard blocking in production mode\n- Bounded input validation on bulk price operations\n- Generic error responses to prevent account enumeration\n- Production startup checks for secrets, credentials, and database configuration\n\nReport vulnerabilities via [GitHub Issues](https://github.com/datadrivenconstruction/OpenConstructionERP/issues) (private reports supported).\n\n## Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines, code style, and PR process.\n\n## License\n\n**AGPL-3.0** — see [LICENSE](LICENSE).\n\nYou can freely use, modify, and distribute this software. If you modify and deploy it as a service, you must make your source code available under the same license.\n\nFor commercial licensing without AGPL obligations, contact [info@datadrivenconstruction.io](mailto:info@datadrivenconstruction.io).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Created by [Artem Boiko](https://www.linkedin.com/in/boikoartem/)** · [Data Driven Construction](https://datadrivenconstruction.io)\n\nBuilding open-source tools for the global construction industry.\n\n[Website](https://datadrivenconstruction.io) · [LinkedIn](https://www.linkedin.com/in/boikoartem/) · [YouTube](https://www.youtube.com/@datadrivenconstruction) · [GitHub](https://github.com/datadrivenconstruction)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadrivenconstruction%2Fopenconstructionerp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatadrivenconstruction%2Fopenconstructionerp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadrivenconstruction%2Fopenconstructionerp/lists"}