# vamamurin/vate-tauri architecture

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

- Interactive diagram: https://gitdiagram.com/vamamurin/vate-tauri
- Repository: https://github.com/vamamurin/vate-tauri

## Overview

Vate is an offline desktop calendar: a user views and navigates months, inspects dates and holidays, manages events, and adjusts calendar settings; the Tauri backend persists events and settings as local JSON. The frontend’s main.js implements several distinct calendar and interaction responsibilities, while holidays.js supplies holiday lookup and lib.rs registers storage commands. The README documents additional capabilities, including lunar dates, Can Chi, localized UI, and holiday effects. Some frontend wiring is unsampled, so only evidenced relationships are shown.

Main entry points: [`src-tauri/src/lib.rs`](https://github.com/vamamurin/vate-tauri/blob/main/src-tauri/src/lib.rs) (Storage commands), [`ui/js/main.js`](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js) (Month calendar), [`ui/index.html`](https://github.com/vamamurin/vate-tauri/blob/main/ui/index.html) (Calendar interface), [`ui/js/holidays.js`](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/holidays.js) (Holiday lookup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Calendar frontend"]
  node_shell["Calendar interface<br/>[index.html]"]
  node_calendar["Month calendar<br/>[main.js]"]
  node_navigation["Month navigation<br/>[main.js]"]
  node_event_ui["Event management<br/>[main.js]"]
  node_selected_day["Selected-day details<br/>[main.js]"]
  node_settings["Calendar settings<br/>[main.js]"]
  node_bridge["Tauri invoke bridge<br/>[main.js]"]
end

subgraph group_domain["Calendar features"]
  node_language["English and Vietnamese<br/>[i18n.js]"]
  node_lunar["Lunar dates and Can Chi<br/>[main.js]"]
  node_holiday_lookup["Holiday lookup<br/>[holidays.js]"]
  node_holiday_effects["Holiday decorations<br/>[main.js]"]
end

subgraph group_backend["Desktop backend"]
  node_runtime["Tauri application runtime<br/>[lib.rs]"]
  node_commands["Storage commands<br/>[lib.rs]"]
end

subgraph group_persistence["Local persistence"]
  node_events_store[("Events JSON")]
  node_settings_store[("Settings JSON")]
end

node_person(("Calendar user"))

node_person -.->|"uses"| node_shell
node_shell -.->|"shows"| node_calendar
node_calendar -->|"looks up"| node_holiday_lookup
node_calendar -->|"computes dates"| node_lunar
node_selected_day -->|"looks up"| node_holiday_lookup
node_bridge -->|"invokes"| node_commands
node_runtime -->|"registers"| node_commands
node_commands -->|"reads and writes"| node_events_store
node_commands -->|"reads and writes"| node_settings_store

click node_shell "https://github.com/vamamurin/vate-tauri/blob/main/ui/index.html"
click node_calendar "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_navigation "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_event_ui "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_selected_day "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_settings "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_language "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/i18n.js"
click node_lunar "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_holiday_lookup "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/holidays.js"
click node_holiday_effects "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_bridge "https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js"
click node_runtime "https://github.com/vamamurin/vate-tauri/blob/main/src-tauri/src/lib.rs"
click node_commands "https://github.com/vamamurin/vate-tauri/blob/main/src-tauri/src/lib.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_shell,node_calendar,node_navigation,node_event_ui,node_selected_day,node_settings,node_bridge,node_person toneBlue
class node_language,node_lunar,node_holiday_lookup,node_holiday_effects toneAmber
class node_runtime,node_commands toneMint
class node_events_store,node_settings_store toneRose
```

## Components

### Calendar frontend

- [Calendar interface](https://github.com/vamamurin/vate-tauri/blob/main/ui/index.html): `ui/index.html`
- [Month calendar](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Month navigation](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Event management](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Selected-day details](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Calendar settings](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Tauri invoke bridge](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`

### Calendar features

- [English and Vietnamese](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/i18n.js): `ui/js/i18n.js`
- [Lunar dates and Can Chi](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`
- [Holiday lookup](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/holidays.js): `ui/js/holidays.js`
- [Holiday decorations](https://github.com/vamamurin/vate-tauri/blob/main/ui/js/main.js): `ui/js/main.js`

### Desktop backend

- [Tauri application runtime](https://github.com/vamamurin/vate-tauri/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Storage commands](https://github.com/vamamurin/vate-tauri/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Local persistence

- **Events JSON**
- **Settings JSON**

### Other components

- **Calendar user**

## Connections

- Calendar user → Calendar interface: uses
- Calendar interface → Month calendar: shows
- Month calendar → Holiday lookup: looks up (evidence: `ui/js/main.js`)
- Month calendar → Lunar dates and Can Chi: computes dates (evidence: `ui/js/main.js`)
- Selected-day details → Holiday lookup: looks up (evidence: `ui/js/main.js`)
- Tauri invoke bridge → Storage commands: invokes (evidence: `ui/js/main.js`)
- Tauri application runtime → Storage commands: registers (evidence: `src-tauri/src/lib.rs`)
- Storage commands → Events JSON: reads and writes (evidence: `src-tauri/src/lib.rs`)
- Storage commands → Settings JSON: reads and writes (evidence: `src-tauri/src/lib.rs`)
