{"id":18070058,"url":"https://github.com/polatengin/washington","last_synced_at":"2026-04-24T22:34:08.665Z","repository":{"id":40996003,"uuid":"504682390","full_name":"polatengin/washington","owner":"polatengin","description":"Bicep Cost Estimator estimates monthly Azure costs from Bicep and ARM templates before you deploy.","archived":false,"fork":false,"pushed_at":"2026-04-17T20:22:19.000Z","size":2728,"stargazers_count":1,"open_issues_count":47,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-17T21:26:07.999Z","etag":null,"topics":["arm","azure","bicep","cost","estimate","estimation","estimator"],"latest_commit_sha":null,"homepage":"https://bicepcostestimator.net","language":"C#","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/polatengin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null,"dco":null,"cla":null}},"created_at":"2022-06-17T22:00:28.000Z","updated_at":"2026-04-17T20:22:23.000Z","dependencies_parsed_at":"2024-12-18T23:24:38.744Z","dependency_job_id":"e7e08b99-ba19-4622-8626-e86c7319335e","html_url":"https://github.com/polatengin/washington","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/polatengin/washington","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fwashington","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fwashington/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fwashington/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fwashington/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polatengin","download_url":"https://codeload.github.com/polatengin/washington/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polatengin%2Fwashington/sbom","scorecard":{"id":740023,"data":{"date":"2025-08-11","repo":{"name":"github.com/polatengin/washington","commit":"abef2588fc0fd46d36db5bea1cc175d738acb382"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/23 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 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":"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":"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":"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":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'packages' permission set to 'read': .github/workflows/codeql.yml:37","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:40","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:41","Warn: no topLevel permission defined: .github/workflows/codeql.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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/polatengin/washington/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/polatengin/washington/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/polatengin/washington/codeql.yml/main?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction 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":"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":"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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (7) 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":"15 existing vulnerabilities detected","details":["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-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","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-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"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-22T17:10:30.987Z","repository_id":40996003,"created_at":"2025-08-22T17:10:30.987Z","updated_at":"2025-08-22T17:10:30.987Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32243309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","azure","bicep","cost","estimate","estimation","estimator"],"created_at":"2024-10-31T08:24:00.337Z","updated_at":"2026-04-24T22:34:08.661Z","avatar_url":"https://github.com/polatengin.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bicep Cost Estimator\n\n[![CodeQL](https://github.com/polatengin/washington/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/polatengin/washington/actions/workflows/github-code-scanning/codeql)\n[![Deploy Website](https://github.com/polatengin/washington/actions/workflows/deploy-website.yml/badge.svg)](https://github.com/polatengin/washington/actions/workflows/deploy-website.yml)\n[![Release BCE CLI](https://github.com/polatengin/washington/actions/workflows/release-cli.yml/badge.svg)](https://github.com/polatengin/washington/actions/workflows/release-cli.yml)\n[![BCE CLI version](https://img.shields.io/github/v/release/polatengin/washington?display_name=tag\u0026label=bce%20cli)](https://github.com/polatengin/washington/releases/latest)\n\n`Bicep Cost Estimator` estimates monthly Azure costs from Bicep and ARM templates before you deploy. The published CLI command is `bce`.\n\nIt currently ships as:\n\n- a .NET CLI\n- a VS Code extension backed by the CLI in LSP mode\n- a GitHub Action for CI and pull request workflows\n- a Docusaurus documentation site with browser and plain-text routes\n\n## Quick Start\n\nInstall the published CLI:\n\n```bash\ncurl -sL https://bicepcostestimator.net/install.sh | bash\nbce estimate --file path/to/main.bicep\n```\n\nThe installer uses `~/.local/bin` on Linux, `/usr/local/bin` on Intel macOS, and `/opt/homebrew/bin` on Apple Silicon by default. Set `INSTALL_DIR` to override that choice. If the install directory is not on `PATH`, the installer prints the `export PATH=...` command to run.\n\nRun via Docker instead, without installing the CLI binary locally:\n\n```bash\nbce() {\n  docker run --rm \\\n    -v \"$PWD:/work\" \\\n    -w /work \\\n    --entrypoint /app/bin/bce \\\n    ghcr.io/polatengin/washington:latest \\\n    \"$@\"\n}\n```\n\nAdd that function to `~/.bashrc` or `~/.zshrc`, reload your shell, and then use `bce` like a normal command:\n\n```bash\nbce estimate --file ./main.bicep --output json\n```\n\nThe wrapper works by starting the published website container, overriding the default startup command so it runs `/app/bin/bce` instead of the docs server, mounting your current working directory at `/work` so relative `--file` and `--params-file` paths keep working, and mounting `~/.bicep-cost-estimator` so the pricing cache persists across runs. Docker is the only local dependency; the image is pulled automatically on first use.\n\nBuild from source instead:\n\n```bash\ngit clone https://github.com/polatengin/washington.git\ncd washington\nmake setup-cli\nmake build-cli\n./src/cli/bin/Release/net10.0/bce estimate --file ./tests/fixtures/simple-vm.bicep\n```\n\n## VS Code Extension\n\nInstall the published extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=EnginPolat.bce), or from the command line:\n\n```bash\ncode --install-extension enginpolat.bce\n```\n\nOpen a `.bicep` file after installation to get inline cost estimates, hover details, status bar totals, and workspace estimation commands. Full usage and settings are documented at [bicepcostestimator.net/vscode-extension](https://bicepcostestimator.net/vscode-extension).\n\n## What It Does\n\n- Compiles Bicep to ARM JSON through the Bicep CLI via the Azure.Bicep.RpcClient package\n- Extracts nested resources, copy loops, and conditionally skipped resources\n- Maps 87 Azure resource types to Azure Retail Prices API queries\n- Queries pricing with pagination, retry, and a local 24-hour file cache\n- Renders results as `table`, `json`, `csv`, or `markdown`\n\n## Documentation\n\n- [Introduction](https://bicepcostestimator.net/)\n- [Getting Started](https://bicepcostestimator.net/getting-started)\n- [CLI Commands](https://bicepcostestimator.net/cli/commands)\n- [VS Code Extension](https://bicepcostestimator.net/vscode-extension)\n- [GitHub Action](https://bicepcostestimator.net/github-action)\n- [How Estimates Work](https://bicepcostestimator.net/guides/how-estimates-work)\n- [Supported Resources](https://bicepcostestimator.net/guides/supported-resources)\n- [Troubleshooting](https://bicepcostestimator.net/guides/troubleshooting)\n\n## Current Limitations\n\n- Unsupported resource types are skipped with a warning.\n- Spot and low-priority prices are excluded from default estimates.\n\n## Development\n\nCommon local workflows:\n\n```bash\nmake setup-cli\nmake test-cli\n\nmake setup-extension\nmake build-extension\n\nmake setup-website\nmake build-website\nmake dev-website\n```\n\n`make setup-cli` restores the .NET dependencies needed for the CLI and tests. `bce` resolves the Bicep CLI at runtime through the `Azure.Bicep.RpcClient` nuget package.\n\n## Roadmap\n\nThe roadmap lives in [docs/70-roadmap.md](docs/70-roadmap.md) and on the documentation site at [bicepcostestimator.net/roadmap](https://bicepcostestimator.net/roadmap).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolatengin%2Fwashington","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolatengin%2Fwashington","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolatengin%2Fwashington/lists"}