# newstatue/evorsio architecture

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

## Overview

Evorsio is a Wails desktop app for browsing a SeaweedFS-backed file drive and managing an encrypted password vault. The principal workflow is a user opening the dashboard, invoking a bound service, and receiving paginated drive or vault entries; vault users can also generate passwords and create encrypted entries. The backend starts SeaweedFS and provides its filer client to both services, while SQLite is initialized at startup. The README is empty, and frontend route-to-binding wiring was not sampled, so those links are not inferred.

Main entry points: [`internal/vault/service.go`](https://github.com/newstatue/evorsio/blob/main/internal/vault/service.go) (Vault service), [`main.go`](https://github.com/newstatue/evorsio/blob/main/main.go) (Wails application), [`internal/seaweedfs/client.go`](https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/client.go) (Filer client), [`internal/drive/service.go`](https://github.com/newstatue/evorsio/blob/main/internal/drive/service.go) (Drive service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Desktop UI"]
  node_ui["React app<br/>[main.tsx]"]
  node_dashboard["Dashboard shell<br/>[route.tsx]"]
  node_drive_page["Drive page<br/>[index.tsx]"]
  node_vault_page["Vault page<br/>[index.tsx]"]
  node_drive_binding["Drive binding<br/>[service.ts]"]
  node_vault_binding["Vault binding<br/>[service.ts]"]
end

subgraph group_services["Domain services"]
  node_drive_service["Drive service<br/>[service.go]"]
  node_drive_repo["Drive repository<br/>[repository.go]"]
  node_vault_service["Vault service<br/>[service.go]"]
  node_vault_crypto["Vault encryption<br/>[vault.go]"]
  node_password_generator["Password generator<br/>[generator.go]"]
  node_resource_model["Resource metadata<br/>[model.go]"]
end

subgraph group_storage["Storage"]
  node_sqlite[("SQLite database<br/>[db.go]")]
  node_filer_client["Filer client<br/>[client.go]"]
  node_seaweed_manager["Seaweed manager<br/>[manager.go]"]
  node_seaweed_server["Seaweed processes<br/>[server.go]"]
end

subgraph group_runtime["App runtime"]
  node_app["Wails application<br/>[main.go]"]
end

node_user(("User"))
node_seaweedfs["SeaweedFS filer"]

node_user -->|"uses"| node_ui
node_ui -->|"routes to"| node_dashboard
node_app -->|"registers"| node_drive_service
node_app -->|"registers"| node_vault_service
node_app -->|"opens and migrates"| node_sqlite
node_app -->|"starts"| node_seaweed_manager
node_seaweed_manager -->|"starts"| node_seaweed_server
node_seaweed_manager -->|"creates"| node_filer_client
node_filer_client -->|"gRPC calls"| node_seaweedfs
node_drive_service -->|"lists entries"| node_filer_client
node_vault_service -->|"reads and writes"| node_filer_client
node_vault_service -->|"encrypts and decrypts"| node_vault_crypto
node_vault_service -->|"generates passwords"| node_password_generator
node_vault_service -->|"uses metadata"| node_resource_model
node_drive_service -->|"receives repository"| node_drive_repo

click node_ui "https://github.com/newstatue/evorsio/blob/main/frontend/src/main.tsx"
click node_dashboard "https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/route.tsx"
click node_drive_page "https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/drive/index.tsx"
click node_vault_page "https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/vault/index.tsx"
click node_drive_binding "https://github.com/newstatue/evorsio/blob/main/frontend/bindings/github.com/newstatue/evorsio/internal/drive/service.ts"
click node_vault_binding "https://github.com/newstatue/evorsio/blob/main/frontend/bindings/github.com/newstatue/evorsio/internal/vault/service.ts"
click node_drive_service "https://github.com/newstatue/evorsio/blob/main/internal/drive/service.go"
click node_drive_repo "https://github.com/newstatue/evorsio/blob/main/internal/drive/repository.go"
click node_vault_service "https://github.com/newstatue/evorsio/blob/main/internal/vault/service.go"
click node_vault_crypto "https://github.com/newstatue/evorsio/blob/main/internal/vault/vault.go"
click node_password_generator "https://github.com/newstatue/evorsio/blob/main/internal/vault/generator.go"
click node_resource_model "https://github.com/newstatue/evorsio/blob/main/internal/resource/model.go"
click node_app "https://github.com/newstatue/evorsio/blob/main/main.go"
click node_sqlite "https://github.com/newstatue/evorsio/blob/main/internal/dbgen/db.go"
click node_filer_client "https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/client.go"
click node_seaweed_manager "https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/manager.go"
click node_seaweed_server "https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/server.go"

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_ui,node_dashboard,node_drive_page,node_vault_page,node_drive_binding,node_vault_binding,node_user toneBlue
class node_drive_service,node_drive_repo,node_vault_service,node_vault_crypto,node_password_generator,node_resource_model toneAmber
class node_sqlite,node_filer_client,node_seaweed_manager,node_seaweed_server toneMint
class node_app toneRose
class node_seaweedfs toneIndigo
```

## Components

### Desktop UI

- [React app](https://github.com/newstatue/evorsio/blob/main/frontend/src/main.tsx): `frontend/src/main.tsx`
- [Dashboard shell](https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/route.tsx): `frontend/src/routes/dash/route.tsx`
- [Drive page](https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/drive/index.tsx): `frontend/src/routes/dash/drive/index.tsx`
- [Vault page](https://github.com/newstatue/evorsio/blob/main/frontend/src/routes/dash/vault/index.tsx): `frontend/src/routes/dash/vault/index.tsx`
- [Drive binding](https://github.com/newstatue/evorsio/blob/main/frontend/bindings/github.com/newstatue/evorsio/internal/drive/service.ts): `frontend/bindings/github.com/newstatue/evorsio/internal/drive/service.ts`
- [Vault binding](https://github.com/newstatue/evorsio/blob/main/frontend/bindings/github.com/newstatue/evorsio/internal/vault/service.ts): `frontend/bindings/github.com/newstatue/evorsio/internal/vault/service.ts`

### Domain services

- [Drive service](https://github.com/newstatue/evorsio/blob/main/internal/drive/service.go): `internal/drive/service.go`
- [Drive repository](https://github.com/newstatue/evorsio/blob/main/internal/drive/repository.go): `internal/drive/repository.go`
- [Vault service](https://github.com/newstatue/evorsio/blob/main/internal/vault/service.go): `internal/vault/service.go`
- [Vault encryption](https://github.com/newstatue/evorsio/blob/main/internal/vault/vault.go): `internal/vault/vault.go`
- [Password generator](https://github.com/newstatue/evorsio/blob/main/internal/vault/generator.go): `internal/vault/generator.go`
- [Resource metadata](https://github.com/newstatue/evorsio/blob/main/internal/resource/model.go): `internal/resource/model.go`

### Storage

- [SQLite database](https://github.com/newstatue/evorsio/blob/main/internal/dbgen/db.go): `internal/dbgen/db.go`
- [Filer client](https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/client.go): `internal/seaweedfs/client.go`
- [Seaweed manager](https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/manager.go): `internal/seaweedfs/manager.go`
- [Seaweed processes](https://github.com/newstatue/evorsio/blob/main/internal/seaweedfs/server.go): `internal/seaweedfs/server.go`

### App runtime

- [Wails application](https://github.com/newstatue/evorsio/blob/main/main.go): `main.go`

### Other components

- **User**
- **SeaweedFS filer**

## Connections

- User → React app: uses
- React app → Dashboard shell: routes to
- Wails application → Drive service: registers
- Wails application → Vault service: registers
- Wails application → SQLite database: opens and migrates
- Wails application → Seaweed manager: starts
- Seaweed manager → Seaweed processes: starts
- Seaweed manager → Filer client: creates
- Filer client → SeaweedFS filer: gRPC calls
- Drive service → Filer client: lists entries
- Vault service → Filer client: reads and writes
- Vault service → Vault encryption: encrypts and decrypts
- Vault service → Password generator: generates passwords
- Vault service → Resource metadata: uses metadata
- Drive service → Drive repository: receives repository
