# fulmonyx/vexcat architecture

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

- Interactive diagram: https://gitdiagram.com/fulmonyx/vexcat
- Repository: https://github.com/fulmonyx/vexcat

## Overview

VexCat is a small interactive C++ program for adding one domain to a target record and saving that record to a per-name `.cfg` file. The sampled entry point shows the prompt-to-save workflow; `filesys` delegates record formatting to `target`, which also handles embedded port records. The README provides no further capability details, so this map is limited to behavior visible in the supplied source; the configuration file is a runtime output, not a repository source path.

Main entry points: [`src/target.cpp`](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/target.cpp) (Target record), [`src/vexcat.cpp`](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/vexcat.cpp) (Interactive CLI), [`src/filesys.cpp`](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/filesys.cpp) (Config access), [`src/ports.cpp`](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/ports.cpp) (Port record)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application"]
  node_cli["Interactive CLI<br/>[vexcat.cpp]"]
end

subgraph group_records["Record model"]
  node_target["Target record<br/>[target.cpp]"]
  node_ports["Port record<br/>[ports.cpp]"]
end

subgraph group_persistence["Persistence"]
  node_filesys["Config access<br/>[filesys.cpp]"]
  node_cfg["Per-name config"]
end

node_user(("User"))

node_user -->|"enters name/domain"| node_cli
node_cli -->|"constructs and saves"| node_filesys
node_cli -->|"adds domain"| node_target
node_filesys -->|"serializes target"| node_target
node_target -->|"serializes ports"| node_ports
node_target -->|"deserializes ports"| node_ports
node_filesys -->|"writes config"| node_cfg

click node_cli "https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/vexcat.cpp"
click node_filesys "https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/filesys.cpp"
click node_target "https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/target.cpp"
click node_ports "https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/ports.cpp"

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_cli,node_user toneBlue
class node_target,node_ports toneAmber
class node_filesys,node_cfg toneMint
```

## Components

### Application

- [Interactive CLI](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/vexcat.cpp): `src/vexcat.cpp`

### Record model

- [Target record](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/target.cpp): `src/target.cpp`
- [Port record](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/ports.cpp): `src/ports.cpp`

### Persistence

- [Config access](https://github.com/fulmonyx/vexcat/blob/iy26m9d6h15/src/filesys.cpp): `src/filesys.cpp`
- **Per-name config**

### Other components

- **User**

## Connections

- User → Interactive CLI: enters name/domain
- Interactive CLI → Config access: constructs and saves
- Interactive CLI → Target record: adds domain
- Config access → Target record: serializes target
- Target record → Port record: serializes ports
- Target record → Port record: deserializes ports
- Config access → Per-name config: writes config
