# supercatzes-collab/gitwise architecture

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

- Interactive diagram: https://gitdiagram.com/supercatzes-collab/gitwise
- Repository: https://github.com/supercatzes-collab/gitwise

## Overview

Gitwise is a Dioxus application for sharing research items and handling contribution proposals. The main workflow is to upload an item, browse the library, view or download it, submit a contribution proposal, and review incoming proposals; the app also exposes account, profile, watching, and request-management pages. SQLite provides application state, while shared data types and UI components support the pages. Some page implementations were not excerpted, so their roles are based on the source index and route declarations; edges are limited to relationships those sources show.

Main entry points: [`src/route.rs`](https://github.com/supercatzes-collab/gitwise/blob/main/src/route.rs) (Route dispatch), [`src/database.rs`](https://github.com/supercatzes-collab/gitwise/blob/main/src/database.rs) (SQLite database), [`src/components/general_components.rs`](https://github.com/supercatzes-collab/gitwise/blob/main/src/components/general_components.rs) (Shared UI components), [`src/main.rs`](https://github.com/supercatzes-collab/gitwise/blob/main/src/main.rs) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and navigation"]
  node_app_entry["App entry<br/>[main.rs]"]
  node_routes["Route dispatch<br/>[route.rs]"]
  node_navbar["Navigation bar<br/>[navbar.rs]"]
end

subgraph group_research["Research items"]
  node_home["Home<br/>[home.rs]"]
  node_library["Research library<br/>[library.rs]"]
  node_upload["Upload item<br/>[upload.rs]"]
  node_download["Item details<br/>[download.rs]"]
end

subgraph group_proposals["Contribution workflow"]
  node_contribute["Submit contribution<br/>[contribute.rs]"]
  node_incoming["Review contribution"]
  node_pending["Pending requests<br/>[pending.rs]"]
  node_outgoing["Outgoing requests"]
end

subgraph group_accounts["Accounts and activity"]
  node_login["Login<br/>[login.rs]"]
  node_signin["Sign in<br/>[signin.rs]"]
  node_settings["Account settings<br/>[logout.rs]"]
  node_profile["Profiles<br/>[profile.rs]"]
  node_watching["Watching updates<br/>[watching.rs]"]
end

subgraph group_core["Shared runtime"]
  node_database[("SQLite database<br/>[database.rs]")]
  node_ui_components["Shared UI components"]
  node_shared_data["Shared data types"]
end

node_user(("User"))

node_user -->|"opens"| node_app_entry
node_app_entry -->|"initializes"| node_database
node_app_entry -->|"launches router"| node_routes
node_routes -->|"uses layout"| node_navbar
node_navbar -->|"navigates"| node_routes
node_routes -->|"dispatches"| node_home
node_routes -->|"dispatches"| node_library
node_routes -->|"dispatches"| node_upload
node_routes -->|"dispatches"| node_download
node_routes -->|"dispatches"| node_contribute
node_routes -->|"dispatches"| node_incoming
node_routes -->|"dispatches"| node_pending
node_routes -->|"dispatches"| node_outgoing
node_routes -->|"dispatches"| node_login
node_routes -->|"dispatches"| node_signin
node_routes -->|"dispatches"| node_settings
node_routes -->|"dispatches"| node_profile
node_routes -->|"dispatches"| node_watching
node_upload -->|"inserts item"| node_database
node_upload -->|"creates item"| node_shared_data
node_download -->|"reads and updates"| node_database
node_incoming -->|"reads and updates"| node_database
node_library -->|"queries items"| node_database
node_contribute -->|"uses data store"| node_database
node_pending -->|"queries requests"| node_database
node_outgoing -->|"queries requests"| node_database
node_watching -->|"queries watched items"| node_database
node_login -->|"uses account data"| node_database
node_signin -->|"uses account data"| node_database
node_settings -->|"uses account data"| node_database
node_profile -.->|"uses profile data"| node_database
node_home -->|"renders"| node_ui_components
node_library -->|"uses components"| node_ui_components
node_download -->|"renders"| node_ui_components
node_ui_components -->|"queries profile and activity"| node_database
node_ui_components -->|"uses types"| node_shared_data
node_database -->|"maps item records"| node_shared_data

click node_app_entry "https://github.com/supercatzes-collab/gitwise/blob/main/src/main.rs"
click node_routes "https://github.com/supercatzes-collab/gitwise/blob/main/src/route.rs"
click node_navbar "https://github.com/supercatzes-collab/gitwise/blob/main/src/navbar.rs"
click node_home "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/home.rs"
click node_library "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/library.rs"
click node_upload "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/upload.rs"
click node_download "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/download.rs"
click node_contribute "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/contribute.rs"
click node_incoming "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/view_incoming_request.rs"
click node_pending "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/pending.rs"
click node_outgoing "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/outgoing_requests.rs"
click node_login "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/login.rs"
click node_signin "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/signin.rs"
click node_settings "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/logout.rs"
click node_profile "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/profile.rs"
click node_watching "https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/watching.rs"
click node_database "https://github.com/supercatzes-collab/gitwise/blob/main/src/database.rs"
click node_ui_components "https://github.com/supercatzes-collab/gitwise/blob/main/src/components/general_components.rs"
click node_shared_data "https://github.com/supercatzes-collab/gitwise/blob/main/src/components/shared_data_components.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_app_entry,node_routes,node_navbar,node_user toneBlue
class node_home,node_library,node_upload,node_download toneAmber
class node_contribute,node_incoming,node_pending,node_outgoing toneMint
class node_login,node_signin,node_settings,node_profile,node_watching toneRose
class node_database,node_ui_components,node_shared_data toneIndigo
```

## Components

### App and navigation

- [App entry](https://github.com/supercatzes-collab/gitwise/blob/main/src/main.rs): `src/main.rs`
- [Route dispatch](https://github.com/supercatzes-collab/gitwise/blob/main/src/route.rs): `src/route.rs`
- [Navigation bar](https://github.com/supercatzes-collab/gitwise/blob/main/src/navbar.rs): `src/navbar.rs`

### Research items

- [Home](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/home.rs): `src/pages/home.rs`
- [Research library](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/library.rs): `src/pages/library.rs`
- [Upload item](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/upload.rs): `src/pages/upload.rs`
- [Item details](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/download.rs): `src/pages/download.rs`

### Contribution workflow

- [Submit contribution](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/contribute.rs): `src/pages/contribute.rs`
- [Review contribution](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/view_incoming_request.rs): `src/pages/view_incoming_request.rs`
- [Pending requests](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/pending.rs): `src/pages/pending.rs`
- [Outgoing requests](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/outgoing_requests.rs): `src/pages/outgoing_requests.rs`

### Accounts and activity

- [Login](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/login.rs): `src/pages/login.rs`
- [Sign in](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/signin.rs): `src/pages/signin.rs`
- [Account settings](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/logout.rs): `src/pages/logout.rs`
- [Profiles](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/profile.rs): `src/pages/profile.rs`
- [Watching updates](https://github.com/supercatzes-collab/gitwise/blob/main/src/pages/watching.rs): `src/pages/watching.rs`

### Shared runtime

- [SQLite database](https://github.com/supercatzes-collab/gitwise/blob/main/src/database.rs): `src/database.rs`
- [Shared UI components](https://github.com/supercatzes-collab/gitwise/blob/main/src/components/general_components.rs): `src/components/general_components.rs`
- [Shared data types](https://github.com/supercatzes-collab/gitwise/blob/main/src/components/shared_data_components.rs): `src/components/shared_data_components.rs`

### Other components

- **User**

## Connections

- User → App entry: opens
- App entry → SQLite database: initializes (evidence: `src/main.rs`)
- App entry → Route dispatch: launches router (evidence: `src/main.rs`)
- Route dispatch → Navigation bar: uses layout (evidence: `src/route.rs`)
- Navigation bar → Route dispatch: navigates (evidence: `src/navbar.rs`)
- Route dispatch → Home: dispatches (evidence: `src/route.rs`)
- Route dispatch → Research library: dispatches (evidence: `src/route.rs`)
- Route dispatch → Upload item: dispatches (evidence: `src/route.rs`)
- Route dispatch → Item details: dispatches (evidence: `src/route.rs`)
- Route dispatch → Submit contribution: dispatches (evidence: `src/route.rs`)
- Route dispatch → Review contribution: dispatches (evidence: `src/route.rs`)
- Route dispatch → Pending requests: dispatches (evidence: `src/route.rs`)
- Route dispatch → Outgoing requests: dispatches (evidence: `src/route.rs`)
- Route dispatch → Login: dispatches (evidence: `src/route.rs`)
- Route dispatch → Sign in: dispatches (evidence: `src/route.rs`)
- Route dispatch → Account settings: dispatches (evidence: `src/route.rs`)
- Route dispatch → Profiles: dispatches (evidence: `src/route.rs`)
- Route dispatch → Watching updates: dispatches (evidence: `src/route.rs`)
- Upload item → SQLite database: inserts item (evidence: `src/pages/upload.rs`)
- Upload item → Shared data types: creates item (evidence: `src/pages/upload.rs`)
- Item details → SQLite database: reads and updates (evidence: `src/pages/download.rs`)
- Review contribution → SQLite database: reads and updates (evidence: `src/pages/view_incoming_request.rs`)
- Research library → SQLite database: queries items (evidence: `src/pages/library.rs`)
- Submit contribution → SQLite database: uses data store (evidence: `src/pages/contribute.rs`)
- Pending requests → SQLite database: queries requests (evidence: `src/pages/pending.rs`)
- Outgoing requests → SQLite database: queries requests (evidence: `src/pages/outgoing_requests.rs`)
- Watching updates → SQLite database: queries watched items (evidence: `src/pages/watching.rs`)
- Login → SQLite database: uses account data (evidence: `src/pages/login.rs`)
- Sign in → SQLite database: uses account data (evidence: `src/pages/signin.rs`)
- Account settings → SQLite database: uses account data (evidence: `src/pages/logout.rs`)
- Profiles → SQLite database: uses profile data
- Home → Shared UI components: renders (evidence: `src/pages/home.rs`)
- Research library → Shared UI components: uses components (evidence: `src/pages/library.rs`)
- Item details → Shared UI components: renders (evidence: `src/pages/download.rs`)
- Shared UI components → SQLite database: queries profile and activity (evidence: `src/components/general_components.rs`)
- Shared UI components → Shared data types: uses types (evidence: `src/components/general_components.rs`)
- SQLite database → Shared data types: maps item records (evidence: `src/database.rs`)
