# nsfr750/msr605 architecture

> Architecture diagram of the GitHub repository nsfr750/msr605, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nsfr750/msr605
- Repository: https://github.com/nsfr750/msr605

## Overview

MSR605 is a PyQt desktop application for operating a magnetic-stripe reader/writer. The main workflow is user input through the GUI, device operations through the reader interface and serial hardware, then track data display and optional record management. The repository also documents advanced decoding, validation, visualization, multilingual UI, and data-management features. Sampled excerpts confirm the application entry point, reader interface, parser, settings/language modules, and a separate API; some other feature wiring is documented but not visible in the excerpts.

Main entry points: [`script/UI.py`](https://github.com/nsfr750/msr605/blob/main/script/UI.py) (Desktop GUI), [`script/cardReader.py`](https://github.com/nsfr750/msr605/blob/main/script/cardReader.py) (MSR605 interface), [`script/parser.py`](https://github.com/nsfr750/msr605/blob/main/script/parser.py) (Track parser), [`script/api/__init__.py`](https://github.com/nsfr750/msr605/blob/main/script/api/__init__.py) (REST API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_entry["Application entry<br/>[main.py]"]
  node_gui["Desktop GUI<br/>[UI.py]"]
  node_settings["Settings manager"]
  node_language["Language manager"]
  node_translations["Translations<br/>[translations.py]"]
end

subgraph group_device["Card operations"]
  node_reader["MSR605 interface<br/>[cardReader.py]"]
end

subgraph group_data["Track data"]
  node_formats["Card formats<br/>[card_formats.py]"]
  node_validation["Track validation<br/>[card_validation.py]"]
  node_parser["Track parser<br/>[parser.py]"]
  node_advanced["Advanced operations"]
  node_decryption["Card decryption<br/>[decrypt.py]"]
  node_visualization["Data visualization<br/>[visualization.py]"]
  node_database[("Card records<br/>[UI.py]")]
end

subgraph group_integrations["Interfaces and support"]
  node_api["REST API<br/>[__init__.py]"]
  node_templates["Card templates<br/>[card_templates.py]"]
  node_logging["Application logging<br/>[logger.py]"]
  node_updates["Update checker<br/>[updates.py]"]
end

node_operator(("Card operator"))
node_serial["Serial device"]
node_api_client(("API consumer"))
node_release_service["Release service"]

node_operator -->|"operates"| node_gui
node_entry -->|"launches"| node_gui
node_gui -->|"controls"| node_reader
node_reader -->|"communicates"| node_serial
node_gui -->|"reads and writes"| node_database
node_gui -->|"loads and saves"| node_settings
node_gui -->|"selects language"| node_language
node_language -->|"loads strings"| node_translations
node_api_client -->|"sends requests"| node_api
node_reader -->|"starts server"| node_api
node_api -->|"returns responses"| node_api_client
node_gui -->|"opens operations"| node_advanced
node_gui -.->|"displays data"| node_visualization
node_gui -.->|"decodes tracks"| node_parser
node_parser -.->|"validates fields"| node_validation
node_parser -.->|"interprets format"| node_formats
node_advanced -.->|"decrypts data"| node_decryption
node_gui -.->|"uses templates"| node_templates
node_gui -.->|"records events"| node_logging
node_gui -.->|"checks updates"| node_updates
node_updates -->|"queries releases"| node_release_service

click node_entry "https://github.com/nsfr750/msr605/blob/main/main.py"
click node_gui "https://github.com/nsfr750/msr605/blob/main/script/UI.py"
click node_settings "https://github.com/nsfr750/msr605/blob/main/script/settings_manager.py"
click node_language "https://github.com/nsfr750/msr605/blob/main/script/language_manager.py"
click node_translations "https://github.com/nsfr750/msr605/blob/main/script/translations.py"
click node_reader "https://github.com/nsfr750/msr605/blob/main/script/cardReader.py"
click node_formats "https://github.com/nsfr750/msr605/blob/main/script/card_formats.py"
click node_validation "https://github.com/nsfr750/msr605/blob/main/script/card_validation.py"
click node_parser "https://github.com/nsfr750/msr605/blob/main/script/parser.py"
click node_advanced "https://github.com/nsfr750/msr605/blob/main/script/advanced_functions.py"
click node_decryption "https://github.com/nsfr750/msr605/blob/main/script/decrypt.py"
click node_visualization "https://github.com/nsfr750/msr605/blob/main/script/visualization.py"
click node_database "https://github.com/nsfr750/msr605/blob/main/script/UI.py"
click node_api "https://github.com/nsfr750/msr605/blob/main/script/api/__init__.py"
click node_templates "https://github.com/nsfr750/msr605/blob/main/script/card_templates.py"
click node_logging "https://github.com/nsfr750/msr605/blob/main/script/logger.py"
click node_updates "https://github.com/nsfr750/msr605/blob/main/script/updates.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_gui,node_settings,node_language,node_translations toneBlue
class node_reader toneAmber
class node_formats,node_validation,node_parser,node_advanced,node_decryption,node_visualization,node_database,node_api_client toneMint
class node_api,node_templates,node_logging,node_updates toneRose
class node_operator,node_serial,node_release_service toneIndigo
```

## Components

### Desktop application

- [Application entry](https://github.com/nsfr750/msr605/blob/main/main.py): `main.py`
- [Desktop GUI](https://github.com/nsfr750/msr605/blob/main/script/UI.py): `script/UI.py`
- [Settings manager](https://github.com/nsfr750/msr605/blob/main/script/settings_manager.py): `script/settings_manager.py`
- [Language manager](https://github.com/nsfr750/msr605/blob/main/script/language_manager.py): `script/language_manager.py`
- [Translations](https://github.com/nsfr750/msr605/blob/main/script/translations.py): `script/translations.py`

### Card operations

- [MSR605 interface](https://github.com/nsfr750/msr605/blob/main/script/cardReader.py): `script/cardReader.py`

### Track data

- [Card formats](https://github.com/nsfr750/msr605/blob/main/script/card_formats.py): `script/card_formats.py`
- [Track validation](https://github.com/nsfr750/msr605/blob/main/script/card_validation.py): `script/card_validation.py`
- [Track parser](https://github.com/nsfr750/msr605/blob/main/script/parser.py): `script/parser.py`
- [Advanced operations](https://github.com/nsfr750/msr605/blob/main/script/advanced_functions.py): `script/advanced_functions.py`
- [Card decryption](https://github.com/nsfr750/msr605/blob/main/script/decrypt.py): `script/decrypt.py`
- [Data visualization](https://github.com/nsfr750/msr605/blob/main/script/visualization.py): `script/visualization.py`
- [Card records](https://github.com/nsfr750/msr605/blob/main/script/UI.py): `script/UI.py`

### Interfaces and support

- [REST API](https://github.com/nsfr750/msr605/blob/main/script/api/__init__.py): `script/api/__init__.py`
- [Card templates](https://github.com/nsfr750/msr605/blob/main/script/card_templates.py): `script/card_templates.py`
- [Application logging](https://github.com/nsfr750/msr605/blob/main/script/logger.py): `script/logger.py`
- [Update checker](https://github.com/nsfr750/msr605/blob/main/script/updates.py): `script/updates.py`

### Other components

- **Card operator**
- **Serial device**
- **API consumer**
- **Release service**

## Connections

- Card operator → Desktop GUI: operates
- Application entry → Desktop GUI: launches
- Desktop GUI → MSR605 interface: controls
- MSR605 interface → Serial device: communicates
- Desktop GUI → Card records: reads and writes
- Desktop GUI → Settings manager: loads and saves
- Desktop GUI → Language manager: selects language
- Language manager → Translations: loads strings
- API consumer → REST API: sends requests
- MSR605 interface → REST API: starts server
- REST API → API consumer: returns responses
- Desktop GUI → Advanced operations: opens operations
- Desktop GUI → Data visualization: displays data
- Desktop GUI → Track parser: decodes tracks
- Track parser → Track validation: validates fields
- Track parser → Card formats: interprets format
- Advanced operations → Card decryption: decrypts data
- Desktop GUI → Card templates: uses templates
- Desktop GUI → Application logging: records events
- Desktop GUI → Update checker: checks updates
- Update checker → Release service: queries releases
