# Objective Nonemm is a contest logger for amateur radio: a from-scratch reimplementation of N1MM Logger+ in C#, running on Linux and Windows. This is what the finished program has to do. ## Scope Contest rules, log formats and the database schema are written from their published definitions and are fully compatible with N1MM. ## Requirements **N1MM file compatibility.** The log database is N1MM's `.s3db`, in N1MM's schema. User-defined contests are `.udc` files. Macros and message files are N1MM's. A log written by either program opens in the other. Columns N1MM caches and we compute — points, multiplier flags — get written anyway so N1MM is happy, and are ignored on read. New storage extends N1MM's tables instead of changing them. Keep the store behind an interface; it may be a hosted database later, but the file on disk is N1MM's format. **No N1MM code in the repo.** N1MM decompiles, and it's the reference when the published rules are unclear or easy to get wrong. Check against it in a scratchpad; what lands in the repo is written from the published rule. **Where N1MM is wrong, don't copy the bug.** Follow the published rule and add a test that says what N1MM returns and why we don't. **Work without the optional inputs.** The country file and callsign database aren't bundled; they're downloaded from the same places N1MM gets them, and validated before anything is replaced. A failed download leaves the old file alone. Without a country file, country- and continent-scored contests lose accuracy but still run. With no radio connected, frequency and mode stay wherever they were last typed. **Leave out what can't be done properly.** A check-window column with no data behind it stays out rather than showing a guess. **Logic is testable without a UI.** What space does, when a dupe fires, what a QSO scores — that lives in a project with no UI framework reference and is covered by unit tests. **Reimplement most of N1MM's features.** It's fine if some are left out for simplicity, but the main core must be preserved -- it's a fully ready-to-use networked (multi-station) contest logger, with all the features necessary for efficient contest operation -- dupe checks, partial matching, telnet cluster, band view, no wasted space. ## Done An operator works a contest end to end — dupes and mults flagged as they type, bandmap and cluster feeding stations, radio and log following each other — exports a Cabrillo the sponsor accepts, and can open the log in N1MM.