{"id":27751213,"url":"https://github.com/ravikiranvm/aws-finops-dashboard","last_synced_at":"2026-03-17T20:13:50.759Z","repository":{"id":286402039,"uuid":"960951518","full_name":"ravikiranvm/aws-finops-dashboard","owner":"ravikiranvm","description":"A terminal-based AWS cost and resource dashboard built with Python and the Rich library. It provides an overview of AWS spend by account, service-level breakdowns, budget tracking, and EC2 instance summaries.","archived":false,"fork":false,"pushed_at":"2026-01-02T10:59:13.000Z","size":6117,"stargazers_count":1053,"open_issues_count":4,"forks_count":253,"subscribers_count":17,"default_branch":"main","last_synced_at":"2026-01-02T13:58:49.757Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/ravikiranvm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit-report.jpg","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":"2025-04-05T12:32:16.000Z","updated_at":"2026-01-02T13:52:04.000Z","dependencies_parsed_at":"2025-11-30T09:02:54.089Z","dependency_job_id":null,"html_url":"https://github.com/ravikiranvm/aws-finops-dashboard","commit_stats":null,"previous_names":["ravikiranvm/aws-finops-dashboard"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/ravikiranvm/aws-finops-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravikiranvm%2Faws-finops-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravikiranvm%2Faws-finops-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravikiranvm%2Faws-finops-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravikiranvm%2Faws-finops-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ravikiranvm","download_url":"https://codeload.github.com/ravikiranvm/aws-finops-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravikiranvm%2Faws-finops-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30630317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"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":[],"created_at":"2025-04-29T02:02:24.759Z","updated_at":"2026-03-17T20:13:50.746Z","avatar_url":"https://github.com/ravikiranvm.png","language":"Python","funding_links":[],"categories":["others","Python"],"sub_categories":[],"readme":"# AWS FinOps Dashboard (CLI) v2.3.0\n\n[![PyPI version](https://img.shields.io/pypi/v/aws-finops-dashboard.svg)](https://pypi.org/project/aws-finops-dashboard/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub stars](https://img.shields.io/github/stars/ravikiranvm/aws-finops-dashboard.svg)](https://github.com/ravikiranvm/aws-finops-dashboard/stargazers)\n[![Downloads](https://static.pepy.tech/badge/aws-finops-dashboard)](https://pepy.tech/project/aws-finops-dashboard)\n\nThe AWS FinOps Dashboard is an open-source, Python-based command-line tool (built with the Rich library) for AWS cost monitoring. It provides multi-account cost summaries by time period, service, and cost allocation tags; budget limits vs. actuals; EC2 instance status; six‑month cost trend charts; and “FinOps audit” reports (e.g. untagged or idle resources). It can export data to CSV/JSON/PDF.\n\n## Why AWS FinOps Dashboard?\n\nManaging and understanding your AWS expenditure, especially across multiple accounts and services, can be complex. The AWS FinOps Dashboard CLI aims to simplify this by providing a clear, concise, and actionable view of your AWS costs and operational hygiene directly in your terminal.\n\nKey features include:\n*   **Unified View:** Consolidate cost and resource data from multiple AWS accounts.\n![alt text](aws-finops-dashboard-v2.2.3.png)\n* **Cost Trend Analysis:** View how your AWS costs have been for the past six months.\n![alt text](aws-finops-dashboard_trend.png)\n*   **Audit Your AWS Accounts:** Quickly identify spending patterns, untagged resources, underutilised resources and potential savings.\n![alt text](audit_report.png)\n*   **Generate Cost \u0026 Audit Reports:** You can generate Cost, Trend and Audit Reports in PDF, CSV \u0026 JSON formats for further analysis and reporting purposes.\n![alt text](cost-report.jpg)\n![alt text](audit-report.jpg)\n* **Slack Integration:** You can send your cost and audit reports to your Slack workspace in CSV/PDF/JSON formats.\n![alt text](slack-export.png)\n\n## Quick Start\n\nGet up and running in under a minute:\n\n```bash\n# Install\npipx install aws-finops-dashboard\n\n# View cost dashboard for your default AWS profile\naws-finops --region us-east-1\n\n# View cost dashboard for specific profiles\naws-finops --profiles dev prod --region us-east-1\n\n# View cost trends for the last 6 months\naws-finops --trend\n\n# Run a FinOps audit\naws-finops --audit --region us-east-1\n\n# Export to PDF\naws-finops --report-name my_report --report-type pdf\n```\n\n---\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [AWS CLI Profile Setup](#aws-cli-profile-setup)\n- [Command Line Usage](#command-line-usage)\n  - [Options](#command-line-options)\n  - [Examples](#examples)\n- [Using a Configuration File](#using-a-configuration-file)\n  - [TOML Configuration Example (`config.toml`)](#toml-configuration-example-configtoml)\n  - [YAML Configuration Example (`config.yaml` or `config.yml`)](#yaml-configuration-example-configyaml-or-configyml)\n  - [JSON Configuration Example (`config.json`)](#json-configuration-example-configjson)\n- [Export Formats](#export-formats)\n- [Cost For Every Run](#cost-for-every-run)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Features\n\n- **Cost Analysis by Time Period**: \n  - View current \u0026 previous month's spend by default\n  - Set custom time ranges (e.g., 7, 30, 90 days) with `--time-range` option\n  - Use `--time-range last-month` to query the previous calendar month (includes service breakdown for that month)\n- **Cost by AWS Service**: Sorted by highest cost for better insights\n- **Cost by Tag**: Get the cost data by one or more tags with `--tag`(cost allocation tags must be enabled)\n- **AWS Budgets Information**: Displays budget limits and actual spend\n- **EC2 Instance Status**: Detailed state information across specified/accessible regions\n- **Cost Trend Analysis**: View detailed cost trends in bar charts for the last 6 months across AWS profiles\n- **FinOps Audit**: View untagged resources, unused or stopped resources, and Budget breaches across AWS profiles. \n- **Profile Management**:\n  - Automatic profile detection\n  - Specific profile selection with `--profiles`\n  - Use all available profiles with `--all`\n  - Combine profiles from the same AWS account with `--combine`\n- **Region Control**: Specify regions for EC2 discovery using `--regions`\n- **Export Options**:\n  - CSV export with `--report-name` and `--report-type csv`\n  - JSON export with `--report-name` and `--report-type json`\n  - PDF export with `--report-name` and `--report-type pdf`\n  - Export to multiple formats with `--report-name` and `--report-type csv json pdf`\n  - Specify output directory using `--dir`\n  - Export to S3 with `--s3-bucket` and `--s3-profile`\n  - Export to Slack channel with `--slack` (requires `SLACK_BOT_TOKEN` environment variable)\n  - **Note**: Trend reports (generated via `--trend`) currently only support JSON export. Other formats specified in `--report-type` will be ignored for trend reports.\n- **Improved Error Handling**: Resilient and user-friendly error messages\n- **Beautiful Terminal UI**: Styled with the Rich library for a visually appealing experience\n\n---\n\n## Prerequisites\n\n- **Python 3.8 or later**: Ensure you have the required Python version installed\n- **AWS CLI configured with named profiles**: Set up your AWS CLI profiles for seamless integration\n- **AWS credentials with permissions**:\n  - `ce:GetCostAndUsage`\n  - `budgets:ViewBudget`\n  - `ec2:DescribeInstances`\n  - `ec2:DescribeRegions`\n  - `sts:GetCallerIdentity`\n  - `ec2:DescribeVolumes`\n  - `ec2:DescribeAddresses`\n  - `rds:DescribeDBInstances`\n  - `rds:ListTagsForResource`\n  - `lambda:ListFunctions`\n  - `lambda:ListTags`\n  - `elbv2:DescribeLoadBalancers`\n  - `elbv2:DescribeTags`\n  - `s3:PutObject` (required when using `--s3-bucket` to export reports to S3)\n  - `s3:ListBucket` (required when using `--s3-bucket` to export reports to S3)\n  \n---\n\n## Installation\n\nThere are several ways to install the AWS FinOps Dashboard:\n\n### Option 1: Using pipx (Recommended)\n```bash\npipx install aws-finops-dashboard\n```\n\nIf you don't have `pipx`, install it with:\n\n```bash\npython -m pip install --user pipx\npython -m pipx ensurepath\n```\n\n### Option 2: Using pip\n```bash\npip install aws-finops-dashboard\n```\n\n### Option 3: Using uv (Fast Python Package Installer)\n[uv](https://github.com/astral-sh/uv) is a modern Python package installer and resolver that's extremely fast.\n\n```bash\n# Install uv if you don't have it yet\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Create project directory\nmkdir aws-finops-dashboard \u0026\u0026 cd aws-finops-dashboard\n\n# Create and activate python virtual environment\nuv venv \u0026\u0026 source .venv/bin/activate\n\n# Install aws-finops-dashboard\nuv pip install aws-finops-dashboard\n```\n\n### Option 4: From Source\n```bash\n# Clone the repository\ngit clone https://github.com/ravikiranvm/aws-finops-dashboard.git\ncd aws-finops-dashboard\n\n# Create and activate python virtual environment\npython -m venv .venv \u0026\u0026 source .venv/bin/activate\n\n# Install using pip\npip install -e .\n```\n\n### Option 5: Using Docker\n```bash\ngit clone https://github.com/ravikiranvm/aws-finops-dashboard.git\ncd aws-finops-dashboard\ndocker compose build\n\n# Run commands\ndocker compose run --rm aws-finops --all\ndocker compose run --rm aws-finops --profiles dev prod --regions us-east-1\ndocker compose run --rm aws-finops --audit\n```\n\n**Note:** AWS credentials are mounted from `~/.aws` automatically via docker-compose.yml.\n\n---\n\n## AWS CLI Profile Setup\n\nIf you haven't already, configure your named profiles using the AWS CLI:\n\n```bash\naws configure --profile profile1-name\naws configure --profile profile2-name\n# ... etc ...\n```\n\nRepeat this for all the profiles you want the dashboard to potentially access.\n\n---\n\n## Slack Setup (Optional)\n\nTo send reports to Slack, you need to:\n\n1. **Create a Slack App and Bot Token:**\n   - Go to https://api.slack.com/apps\n   - Create a new app or select an existing one\n   - Navigate to \"OAuth \u0026 Permissions\"\n   - Add Bot Token Scopes:\n     - `files:write` (to upload files)\n     - `chat:write` (to send messages)\n   - Install the app to your workspace\n   - Copy the \"Bot User OAuth Token\" (starts with `xoxb-`)\n\n2. **Set the Environment Variable:**\n   ```bash\n   export SLACK_BOT_TOKEN=xoxb-your-token-here\n   ```\n\n3. **Use the `--slack` flag with a channel identifier:**\n   - Channel ID: `--slack C1234567890`\n\n**Note:** \n   - The token must be set as an environment variable (`SLACK_BOT_TOKEN`). It cannot be provided via config file or CLI flag for security reasons.\n   - Your app's bot user needs to be in the channel (otherwise, you will get either not_in_channel or channel_not_found error code).\n\n---\n\n## Command Line Usage\n\nRun the script using `aws-finops` followed by options:\n\n```bash\naws-finops [options]\n```\n\n### Command Line Options\n\n| Flag | Description |\n|---|---|\n| `--config-file`, `-C` | Path to a TOML, YAML, or JSON configuration file. Command-line arguments will override settings from the config file. |\n| `--profiles`, `-p` | Specific AWS profiles to use (space-separated). If omitted, uses 'default' profile if available, otherwise all profiles. |\n| `--regions`, `-r` | Specific AWS regions to check for EC2 instances (space-separated). If omitted, attempts to check all accessible regions. |\n| `--all`, `-a` | Use all available AWS profiles found in your config. |\n| `--combine`, `-c` | Combine profiles from the same AWS account into single rows. |\n| `--tag`, `-g` | Filter cost data by one or more cost allocation tags in `Key=Value` format. Example: `--tag Team=DevOps Env=Prod` |\n| `--report-name`, `-n` | Specify the base name for the report file (without extension). |\n| `--report-type`, `-y` | Specify report types (space-separated): 'csv', 'json', 'pdf'. All formats are supported for both cost dashboard and audit reports. For trend reports, only 'json' is supported. |\n| `--dir`, `-d` | Directory to save the report file(s) (default: current directory). |\n| `--time-range`, `-t` | Time range for cost data in days (default: current month). Examples: 7, 30, 90. Use `last-month` to query the previous calendar month. |\n| `--trend` | View cost trend analysis for the last 6 months. |\n| `--audit` | View list of untagged, unused resources and budget breaches. |\n| `--s3-bucket`, `-s3` | S3 bucket name to export report files to. When specified, files are uploaded to S3 instead of saving locally. Requires `--s3-profile`. |\n| `--s3-prefix`, `-s3p` | S3 key prefix/folder path for report files (optional). Example: `reports/2025/january` |\n| `--s3-profile`, `-s3s` | AWS CLI profile to use for S3 uploads. Required when `--s3-bucket` is specified. |\n| `--slack` | Send reports to Slack channel. Provide channel identifier: `--slack C1234567890`. Requires `SLACK_BOT_TOKEN` environment variable. |\n\n### Examples\n\n```bash\n# Use default profile, show output in terminal only\naws-finops\n\n# Use specific profiles 'dev' and 'prod'\naws-finops --profiles dev prod\n\n# Use all available profiles\naws-finops --all\n\n# Combine profiles from the same AWS account\naws-finops --all --combine\n\n# Specify custom regions to check for EC2 instances\naws-finops --regions us-east-1 eu-west-1 ap-southeast-2\n\n# View cost data for the last 30 days instead of current month\naws-finops --time-range 30\n\n# View cost data only for a specific tag (e.g., Team=DevOps)\naws-finops --tag Team=DevOps\n\n# View cost data for multiple tags (e.g., Team=DevOps and Env=Prod)\naws-finops --tag Team=Devops Env=Prod\n\n# Export data to CSV only\naws-finops --all --report-name aws_dashboard_data --report-type csv\n\n# Export data to JSON only\naws-finops --all --report-name aws_dashboard_data --report-type json\n\n# Export data to both CSV and JSON formats simultaneously\naws-finops --all --report-name aws_dashboard_data --report-type csv json\n\n# Export combined data for 'dev' and 'prod' profiles to a specific directory\naws-finops --profiles dev prod --combine --report-name report --report-type csv --dir output_reports\n\n# Export data to CSV format and upload to S3 bucket\naws-finops --all --report-name aws_dashboard_data --report-type csv --s3-bucket my-finops-reports --s3-profile prod\n\n# Export data to PDF and send to Slack channel (requires SLACK_BOT_TOKEN env var)\nexport SLACK_BOT_TOKEN=xoxb-your-token-here\naws-finops --all --report-name monthly_report --report-type pdf --slack channel-id\n\n# Export multiple formats to Slack\naws-finops --all --report-name monthly_report --report-type csv json pdf --slack channel-id\n\n# View cost trend analysis as bar charts for profile 'dev' and 'prod'\naws-finops --profiles dev prod -r us-east-1 --trend\n\n# View cost trend analysis for all cli profiles for a specific cost tag 'Team=DevOps'\naws-finops --all --trend --tag Team=DevOps\n\n# View audit report for profile 'dev' in region 'us-east-1'\naws-finops -p dev -r us-east-1 --audit\n\n# View audit report for profile 'dev' in region 'us-east-1' and export it as a pdf file to current working dir with file name 'Dev_Audit_Report'\naws-finops -p dev -r us-east-1 --audit -n Dev_Audit_Report -y pdf\n\n# Use a configuration file for settings\naws-finops --config-file path/to/your_config.toml\n# or\naws-finops -C path/to/your_config.yaml\n```\n\nYou'll see a live-updating table of your AWS account cost and usage details in the terminal. If export options are specified, a report file will also be generated upon completion.\n\n---\n\n## Using a Configuration File\n\nInstead of passing all options via the command line, you can use a configuration file in TOML, YAML, or JSON format. Use the `--config-file` or `-C` option to specify the path to your configuration file.\n\nCommand-line arguments will always take precedence over settings defined in the configuration file.\n\nBelow are examples of how to structure your configuration file.\n\n### TOML Configuration Example (`config.toml`)\n\n```toml\n# config.toml\nprofiles = [\"dev-profile\", \"prod-profile\"]\nregions = [\"us-east-1\", \"eu-west-2\"]\ncombine = true\nreport_name = \"monthly_finops_summary\"\nreport_type = [\"csv\", \"pdf\"] # Supports csv, json, pdf for cost dashboard and audit reports\ndir = \"./reports/aws-finops\" # Defaults to present working directory\ntime_range = 30 # Number of days (e.g., 7, 30, 90) or \"last-month\" for previous calendar month\ntag = [\"CostCenter=Alpha\", \"Project=Phoenix\"] # Optional\naudit = false # Set to true to run audit report by default\ntrend = false # Set to true to run trend report by default\ns3_bucket = \"my-finops-reports-bucket\" # Optional: S3 bucket for report uploads\ns3_prefix = \"reports/2025\" # Optional: S3 key prefix/folder path\ns3_profile = \"prod\" # Required when s3_bucket is specified: AWS profile for S3 uploads\nslack = \"C1234567890\" # Optional: Slack channel ID to send reports to. Requires SLACK_BOT_TOKEN environment variable.\n```\n\n### YAML Configuration Example (`config.yaml` or `config.yml`)\n\n```yaml\n# config.yaml\nprofiles:\n  - dev-profile\n  - prod-profile\nregions:\n  - us-east-1\n  - eu-west-2\ncombine: true\nreport_name: \"monthly_finops_summary\"\nreport_type:\n  - csv\n  - pdf # Supports csv, json, pdf for cost dashboard and audit reports\ndir: \"./reports/aws-finops\"\ntime_range: 30 # Number of days (e.g., 7, 30, 90) or \"last-month\" for previous calendar month\ntag:\n  - \"CostCenter=Alpha\"\n  - \"Project=Phoenix\"\naudit: false # Set to true to run audit report by default\ntrend: false # Set to true to run trend report by default\ns3_bucket: \"my-finops-reports-bucket\" # Optional: S3 bucket for report uploads\ns3_prefix: \"reports/2025\" # Optional: S3 key prefix/folder path\ns3_profile: \"prod\" # Required when s3_bucket is specified: AWS profile for S3 uploads\nslack: \"C1234567890\" # Optional: Slack channel ID to send reports to. Requires SLACK_BOT_TOKEN environment variable.\n```\n\n### JSON Configuration Example (`config.json`)\n\n```json\n{\n  \"profiles\": [\"dev-profile\", \"prod-profile\"],\n  \"regions\": [\"us-east-1\", \"eu-west-2\"],\n  \"combine\": true,\n  \"report_name\": \"monthly_finops_summary\",\n  \"report_type\": [\"csv\", \"pdf\"], /* Supports csv, json, pdf for cost dashboard and audit reports */\n  \"dir\": \"./reports/aws-finops\",\n  \"time_range\": 30, /* Number of days (e.g., 7, 30, 90) or \"last-month\" for previous calendar month */\n  \"tag\": [\"CostCenter=Alpha\", \"Project=Phoenix\"],\n  \"audit\": false, /* Set to true to run audit report by default */\n  \"trend\": false, /* Set to true to run trend report by default */\n  \"s3_bucket\": \"my-finops-reports-bucket\", /* Optional: S3 bucket for report uploads */\n  \"s3_prefix\": \"reports/2025\", /* Optional: S3 key prefix/folder path */\n  \"s3_profile\": \"prod\", /* Required when s3_bucket is specified: AWS profile for S3 uploads */\n  \"slack\": \"C1234567890\" /* Optional: Slack channel ID to send reports to. Requires SLACK_BOT_TOKEN environment variable. */\n}\n```\n---\n\n## Export Formats\n\n### CSV Output Format\n\nWhen exporting to CSV, a file is generated with the following columns:\n\n- `CLI Profile`\n- `AWS Account ID`\n- `Last Month Cost` (or previous period based on time range)\n- `Current Month Cost` (or current period based on time range)\n- `Previous Period Cost By Service` (Each service and its cost appears on a new line within the cell)\n- `Current Period Cost By Service` (Each service and its cost appears on a new line within the cell)\n- `Budget Status` (Each budget's limit and actual spend appears on a new line within the cell)\n- `EC2 Instances` (Each instance state and its count appears on a new line within the cell)\n\n**Note:** Due to the multi-line formatting in some cells, it's best viewed in spreadsheet software (like Excel, Google Sheets, LibreOffice Calc) rather than plain text editors.\n\n### JSON Output Format\n\nWhen exporting to JSON, a structured file is generated that includes all dashboard data in a format that's easy to parse programmatically.\n\n### PDF Output Format\n\nPDF export is supported for both cost dashboard and audit reports.\n\n**Cost Dashboard PDF** includes:\n- Profile and Account ID\n- Previous and Current Period Costs\n- Cost breakdown by service\n- Budget Status\n- EC2 Instance Summary\n\n**Audit Report PDF** includes:\n- Profile and Account ID\n- Untagged Resources\n- Stopped EC2 Instances\n- Unused Volumes\n- Unused EIPs\n- Budget Alerts\n\n---\n\n## Cost For Every Run\n\nThis script makes API calls to AWS, primarily to Cost Explorer, Budgets, EC2, and STS. AWS may charge for Cost Explorer API calls (typically `$0.01` for each API call, check current pricing).\n\nThe number of API calls depends heavily on the options used:\n\n- **Default dashboard when `--audit` or `--trend` flags not used**: \n  - It costs you $0.06 for one AWS Profile and $0.03 extra for each AWS profile queried.\n- **Cost Trend dashboard when `--trend` flag is used**:\n  - It costs you $0.03 for each AWS profile queried.\n- **Audit Dashboard when `--audit` flag is used**:\n  - Free\n\n**To minimize API calls and potential costs:**\n\n- Use the `--profiles` argument to specify only the profiles you need.\n- Consider using the `--combine` option when working with multiple profiles from the same AWS account.\n\nThe exact cost per run is usually negligible but depends on the scale of your usage and AWS pricing.\n\n---\n\n## Contributing\n\nContributions are welcome! Feel free to fork and improve the project.\n\n### Development Setup with pip\n\n```bash\n# Fork this repository on GitHub first:\n# https://github.com/ravikiranvm/aws-finops-dashboard\n\n# Then clone your fork locally\ngit clone https://github.com/your-username/aws-finops-dashboard.git\ncd aws-finops-dashboard\n\n# Create and activate a virtual environment\npython -m venv venv\nsource venv/bin/activate  # On Windows use `venv\\Scripts\\activate`\n\n# Install dependencies\npip install -r requirements.txt\npip install -e \".[dev]\"\n\n# Run the formatter\nhatch run fmt\n\n# Run linters\nhatch run lint\n\n# Run the tool\npython -m aws_finops_dashboard.cli --help\n```\n\n### Development Setup with uv\n\n`uv` provides a much faster development environment setup:\n\n```bash\n# Fork this repository on GitHub first:\n# https://github.com/ravikiranvm/aws-finops-dashboard\n\n# Then clone your fork locally\ngit clone https://github.com/your-username/aws-finops-dashboard.git\ncd aws-finops-dashboard\n\n# Install uv if you don't have it yet\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Create and sync the virtual environment (.venv)\nuv venv\nuv pip install -e \".[dev]\"\n\n# Activate the virtual environment\nsource .venv/bin/activate  # On Windows use `.venv\\Scripts\\activate`\n\n# Run the formatter\nuv run hatch run fmt\n\n# Run linters\nuv run hatch run lint\n\n# Run the tool\naws-finops\n```\n\n---\n\n## Acknowledgments\n\nSpecial thanks to [cschnidr](https://github.com/cschnidr) \u0026 [MKAbuMattar](https://github.com/MKAbuMattar) for their valuable contributions to significantly improve this project!\n\n---\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=ravikiranvm/aws-finops-dashboard\u0026type=Date)](https://star-history.com/#ravikiranvm/aws-finops-dashboard\u0026Date)\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravikiranvm%2Faws-finops-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fravikiranvm%2Faws-finops-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravikiranvm%2Faws-finops-dashboard/lists"}