{"id":19596854,"url":"https://github.com/cdiggins/ptarmigan","last_synced_at":"2026-05-16T03:10:34.515Z","repository":{"id":79180822,"uuid":"462832810","full_name":"cdiggins/ptarmigan","owner":"cdiggins","description":"A framework for building robust Windows desktop applications.","archived":false,"fork":false,"pushed_at":"2023-10-18T16:04:10.000Z","size":129,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-09T07:32:30.036Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/cdiggins.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-02-23T17:12:19.000Z","updated_at":"2022-10-12T15:09:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"412b364d-8659-483f-ae7e-3b9e8f7557b1","html_url":"https://github.com/cdiggins/ptarmigan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2Fptarmigan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2Fptarmigan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2Fptarmigan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdiggins%2Fptarmigan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdiggins","download_url":"https://codeload.github.com/cdiggins/ptarmigan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240876832,"owners_count":19871904,"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":[],"created_at":"2024-11-11T08:56:57.588Z","updated_at":"2026-05-16T03:10:29.493Z","avatar_url":"https://github.com/cdiggins.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ptarmigan\n\nPtarmigan is a framework for developing Windows well-structured and robust desktop applications. It does \nthis by providing a solid software architecture with open-source implementations of common \nlow-level infrastructure features.\n\nPtarmigan provides a rich set of functionality out of the box and provides proper decoupling of \nthe UI and data model. This means all features can run without UI, greatly simplifying testing and \ndevelopment. \n\n# Background\n\nMany people, especially non-programmers, take for granted just how much functionality is expected and \nrequired to develop a successful commercial desktop application for Windows. There is a set of features \nthat virtually every non-trivial commercial package ends up having to implement, and to be honest, \nit hasn't changed much in the last 25 years. Indeed there are many resources online and open-source \nlibraries to help accelerate this process, and modern tools and languages are better than ever. \n\nThe key to success in software development is anticipating all of the required functionality and putting \nit together in such a way that the features work together to speed up development, rather than slowing it down. \n\nThere are no great insights or secrets, but it does take a lot of practice to get it right. Luckily there are \nenough people that have been doing for a long time, that a number of architectural and coding patterns \nhave been identified that can make application development much faster. \n\nThis project is about capturing some of those patterns in one place and making them reusable building \nblocks, so that both you and I can more quickly get to the place we want to be: implementing the fun and \nuseful featurs and workflows our customers need and want. \n\n# How to use it\n\nPtarmigan comes with a demo application that provides user facing functionality that demonstrates many of the \nfeatures implemented for the purpose of debugging, profiling, instrumentation, and testing. \n\nYou can take this application and build from it, or use the libraries as you want. \n\n## Do you require additional documentation, training, support, custom features, integration, or access to the road-map? \n\nWe provide very affordable packages for users who want commercial grade support. \nReach out to me at cdiggins@gmail.com to discuss the details. \n\n# Features under Development\n\nUI\n* Layout\n* Remembering position and sizing of dialogs\n* Common dialog implementation \n* Window Docking \n* Automatic UI (property sets, configuration)\n* Auto-complete\n* Multi-Monitor Support  \n* Dismissable dialogs\n* Text Entry Memory\n* Resolution resize support\n* Window finding \n* Drag and Drop\n* Cut and Paste\n\nConfiguration\n* First Run\n* Environment Variables\n* Settings files\n* Configuration editor \n\nUser Management\n* Account login \n* Integration with zero Auth\n* Windows user profile querying \n\nBatch Processing\n* Command-Line Arguments\n* Headless / Quiet mode \n\nExtensibility\n* Scripting language support via Roslyn \n* Configuration language\n* Plugins\n* API Calls \n* Macro System\n* API documentation generated as HTML from source\n\nData Management\n* Business data model management\n* Notification of changes \n* Automated serialization \n* Auto-Save and Back-up\n* Disaster Recovery \n* Data caching\n* Support for databases \n\nFile Management\n* Recent Files\n* Find files \n* Temporary file management \n* File Type \n\nTask Processing \n* Asynchronous execution \n* Progress Bar\n* Cancellation\n* Logging \n  \nHelp/Support\n* Centralized error reporting\n* Crash reporting \n* URL management\n* Technical Support\n* Licensing information\n* Short and long tips\n* Video tips \n* Recording \n* Tutorial mode\n* Auto-generated help \n* Release notes generated from Git\n* Version Information\n\nCommand Management\n* Connectivity to keystroke / menu\n* Text search\n* Documentation \n* Instrumentation \n\nDevOps\n* Building\n* Commit\t\t\t\t\n* Git integration\n* Support for multiple types of build \n  \nQA\n* Test tools \n* Performance Profiling\n* Memory usage graphing\n* Hidden features\n* Test Data Management\n* Log Bug (Internal/External)\n\nBranding\n* Logo\n* Icon application\n* Icon with file types\n* File Association\n* File Preview\n\nInstrumentation, Analytics, Metrics\n* Logging - debugging, user \n* Crash Information\n* Windows event system \n* Windows Log file\n* Profiling\n  \nFeatures\n* Screenshotting\n* Video Record\n* Notifications\n* Text Editor\n\nSoftware Architecture \n* Decouples UI from domain model\n* Feature set is testable without UI\n* Leverages Domain Driven Design best practices\n* Provides a centralized data management system inspired by Redux\n* Support for client-server and peer-to-peer networks \n\n# Status: February 23, 2022 \n\nThese features exist across many different projects. I expect by end of March to have a working prototype of the system for you to play with.\n\nIn the mean-time I'd love to hear your suggestions and ideas for features to include at https://github.com/cdiggins/ptarmigan/issues.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdiggins%2Fptarmigan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdiggins%2Fptarmigan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdiggins%2Fptarmigan/lists"}