{"id":49441522,"url":"https://github.com/imagodata/filter_mate","last_synced_at":"2026-04-29T20:17:00.694Z","repository":{"id":203793746,"uuid":"710425316","full_name":"imagodata/filter_mate","owner":"imagodata","description":"FilterMate is a Qgis plugin, an everyday companion that allows you to easily filter your vector layers","archived":false,"fork":false,"pushed_at":"2026-04-29T10:30:42.000Z","size":69774,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T12:18:39.098Z","etag":null,"topics":["data","exploratory-data-analysis","filter","geospatial","ogr","postgis","qgis","qgis-plugin","qgis3","qgis3-plugin","spatialite","sql","vector-database"],"latest_commit_sha":null,"homepage":"https://imagodata.github.io/filter_mate/","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/imagodata.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-26T17:01:01.000Z","updated_at":"2026-04-29T10:30:47.000Z","dependencies_parsed_at":"2025-12-29T21:07:31.069Z","dependency_job_id":null,"html_url":"https://github.com/imagodata/filter_mate","commit_stats":{"total_commits":131,"total_committers":1,"mean_commits":131.0,"dds":0.0,"last_synced_commit":"7c0185e666fac0e7e290cfea05989c3e1b4d6e31"},"previous_names":["sducournau/filter_mate","imagodata/filter_mate"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/imagodata/filter_mate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagodata%2Ffilter_mate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagodata%2Ffilter_mate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagodata%2Ffilter_mate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagodata%2Ffilter_mate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imagodata","download_url":"https://codeload.github.com/imagodata/filter_mate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imagodata%2Ffilter_mate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32441935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["data","exploratory-data-analysis","filter","geospatial","ogr","postgis","qgis","qgis-plugin","qgis3","qgis3-plugin","spatialite","sql","vector-database"],"created_at":"2026-04-29T20:17:00.018Z","updated_at":"2026-04-29T20:17:00.683Z","avatar_url":"https://github.com/imagodata.png","language":"Python","readme":"# ![FilterMate](https://github.com/imagodata/filter_mate/blob/main/icon.png?raw=true) FilterMate\n\n**Version 4.7.0** | QGIS Plugin | **Production-Ready** 🎉\n\n\u003e 🚀 Explore, filter \u0026 export vector data with lightning-fast performance on ANY data source.\n\n[![Tests](https://github.com/imagodata/filter_mate/actions/workflows/test.yml/badge.svg)](https://github.com/imagodata/filter_mate/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-website-blue)](https://imagodata.github.io/filter_mate)\n[![QGIS Plugin](https://img.shields.io/badge/QGIS-Plugin-green)](https://plugins.qgis.org/plugins/filter_mate)\n[![GitHub](https://img.shields.io/badge/GitHub-repo-black)](https://github.com/imagodata/filter_mate)\n[![Issues](https://img.shields.io/badge/issues-report-red)](https://github.com/imagodata/filter_mate/issues)\n\n---\n\n## ✨ Features\n\n| Feature | Description |\n|---------|-------------|\n| 🔍 **Smart Search** | Intuitive entity search across all layer types |\n| 📐 **Geometric Filtering** | Spatial predicates with buffer support |\n| ⭐ **Filter Favorites** | Save and reuse filter configurations |\n| 🤝 **Favorites Sharing** | Publish favorites to git repos with QGIS authcfg credentials |\n| 🌐 **REST API** | Drive FilterMate from external tools (X-API-Key auth) |\n| 📝 **Undo/Redo** | Complete filter history |\n| 🌍 **34 Languages** | Full internationalization |\n| 🎨 **Dark Mode** | Automatic theme detection |\n| 📦 **GPKG Project Export** | Embedded QGIS project with group hierarchy, styles \u0026 CRS |\n| 🚀 **Multi-Backend** | PostgreSQL, Spatialite, OGR |\n\n### 🆕 What's new in 4.7.0\n\n- **Favorites Sharing**: git-backed publish to remote repos, repo manager dialog, 1-click *Quick publish*, optional Resource Sharing extension, JSON Schema v3, per-user scope.\n- **REST API**: `GET /layers`, `POST /filters/apply`, `/filters/status`, `/undo`, `/redo`, `/favorites` — protected by `X-API-Key` middleware.\n- **Performance**: streaming feature IDs, cached parsed expressions, single buffer-distance fetch.\n- **Hardening**: path-traversal + argv-injection guards, git stderr scrubbing, sanitizer at `setSubsetString` chokepoint, single `HistoryService`, `QgsDataSourceUri`-based PostgreSQL table parsing.\n- **UX/UI**: HIDPI profile + QSS cascade cleanup, harmonized groupbox display modes, favorites scope filter combo + list badges, full 34-locale coverage for new features.\n\n---\n\n## 📦 Installation\n\n### From QGIS Plugin Repository (Recommended)\n\n1. QGIS → `Plugins` → `Manage and Install Plugins`\n2. Search \"FilterMate\" → `Install Plugin`\n\n### Manual Installation\n\nDownload from [GitHub Releases](https://github.com/imagodata/filter_mate/releases) and extract to:\n\n| OS | Path |\n|---|---|\n| **Windows** | `%APPDATA%\\QGIS\\QGIS3\\profiles\\default\\python\\plugins\\` |\n| **Linux** | `~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/` |\n| **macOS** | `~/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/` |\n\n### Optional: PostgreSQL Support\n\n```bash\npip install psycopg2-binary\n```\n\n---\n\n## 🎬 Video Tutorials\n\n| Tutorial | Link |\n|----------|------|\n| 📺 Complete Overview | [Watch](https://www.youtube.com/watch?v=2gOEPrdl2Bo) |\n| 🔍 Dataset Exploration | [Watch](https://youtu.be/YwEalDjgEdY) |\n| 🛣️ Road Network Filtering | [Watch](https://youtu.be/svElL8cDpWE) |\n| 📦 GeoPackage Export | [Watch](https://youtu.be/gPLi2OudKcI) |\n| 📐 Negative Buffer | [Watch](https://youtu.be/9rZb-9A-tko) |\n\n---\n\n## ⚡ Backend Performance\n\n| Backend | 10k | 100k | 1M Features |\n|---------|:---:|:----:|:-----------:|\n| 🟢 PostgreSQL | \u003c1s | \u003c2s | ~10s |\n| 🔵 Spatialite | \u003c2s | ~10s | ~60s |\n| 🟠 OGR | ~5s | ~30s | \u003e120s |\n\n**Tip**: Install `psycopg2-binary` for optimal performance with large datasets.\n\n---\n\n## 📋 Requirements\n\n- **QGIS**: 3.0+\n- **Python**: 3.7+ (included with QGIS)\n- **Optional**: psycopg2 for PostgreSQL backend\n\n---\n\n## 📚 Documentation\n\n- **Users**: [Documentation Website](https://imagodata.github.io/filter_mate)\n- **Developers**: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)\n- **Changelog**: [CHANGELOG.md](CHANGELOG.md)\n\n---\n\n## 🤝 Contributing\n\nSee [Contributing Guidelines](.github/copilot-instructions.md)\n\n---\n\n## 📄 License\n\nGNU General Public License v3.0 - See [LICENSE](LICENSE)\n\n---\n\n**Developed by**: imagodata | **Contact**: simon.ducournau+filter_mate@gmail.com\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagodata%2Ffilter_mate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimagodata%2Ffilter_mate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimagodata%2Ffilter_mate/lists"}