# sulavmhx/number-conversion-system architecture

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

- Interactive diagram: https://gitdiagram.com/sulavmhx/number-conversion-system
- Repository: https://github.com/sulavmhx/number-conversion-system

## Overview

This is a Raylib desktop number-conversion and bitwise-tools application with account login, registration, recovery, settings, admin functions, and per-user operation logs. The main loop dispatches screens; users choose a tool, enter values, and view results, while conversion/bitwise operations are recorded for later log views. The graph distinguishes those workflows from account management and shared file-backed state. README content was absent, and some Drawing.c behavior is only partially sampled, so uncertain call links are omitted.

Main entry points: [`Drawing.c`](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Drawing.c) (Screens and UI), [`main.c`](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/main.c) (Screen loop), [`Input.c`](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Input.c) (Input dispatch), [`Account.c`](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Account.c) (Account operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application flow"]
  node_main["Screen loop<br/>[main.c]"]
  node_ui["Screens and UI<br/>[Drawing.c]"]
end

subgraph group_tools["Number tools"]
  node_input["Input dispatch<br/>[Input.c]"]
  node_conversion["Base conversion<br/>[NumConv.c]"]
  node_bitwise["Bitwise operations<br/>[Bitwise.c]"]
end

subgraph group_accounts["Accounts and admin"]
  node_account["Account operations<br/>[Account.c]"]
end

subgraph group_state["File-backed state"]
  node_numlogs["Number log handling<br/>[FileHandle.c]"]
  node_bitlogs["Bitwise log handling<br/>[FileHandle.c]"]
  node_usersfile[("User records<br/>[users.dat]")]
  node_numlogfile[("Number log records<br/>[FileHandle.c]")]
  node_bitlogfile[("Bitwise log records<br/>[FileHandle.c]")]
end

node_user(("User"))
node_raylib["Raylib runtime<br/>[raylib.h]"]

node_user -->|"uses"| node_main
node_main -->|"dispatches screens"| node_ui
node_main -->|"initializes admin"| node_account
node_ui -->|"submits operations"| node_input
node_input -->|"converts values"| node_conversion
node_input -->|"executes operation"| node_bitwise
node_account -->|"reads/writes"| node_usersfile
node_ui -->|"manages accounts"| node_account
node_ui -->|"writes conversion logs"| node_numlogs
node_ui -->|"writes bitwise logs"| node_bitlogs
node_numlogs -->|"appends records"| node_numlogfile
node_bitlogs -->|"appends records"| node_bitlogfile
node_ui -->|"reads log entries"| node_numlogfile
node_ui -->|"reads log entries"| node_bitlogfile
node_main -->|"runs window loop"| node_raylib
node_ui -->|"draws interface"| node_raylib

click node_main "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/main.c"
click node_ui "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Drawing.c"
click node_input "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Input.c"
click node_conversion "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/NumConv.c"
click node_bitwise "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Bitwise.c"
click node_account "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Account.c"
click node_numlogs "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c"
click node_bitlogs "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c"
click node_usersfile "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/users.dat"
click node_numlogfile "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c"
click node_bitlogfile "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c"
click node_raylib "https://github.com/sulavmhx/number-conversion-system/blob/gui-version/include/raylib.h"

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_main,node_ui,node_user toneBlue
class node_input,node_conversion,node_bitwise toneAmber
class node_account toneMint
class node_numlogs,node_bitlogs,node_usersfile,node_numlogfile,node_bitlogfile toneRose
class node_raylib toneTeal
```

## Components

### Application flow

- [Screen loop](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/main.c): `main.c`
- [Screens and UI](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Drawing.c): `Drawing.c`

### Number tools

- [Input dispatch](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Input.c): `Input.c`
- [Base conversion](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/NumConv.c): `NumConv.c`
- [Bitwise operations](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Bitwise.c): `Bitwise.c`

### Accounts and admin

- [Account operations](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/Account.c): `Account.c`

### File-backed state

- [Number log handling](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c): `FileHandle.c`
- [Bitwise log handling](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c): `FileHandle.c`
- [User records](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/users.dat): `users.dat`
- [Number log records](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c): `FileHandle.c`
- [Bitwise log records](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/FileHandle.c): `FileHandle.c`

### Other components

- **User**
- [Raylib runtime](https://github.com/sulavmhx/number-conversion-system/blob/gui-version/include/raylib.h): `include/raylib.h`

## Connections

- User → Screen loop: uses
- Screen loop → Screens and UI: dispatches screens
- Screen loop → Account operations: initializes admin
- Screens and UI → Input dispatch: submits operations
- Input dispatch → Base conversion: converts values
- Input dispatch → Bitwise operations: executes operation
- Account operations → User records: reads/writes
- Screens and UI → Account operations: manages accounts
- Screens and UI → Number log handling: writes conversion logs
- Screens and UI → Bitwise log handling: writes bitwise logs
- Number log handling → Number log records: appends records
- Bitwise log handling → Bitwise log records: appends records
- Screens and UI → Number log records: reads log entries
- Screens and UI → Bitwise log records: reads log entries
- Screen loop → Raylib runtime: runs window loop
- Screens and UI → Raylib runtime: draws interface
