{"id":50999545,"url":"https://github.com/investblog/cftools-win","last_synced_at":"2026-06-20T13:02:31.081Z","repository":{"id":344590905,"uuid":"1177370066","full_name":"investblog/cftools-win","owner":"investblog","description":"Cloudflare Tools for Windows — fast, reliable bulk zone management. Add, purge cache, and delete domains at scale.","archived":false,"fork":false,"pushed_at":"2026-03-24T07:37:25.000Z","size":201,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-25T09:18:37.433Z","etag":null,"topics":["bulk-operations","cloudflare","csharp","dns","domains","dotnet","winui3"],"latest_commit_sha":null,"homepage":"https://301.st","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/investblog.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"custom":["https://301.st"]}},"created_at":"2026-03-10T00:51:57.000Z","updated_at":"2026-03-24T07:37:28.000Z","dependencies_parsed_at":"2026-03-16T01:11:13.460Z","dependency_job_id":null,"html_url":"https://github.com/investblog/cftools-win","commit_stats":null,"previous_names":["investblog/cftools-win"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/investblog/cftools-win","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/investblog%2Fcftools-win","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/investblog%2Fcftools-win/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/investblog%2Fcftools-win/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/investblog%2Fcftools-win/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/investblog","download_url":"https://codeload.github.com/investblog/cftools-win/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/investblog%2Fcftools-win/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34570539,"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-20T02:00:06.407Z","response_time":98,"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":["bulk-operations","cloudflare","csharp","dns","domains","dotnet","winui3"],"created_at":"2026-06-20T13:02:30.313Z","updated_at":"2026-06-20T13:02:31.066Z","avatar_url":"https://github.com/investblog.png","language":"C#","funding_links":["https://301.st"],"categories":[],"sub_categories":[],"readme":"# CFTools for Windows\n\n[![Microsoft Store](https://img.shields.io/badge/Microsoft_Store-download-blue?logo=microsoft)](https://apps.microsoft.com/detail/9pn4wf799808)\n[![Sponsor](https://img.shields.io/badge/sponsor-301.st-orange)](https://301.st)\n\nCFTools for Windows is a desktop app for fast, high-confidence Cloudflare zone work at scale. It brings the core workflows of the CFTools browser extension to a native Windows UI with a cleaner, safer bulk-operations experience.\n\n**Stack:** C# / .NET 8 / WinUI 3 (Windows App SDK 1.6)\n\n**[Get it from Microsoft Store](https://apps.microsoft.com/detail/9pn4wf799808)**\n\n## Highlights\n\n- **Bulk Add Domains** - paste raw exports, CSV, HTML, emails, URLs, or mixed text. The parser extracts root domains automatically, handles IDN and Punycode, flags duplicates and invalid items, and lets you remove individual domains before creation.\n- **Bulk Purge Cache** - load zones for the active account, filter quickly, select only what you need, and run a determinate batch with per-zone status.\n- **Bulk Delete Zones** - safer destructive workflow with account-aware confirmation, progress tracking, and automatic reload after deletion.\n- **Multi-account workflow** - sign in once, choose an active account, and switch accounts without re-entering credentials.\n- **Responsive Windows UI** - optimized for compact and full-width layouts, with light, dark, and system theme support.\n- **Resilient request pipeline** - concurrent API calls with retry handling, rate-limit awareness, and cancellation that keeps UI state consistent.\n\n## Why Global API Key?\n\nFor this app's bulk zone creation workflow, Global API Key is the most reliable option. API Tokens can hit an undocumented limit on some new accounts: you may only be able to add as many zones as already exist, which makes true bulk add impossible from zero.\n\nCredentials are stored locally in Windows Credential Manager and sent only to the Cloudflare API.\n\n## Getting Started\n\n### Prerequisites\n\n- Windows 10 (19041) or later\n- Visual Studio 2022 with .NET desktop and WinUI workloads\n\n### Build\n\nFrom the repo root:\n\n```powershell\ndotnet build CFTools.sln\n```\n\n### Test\n\n```powershell\ndotnet test CFTools.sln\n```\n\n### Optional formatting\n\nFormatting follows `.editorconfig` and repo style rules. If you use CSharpier locally:\n\n```powershell\ndotnet csharpier format src/ tests/\n```\n\n## Usage\n\n1. Open the app. It starts on the Authentication page.\n2. Enter your Cloudflare email and Global API Key.\n3. If multiple accounts are available, choose the active account for this session.\n4. Use Add Domains, Purge Cache, or Delete Domains. The active account stays visible throughout the app.\n5. Switch accounts whenever needed without re-entering credentials.\n\n## Architecture\n\n```text\nViews (XAML + code-behind)\n  -\u003e ViewModels (CommunityToolkit.Mvvm)\n     -\u003e Services\n        - CloudflareApi    : Cloudflare API v4 client\n        - RequestPool      : rate-aware concurrent work queue\n        - DomainParser     : domain extraction, cleanup, IDN support\n        - CredentialStore  : Windows Credential Manager integration\n```\n\nMVVM with source-generated partial properties. Batch workflows keep per-item status in memory and marshal UI updates through `DispatcherQueue`.\n\n## Project Structure\n\n```text\ncftools-win/\n|-- src/CFTools/          # WinUI 3 app\n|   |-- Views/            # XAML pages\n|   |-- ViewModels/       # MVVM view models\n|   |-- Services/         # API, pool, parser, credentials\n|   |-- Models/           # DTOs and shared models\n|   `-- Converters/       # XAML value converters\n|-- src/CFTools.Core/     # Pure .NET 8 library for testable core logic\n`-- tests/CFTools.Tests/  # xUnit tests\n```\n\n## Related\n\n- [CFTools for Edge](https://microsoftedge.microsoft.com/addons/detail/kklailenhhfnlhbmfaibeonjpdkcpklc) - browser extension\n- Author: [301.st](https://301.st)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvestblog%2Fcftools-win","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvestblog%2Fcftools-win","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvestblog%2Fcftools-win/lists"}