# rosperitus/excelerate architecture

> Architecture diagram of the GitHub repository rosperitus/excelerate, 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/rosperitus/excelerate
- Repository: https://github.com/rosperitus/excelerate

## Overview

Excelerate is a Rust spreadsheet library: callers read files into a workbook model, inspect or edit the grid, optionally recalculate formulas, then write the workbook to a supported format. Format detection dispatches input to format-specific readers; editing and formula evaluation operate on the shared model. The README also documents broad format coverage, rich spreadsheet features, and a WebAssembly API. The graph uses documented capabilities and module boundaries; some internal reader/writer and WASM wiring is not shown in the sampled source, so uncertain links are omitted.

Main entry points: [`src/model/mod.rs`](https://github.com/rosperitus/excelerate/blob/main/src/model/mod.rs) (Workbook model), [`src/wasm.rs`](https://github.com/rosperitus/excelerate/blob/main/src/wasm.rs) (WebAssembly API), [`src/formula/eval.rs`](https://github.com/rosperitus/excelerate/blob/main/src/formula/eval.rs) (Formula evaluator), [`src/writer`](https://github.com/rosperitus/excelerate/tree/main/src/writer) (Format writers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_io["File formats"]
  node_reader["Format detection<br/>[detect.rs]"]
  node_readers["Format readers"]
  node_writer["Format writers"]
end

subgraph group_core["Workbook core"]
  node_model["Workbook model<br/>[mod.rs]"]
  node_styles["Styles and formats<br/>[mod.rs]"]
  node_features["Sheet features"]
end

subgraph group_compute["Editing and formulas"]
  node_edit["Grid editing<br/>[mod.rs]"]
  node_formula["Formula evaluator<br/>[eval.rs]"]
  node_parser["Formula parser<br/>[parser.rs]"]
  node_functions["Built-in functions"]
end

subgraph group_api["Application interfaces"]
  node_wasm["WebAssembly API<br/>[wasm.rs]"]
end

node_user(("Library caller"))
node_input["Spreadsheet input"]
node_output["Spreadsheet output"]

node_user -->|"requests read"| node_reader
node_input -->|"supplies bytes"| node_reader
node_reader -->|"dispatches format"| node_readers
node_readers -->|"builds workbook"| node_model
node_user -->|"uses workbook"| node_model
node_model -->|"references styles"| node_styles
node_model -->|"models features"| node_features
node_user -->|"requests edits"| node_edit
node_edit -->|"updates workbook"| node_model
node_user -->|"requests recalculation"| node_formula
node_formula -->|"parses formulas"| node_parser
node_formula -->|"evaluates calls"| node_functions
node_formula -->|"reads and updates"| node_model
node_user -->|"requests write"| node_writer
node_writer -->|"serializes workbook"| node_model
node_writer -->|"writes file"| node_output
node_user -->|"uses API"| node_wasm
node_wasm -->|"exposes workbook"| node_model
node_wasm -->|"exposes recalc"| node_formula
node_wasm -->|"exposes edits"| node_edit
node_wasm -->|"exposes reading"| node_reader
node_wasm -->|"exposes writing"| node_writer

click node_reader "https://github.com/rosperitus/excelerate/blob/main/src/reader/detect.rs"
click node_readers "https://github.com/rosperitus/excelerate/tree/main/src/reader"
click node_model "https://github.com/rosperitus/excelerate/blob/main/src/model/mod.rs"
click node_styles "https://github.com/rosperitus/excelerate/blob/main/src/style/mod.rs"
click node_features "https://github.com/rosperitus/excelerate/tree/main/src/model"
click node_edit "https://github.com/rosperitus/excelerate/blob/main/src/edit/mod.rs"
click node_formula "https://github.com/rosperitus/excelerate/blob/main/src/formula/eval.rs"
click node_parser "https://github.com/rosperitus/excelerate/blob/main/src/formula/parser.rs"
click node_functions "https://github.com/rosperitus/excelerate/tree/main/src/formula/functions"
click node_writer "https://github.com/rosperitus/excelerate/tree/main/src/writer"
click node_wasm "https://github.com/rosperitus/excelerate/blob/main/src/wasm.rs"

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_reader,node_readers,node_writer toneBlue
class node_model,node_styles,node_features toneAmber
class node_edit,node_formula,node_parser,node_functions toneMint
class node_wasm toneRose
class node_user,node_input,node_output toneIndigo
```

## Components

### File formats

- [Format detection](https://github.com/rosperitus/excelerate/blob/main/src/reader/detect.rs): `src/reader/detect.rs`
- [Format readers](https://github.com/rosperitus/excelerate/tree/main/src/reader): `src/reader`
- [Format writers](https://github.com/rosperitus/excelerate/tree/main/src/writer): `src/writer`

### Workbook core

- [Workbook model](https://github.com/rosperitus/excelerate/blob/main/src/model/mod.rs): `src/model/mod.rs`
- [Styles and formats](https://github.com/rosperitus/excelerate/blob/main/src/style/mod.rs): `src/style/mod.rs`
- [Sheet features](https://github.com/rosperitus/excelerate/tree/main/src/model): `src/model`

### Editing and formulas

- [Grid editing](https://github.com/rosperitus/excelerate/blob/main/src/edit/mod.rs): `src/edit/mod.rs`
- [Formula evaluator](https://github.com/rosperitus/excelerate/blob/main/src/formula/eval.rs): `src/formula/eval.rs`
- [Formula parser](https://github.com/rosperitus/excelerate/blob/main/src/formula/parser.rs): `src/formula/parser.rs`
- [Built-in functions](https://github.com/rosperitus/excelerate/tree/main/src/formula/functions): `src/formula/functions`

### Application interfaces

- [WebAssembly API](https://github.com/rosperitus/excelerate/blob/main/src/wasm.rs): `src/wasm.rs`

### Other components

- **Library caller**
- **Spreadsheet input**
- **Spreadsheet output**

## Connections

- Library caller → Format detection: requests read
- Spreadsheet input → Format detection: supplies bytes
- Format detection → Format readers: dispatches format
- Format readers → Workbook model: builds workbook
- Library caller → Workbook model: uses workbook
- Workbook model → Styles and formats: references styles
- Workbook model → Sheet features: models features
- Library caller → Grid editing: requests edits
- Grid editing → Workbook model: updates workbook
- Library caller → Formula evaluator: requests recalculation
- Formula evaluator → Formula parser: parses formulas
- Formula evaluator → Built-in functions: evaluates calls
- Formula evaluator → Workbook model: reads and updates
- Library caller → Format writers: requests write
- Format writers → Workbook model: serializes workbook
- Format writers → Spreadsheet output: writes file
- Library caller → WebAssembly API: uses API
- WebAssembly API → Workbook model: exposes workbook
- WebAssembly API → Formula evaluator: exposes recalc
- WebAssembly API → Grid editing: exposes edits
- WebAssembly API → Format detection: exposes reading
- WebAssembly API → Format writers: exposes writing
