# rmplaysmcyt/ebirforms-crossplatformedition architecture

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

- Interactive diagram: https://gitdiagram.com/rmplaysmcyt/ebirforms-crossplatformedition
- Repository: https://github.com/rmplaysmcyt/ebirforms-crossplatformedition

## Overview

This is an Avalonia desktop scaffold for a cross-platform eBIRForms-style taxpayer interface. The visible workflow starts the desktop app, creates a main window and its view model, and exposes form/RDO choices plus segmented TIN input. The README describes offline return preparation and online submission as product goals, but the sampled implementation does not show return editing, persistence, or submission; those stages are therefore not represented as implemented components.

Main entry points: [`App.axaml.cs`](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/App.axaml.cs) (Application setup), [`ViewModels/MainWindowViewModel.cs`](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/MainWindowViewModel.cs) (Form selection state), [`Views/MainWindow.axaml.cs`](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Views/MainWindow.axaml.cs) (Main window), [`Program.cs`](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Program.cs) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Desktop startup"]
  node_program["App entry<br/>[Program.cs]"]
  node_app["Application setup<br/>[App.axaml.cs]"]
end

subgraph group_interface["Taxpayer interface"]
  node_mainwindow["Main window"]
  node_locator["View locator<br/>[ViewLocator.cs]"]
  node_tinview["TIN control"]
end

subgraph group_viewmodels["View models"]
  node_mainvm["Form selection state"]
  node_tinvm["TIN input"]
  node_basevm["Observable base<br/>[ViewModelBase.cs]"]
end

node_taxpayer(("Taxpayer"))

node_program -->|"starts"| node_app
node_app -->|"creates"| node_mainwindow
node_app -->|"assigns context"| node_mainvm
node_mainvm -->|"creates"| node_tinvm
node_locator -->|"matches"| node_basevm
node_taxpayer -.->|"uses"| node_mainwindow

click node_program "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Program.cs"
click node_app "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/App.axaml.cs"
click node_mainwindow "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Views/MainWindow.axaml.cs"
click node_mainvm "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/MainWindowViewModel.cs"
click node_tinvm "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/TinInputViewModel.cs"
click node_basevm "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/ViewModelBase.cs"
click node_locator "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewLocator.cs"
click node_tinview "https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Views/TinInputView.axaml.cs"

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_program,node_app toneBlue
class node_mainwindow,node_locator,node_tinview toneAmber
class node_mainvm,node_tinvm,node_basevm toneMint
class node_taxpayer toneIndigo
```

## Components

### Desktop startup

- [App entry](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Program.cs): `Program.cs`
- [Application setup](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/App.axaml.cs): `App.axaml.cs`

### Taxpayer interface

- [Main window](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Views/MainWindow.axaml.cs): `Views/MainWindow.axaml.cs`
- [View locator](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewLocator.cs): `ViewLocator.cs`
- [TIN control](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/Views/TinInputView.axaml.cs): `Views/TinInputView.axaml.cs`

### View models

- [Form selection state](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/MainWindowViewModel.cs): `ViewModels/MainWindowViewModel.cs`
- [TIN input](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/TinInputViewModel.cs): `ViewModels/TinInputViewModel.cs`
- [Observable base](https://github.com/rmplaysmcyt/ebirforms-crossplatformedition/blob/master/ViewModels/ViewModelBase.cs): `ViewModels/ViewModelBase.cs`

### Other components

- **Taxpayer**

## Connections

- App entry → Application setup: starts (evidence: `Program.cs`)
- Application setup → Main window: creates (evidence: `App.axaml.cs`)
- Application setup → Form selection state: assigns context (evidence: `App.axaml.cs`)
- Form selection state → TIN input: creates (evidence: `ViewModels/MainWindowViewModel.cs`)
- View locator → Observable base: matches (evidence: `ViewLocator.cs`)
- Taxpayer → Main window: uses
