Introduction
Every problem setter on Codeforces knows Polygon, a powerful problem preparation tool maintained by MikeMirzayanov. However, its web experience is not very convenient. To manage problems more effectively, I built a small desktop app called Decagon.
App Features
Decagon communicates with Polygon through the official Polygon API. Each problem corresponds to a local folder, and the app provides a tabbed editor with the following modules:
1. Info
- Time/Memory limits
- Input/Output files
- Interactive flag
- Checker/Validator/Interactor
- Points mode
2. Statements
- Edit every field per language (legend, input, output, scoring, notes)
- Shared resources (images, .sty files)
3. Files
- Centralized management of all files: solutions (tagged main/correct/wrong-answer/TLE/etc.), generators/validators/checkers, resource headers, and attachments
4. Tests
- Manual and script-generated tests
- Generation script
- Scoring groups (points & feedback policy, dependencies)
- Per-test points
5. Validator tests & Checker tests
- Assert a validator accepts/rejects an input
- Assert a checker gives the expected verdict
6. Packages
- Build full/verify package and download ZIP
7. Commit
- Save a revision of your working copy
Open Source and Compatibility
Decagon is an open-source project (MIT License) available on GitHub with installation instructions, supporting Windows, macOS, and Linux (though not fully tested on Linux yet).
Known Limitations
- Testsets cannot be created from the app (must be created on the Polygon site and then pulled)
- Stress testing and access/collaborator management have no API support, so they are read-only
- Only tests have a delete API; local deletions do not affect Polygon
- Binary files (e.g., statement images) can be pulled but not pushed back
Pushing the final package into a round still requires manual operation on the Codeforces website. Feature requests, bug reports, and PRs are welcome.
Conclusion
Thanks to MikeMirzayanov for Polygon and Codeforces!

Blogger's Review: This desktop application significantly streamlines the management of competitive programming problems, greatly enhancing the efficiency for developers, especially in scenarios requiring frequent modifications and validations.