# axelbeary/inkglean architecture

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

## Overview

Inkglean is an artist-commission management platform: clients discover an artist, configure and submit a commission, then follow its progress and download delivery; artists manage pricing, queues, workflow, payments, and files. The web client and Fastify service form the documented public/artist platform, with SQLite-backed state and upload storage. The tree also contains a desktop companion and shared UI utilities. Some domain links follow README capabilities and module boundaries; unsampled implementation wiring is left unspecified.

Main entry points: [`web/src/api/index.ts`](https://github.com/axelbeary/inkglean/blob/master/web/src/api/index.ts) (Web API client), [`server/src/db/connection.ts`](https://github.com/axelbeary/inkglean/blob/master/server/src/db/connection.ts) (SQLite database), [`web/src/views/client/TrackOrder.vue`](https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/TrackOrder.vue) (Order tracking), [`server/src/features/order/order-action.routes.ts`](https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order-action.routes.ts) (Order actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_public_site["Artist storefront<br/>[ArtistHome.vue]"]
  node_order_form["Commission form<br/>[OrderForm.vue]"]
  node_client_tracking["Order tracking<br/>[TrackOrder.vue]"]
  node_artist_console["Artist workspace<br/>[Dashboard.vue]"]
  node_artist_orders["Order management<br/>[OrderDetail.vue]"]
  node_artist_queue["Queue board<br/>[QueueBoard.vue]"]
  node_web_api["Web API client<br/>[index.ts]"]
end

subgraph group_domain["Commission services"]
  node_server["HTTP application<br/>[app.ts]"]
  node_artist_routes["Artist endpoints<br/>[artist.routes.ts]"]
  node_order_routes["Order endpoints<br/>[order.routes.ts]"]
  node_order_actions["Order actions"]
  node_order_service["Order lifecycle<br/>[order.service.ts]"]
  node_queue_service["Queue management"]
  node_pricing["Pricing engine<br/>[pricing-engine.ts]"]
  node_uploads["Upload and delivery<br/>[upload.routes.ts]"]
  node_tracking["Order tracking<br/>[tracking.routes.ts]"]
end

subgraph group_platform["Platform services"]
  node_auth["Authentication<br/>[auth.routes.ts]"]
  node_guestbook["Guestbook"]
  node_compliance["Reports and moderation"]
  node_admin_greetings["Greeting management"]
  node_database[("SQLite database<br/>[connection.ts]")]
end

subgraph group_local["Desktop companion"]
  node_desktop_home["Desktop home<br/>[Home.vue]"]
  node_desktop_schedule["Desktop schedule<br/>[ScheduleView.vue]"]
  node_desktop_stores["Desktop local state<br/>[schedule.ts]"]
end

node_client(("Client"))
node_artist(("Artist"))
node_admin(("Administrator"))

node_client -->|"browses"| node_public_site
node_public_site -->|"loads profile"| node_web_api
node_client -->|"submits request"| node_order_form
node_order_form -->|"sends order"| node_web_api
node_client -->|"checks progress"| node_client_tracking
node_client_tracking -->|"requests status"| node_web_api
node_artist -->|"manages work"| node_artist_console
node_artist -->|"updates orders"| node_artist_orders
node_artist -->|"organizes queue"| node_artist_queue
node_artist_console -->|"loads workspace"| node_web_api
node_artist_orders -->|"sends updates"| node_web_api
node_artist_queue -->|"updates order"| node_web_api
node_web_api -->|"HTTP requests"| node_server
node_server -->|"registers routes"| node_artist_routes
node_server -->|"registers routes"| node_order_routes
node_order_routes -->|"delegates orders"| node_order_service
node_order_actions -->|"changes orders"| node_order_service
node_order_actions -->|"manages queue"| node_queue_service
node_order_actions -->|"records payments"| node_database
node_artist_routes -->|"reads artist data"| node_database
node_order_service -->|"persists orders"| node_database
node_queue_service -->|"persists queue"| node_database
node_order_form -.->|"configures price"| node_pricing
node_order_routes -.->|"uses pricing"| node_pricing
node_artist -->|"uploads artwork"| node_uploads
node_uploads -->|"serves delivery"| node_client_tracking
node_client_tracking -->|"looks up status"| node_tracking
node_tracking -->|"records events"| node_database
node_web_api -->|"authenticates"| node_auth
node_public_site -->|"shows messages"| node_guestbook
node_admin -->|"reviews reports"| node_compliance
node_admin -->|"manages greetings"| node_admin_greetings
node_desktop_home -->|"reads local state"| node_desktop_stores
node_desktop_schedule -->|"updates schedule"| node_desktop_stores

click node_public_site "https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/ArtistHome.vue"
click node_order_form "https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/OrderForm.vue"
click node_client_tracking "https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/TrackOrder.vue"
click node_artist_console "https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/Dashboard.vue"
click node_artist_orders "https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/OrderDetail.vue"
click node_artist_queue "https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/QueueBoard.vue"
click node_web_api "https://github.com/axelbeary/inkglean/blob/master/web/src/api/index.ts"
click node_server "https://github.com/axelbeary/inkglean/blob/master/server/src/app.ts"
click node_artist_routes "https://github.com/axelbeary/inkglean/blob/master/server/src/features/artist/artist.routes.ts"
click node_order_routes "https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order.routes.ts"
click node_order_actions "https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order-action.routes.ts"
click node_order_service "https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order.service.ts"
click node_queue_service "https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order-queue.service.ts"
click node_pricing "https://github.com/axelbeary/inkglean/blob/master/server/src/features/pricing/pricing-engine.ts"
click node_uploads "https://github.com/axelbeary/inkglean/blob/master/server/src/features/upload/upload.routes.ts"
click node_tracking "https://github.com/axelbeary/inkglean/blob/master/server/src/features/tracking/tracking.routes.ts"
click node_auth "https://github.com/axelbeary/inkglean/blob/master/server/src/features/auth/auth.routes.ts"
click node_guestbook "https://github.com/axelbeary/inkglean/blob/master/server/src/features/guestbook/guestbook.routes.ts"
click node_compliance "https://github.com/axelbeary/inkglean/blob/master/server/src/features/compliance/compliance.routes.ts"
click node_admin_greetings "https://github.com/axelbeary/inkglean/blob/master/server/src/features/admin/admin-greeting.routes.ts"
click node_database "https://github.com/axelbeary/inkglean/blob/master/server/src/db/connection.ts"
click node_desktop_home "https://github.com/axelbeary/inkglean/blob/master/desktop/src/views/Home.vue"
click node_desktop_schedule "https://github.com/axelbeary/inkglean/blob/master/desktop/src/views/ScheduleView.vue"
click node_desktop_stores "https://github.com/axelbeary/inkglean/blob/master/desktop/src/stores/schedule.ts"

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_public_site,node_order_form,node_client_tracking,node_artist_console,node_artist_orders,node_artist_queue,node_web_api,node_client toneBlue
class node_server,node_artist_routes,node_order_routes,node_order_actions,node_order_service,node_queue_service,node_pricing,node_uploads,node_tracking toneAmber
class node_auth,node_guestbook,node_compliance,node_admin_greetings,node_database toneMint
class node_desktop_home,node_desktop_schedule,node_desktop_stores toneRose
class node_artist,node_admin toneIndigo
```

## Components

### Web experience

- [Artist storefront](https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/ArtistHome.vue): `web/src/views/client/ArtistHome.vue`
- [Commission form](https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/OrderForm.vue): `web/src/views/client/OrderForm.vue`
- [Order tracking](https://github.com/axelbeary/inkglean/blob/master/web/src/views/client/TrackOrder.vue): `web/src/views/client/TrackOrder.vue`
- [Artist workspace](https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/Dashboard.vue): `web/src/views/artist/Dashboard.vue`
- [Order management](https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/OrderDetail.vue): `web/src/views/artist/OrderDetail.vue`
- [Queue board](https://github.com/axelbeary/inkglean/blob/master/web/src/views/artist/QueueBoard.vue): `web/src/views/artist/QueueBoard.vue`
- [Web API client](https://github.com/axelbeary/inkglean/blob/master/web/src/api/index.ts): `web/src/api/index.ts`

### Commission services

- [HTTP application](https://github.com/axelbeary/inkglean/blob/master/server/src/app.ts): `server/src/app.ts`
- [Artist endpoints](https://github.com/axelbeary/inkglean/blob/master/server/src/features/artist/artist.routes.ts): `server/src/features/artist/artist.routes.ts`
- [Order endpoints](https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order.routes.ts): `server/src/features/order/order.routes.ts`
- [Order actions](https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order-action.routes.ts): `server/src/features/order/order-action.routes.ts`
- [Order lifecycle](https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order.service.ts): `server/src/features/order/order.service.ts`
- [Queue management](https://github.com/axelbeary/inkglean/blob/master/server/src/features/order/order-queue.service.ts): `server/src/features/order/order-queue.service.ts`
- [Pricing engine](https://github.com/axelbeary/inkglean/blob/master/server/src/features/pricing/pricing-engine.ts): `server/src/features/pricing/pricing-engine.ts`
- [Upload and delivery](https://github.com/axelbeary/inkglean/blob/master/server/src/features/upload/upload.routes.ts): `server/src/features/upload/upload.routes.ts`
- [Order tracking](https://github.com/axelbeary/inkglean/blob/master/server/src/features/tracking/tracking.routes.ts): `server/src/features/tracking/tracking.routes.ts`

### Platform services

- [Authentication](https://github.com/axelbeary/inkglean/blob/master/server/src/features/auth/auth.routes.ts): `server/src/features/auth/auth.routes.ts`
- [Guestbook](https://github.com/axelbeary/inkglean/blob/master/server/src/features/guestbook/guestbook.routes.ts): `server/src/features/guestbook/guestbook.routes.ts`
- [Reports and moderation](https://github.com/axelbeary/inkglean/blob/master/server/src/features/compliance/compliance.routes.ts): `server/src/features/compliance/compliance.routes.ts`
- [Greeting management](https://github.com/axelbeary/inkglean/blob/master/server/src/features/admin/admin-greeting.routes.ts): `server/src/features/admin/admin-greeting.routes.ts`
- [SQLite database](https://github.com/axelbeary/inkglean/blob/master/server/src/db/connection.ts): `server/src/db/connection.ts`

### Desktop companion

- [Desktop home](https://github.com/axelbeary/inkglean/blob/master/desktop/src/views/Home.vue): `desktop/src/views/Home.vue`
- [Desktop schedule](https://github.com/axelbeary/inkglean/blob/master/desktop/src/views/ScheduleView.vue): `desktop/src/views/ScheduleView.vue`
- [Desktop local state](https://github.com/axelbeary/inkglean/blob/master/desktop/src/stores/schedule.ts): `desktop/src/stores/schedule.ts`

### Other components

- **Client**
- **Artist**
- **Administrator**

## Connections

- Client → Artist storefront: browses
- Artist storefront → Web API client: loads profile
- Client → Commission form: submits request
- Commission form → Web API client: sends order
- Client → Order tracking: checks progress
- Order tracking → Web API client: requests status
- Artist → Artist workspace: manages work
- Artist → Order management: updates orders
- Artist → Queue board: organizes queue
- Artist workspace → Web API client: loads workspace
- Order management → Web API client: sends updates
- Queue board → Web API client: updates order
- Web API client → HTTP application: HTTP requests
- HTTP application → Artist endpoints: registers routes
- HTTP application → Order endpoints: registers routes
- Order endpoints → Order lifecycle: delegates orders
- Order actions → Order lifecycle: changes orders
- Order actions → Queue management: manages queue
- Order actions → SQLite database: records payments
- Artist endpoints → SQLite database: reads artist data
- Order lifecycle → SQLite database: persists orders
- Queue management → SQLite database: persists queue
- Commission form → Pricing engine: configures price
- Order endpoints → Pricing engine: uses pricing
- Artist → Upload and delivery: uploads artwork
- Upload and delivery → Order tracking: serves delivery
- Order tracking → Order tracking: looks up status
- Order tracking → SQLite database: records events
- Web API client → Authentication: authenticates
- Artist storefront → Guestbook: shows messages
- Administrator → Reports and moderation: reviews reports
- Administrator → Greeting management: manages greetings
- Desktop home → Desktop local state: reads local state
- Desktop schedule → Desktop local state: updates schedule
