# NFCommander This tool serves as an adapter between NFC/ISO14443A Tags and Cards (Mifare Cards, NTAG Tags) and any other tooling. ## Tag format The data on the NFC tag is split into three parts, the detailed format of which is defined in the `reader API` document. * Tag Command: The command a tag will call. This maps to an executable defined in the NFCommander configuration. * Static data: Unstructured textual parameters to the command that will stay unchanged for this tag over the lifetime of it's programming. * Dynamic data: Unstructured textual data that may be changed by the execution of a command to keep state over multiple invocations/presentations. ## API Surfaces This project has three distinct APIs * The command API: The commands that can be triggered by and while a tag is present on the reader * The control API: Tag programming/administration, command testing * The reader API: Interaction with the active NFC hardware ## Things that crossed my mind * Maybe we should use NDEF on the tag instead of yet another custom format * It might be useful to implement support for hardware button passthrough to commands * Who should manage the active tags list - plugins or core * Should reader plugins report the full list of tags periodically or only changes in the field?