{"id":15178873,"url":"https://github.com/pgollangi/firestore-grafana-datasource","last_synced_at":"2025-10-26T17:31:27.191Z","repository":{"id":65045501,"uuid":"581186624","full_name":"pgollangi/firestore-grafana-datasource","owner":"pgollangi","description":"Google Firestore data source plugin for Grafana","archived":false,"fork":false,"pushed_at":"2024-05-06T09:00:13.000Z","size":2413,"stargazers_count":11,"open_issues_count":8,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-31T21:52:50.157Z","etag":null,"topics":["firestore","firestore-database","gcp-firestore","google-firestore","grafana","grafana-datasource","grafana-plugin"],"latest_commit_sha":null,"homepage":"https://grafana.com/grafana/plugins/pgollangi-firestore-datasource/","language":"Go","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/pgollangi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2022-12-22T13:59:02.000Z","updated_at":"2024-07-29T15:24:40.000Z","dependencies_parsed_at":"2024-09-27T15:41:05.936Z","dependency_job_id":"81ed9bc2-6b3f-49d5-856a-d5e1466f506c","html_url":"https://github.com/pgollangi/firestore-grafana-datasource","commit_stats":{"total_commits":47,"total_committers":1,"mean_commits":47.0,"dds":0.0,"last_synced_commit":"c782f469fbe34d5da086d6c596a56f41f31bd263"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgollangi%2Ffirestore-grafana-datasource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgollangi%2Ffirestore-grafana-datasource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgollangi%2Ffirestore-grafana-datasource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgollangi%2Ffirestore-grafana-datasource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pgollangi","download_url":"https://codeload.github.com/pgollangi/firestore-grafana-datasource/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238375217,"owners_count":19461569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["firestore","firestore-database","gcp-firestore","google-firestore","grafana","grafana-datasource","grafana-plugin"],"created_at":"2024-09-27T15:40:57.313Z","updated_at":"2025-10-26T17:31:21.825Z","avatar_url":"https://github.com/pgollangi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/pgollangi/firestore-grafana-datasource/actions/workflows/ci.yml/badge.svg)](https://github.com/pgollangi/firestore-grafana-datasource/actions/workflows/ci.yml)\n[![Release](https://github.com/pgollangi/firestore-grafana-datasource/actions/workflows/release.yml/badge.svg)](https://github.com/pgollangi/firestore-grafana-datasource/actions/workflows/release.yml)\n# firestore-grafana-datasource\n\n[Google Firestore](https://cloud.google.com/firestore) Data Source Plugin for [Grafana](https://grafana.com/).\n\nGrafana Firestore Data Source Plugin enables integrating data on Firestore into Grafana dashboards.\n\nIt uses [FireQL](https://github.com/pgollangi/FireQL) to capture user query that translated to issue queries on Firestore and construct results.\n\n\u003e [FireQL](https://github.com/pgollangi/FireQL) is a Go library to query Google Firestore database using SQL syntax.\n\n\n\n![](assets/firestore-grafana-datasource.svg)\n\n## Features\n- [x] Use Google Firestore as a data source for Grafana dashboards\n- [x] Configure Firestore data source with GCP `Project Id` and [`Service Account`](https://cloud.google.com/firestore/docs/security/iam) for authentication\n- [x] Store `Service Account` data source configuration in Grafana encrypted storage [Secure JSON Data](https://grafana.com/docs/grafana/latest/developers/plugins/create-a-grafana-plugin/extend-a-plugin/add-authentication-for-data-source-plugins/#encrypt-data-source-configuration)\n- [x] Query Firestore [collections](https://firebase.google.com/docs/firestore/data-model#collections) and path to collections\n- [x] Auto detect data types: `string`, `number`, `boolean`, `json`, `time.Time`\n- [x] Query selected fields from the collection\n- [x] Order query results\n- [x] Limit query results\n- [x] Query [Collection Groups](https://firebase.blog/posts/2019/06/understanding-collection-group-queries)\n- [ ] Count query results\n- [ ] Use of [Grafafa global variables](https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#global-variables) in queries.\n\n### Firestore data source configuration\n\n![](src/screenshots/firestore-datasource-configuration.png)\n\n### Using datasource \n![](src/screenshots/query-with-firestore-datasource.png)\n\n## Getting started\n\n### Frontend\n\n1. Install dependencies\n\n   ```bash\n   yarn install\n   ```\n\n2. Build plugin in development mode or run in watch mode\n\n   ```bash\n   yarn dev\n\n   # or\n\n   yarn watch\n   ```\n\n3. Build plugin in production mode\n\n   ```bash\n   yarn build\n   ```\n\n4. Run the tests (using Jest)\n\n   ```bash\n   # Runs the tests and watches for changes\n   yarn test\n   \n   # Exists after running all the tests\n   yarn lint:ci\n   ```\n\n5. Spin up a Grafana instance and run the plugin inside it (using Docker)\n\n   ```bash\n   yarn server\n   ```\n\n6. Run the E2E tests (using Cypress)\n\n   ```bash\n   # Spin up a Grafana instance first that we tests against \n   yarn server\n   \n   # Start the tests\n   yarn e2e\n   ```\n\n7. Run the linter\n\n   ```bash\n   yarn lint\n   \n   # or\n\n   yarn lint:fix\n   ```\n\n### Backend\n\n1. Update [Grafana plugin SDK for Go](https://grafana.com/docs/grafana/latest/developers/plugins/backend/grafana-plugin-sdk-for-go/) dependency to the latest minor version:\n\n   ```bash\n   go get -u github.com/grafana/grafana-plugin-sdk-go\n   go mod tidy\n   ```\n\n2. Build backend plugin binaries for Linux, Windows and Darwin:\n\n   ```bash\n   mage -v\n   ```\n\n3. List all available Mage targets for additional commands:\n\n   ```bash\n   mage -l\n   ```\n\n#### Push a version tag\n\nTo trigger the workflow we need to push a version tag to github. This can be achieved with the following steps:\n\n1. Run `npm version \u003cmajor|minor|patch\u003e`\n2. Run `git push origin main --follow-tags`\n\n\n## Contributing\nThanks for considering contributing to this project!\n\nPlease read the [Contributions](CONTRIBUTING.md) and [Code of conduct](CODE_OF_CONDUCT.md). \n\nFeel free to open an issue or submit a pull request!\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgollangi%2Ffirestore-grafana-datasource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpgollangi%2Ffirestore-grafana-datasource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgollangi%2Ffirestore-grafana-datasource/lists"}