# gofurry/gofurry-nav-site architecture

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

- Interactive diagram: https://gitdiagram.com/gofurry/gofurry-nav-site
- Repository: https://github.com/gofurry/gofurry-nav-site

## Overview

GoFurry is a multi-service content discovery platform: people browse navigation and game information, while collectors acquire and project source data for the backends to serve. Admin provides operational management, collaboration, audit and asset publishing. The README documents the service boundaries and managed-asset delivery; sampled collector code confirms scheduled fact/metric reconciliation and database projection. Most service internals were not sampled, so detailed API-to-storage and frontend call relationships are omitted rather than inferred.

Main entry points: [`apps/cn/admin`](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin) (Admin service), [`apps/cn/nav-web`](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-web) (Navigation site), [`apps/cn/admin/internal/app/navadmin/controller/assets.go`](https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/admin/internal/app/navadmin/controller/assets.go) (Managed assets), [`apps/cn/nav-backend`](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-backend) (Navigation API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public discovery"]
  node_navweb["Navigation site"]
  node_navapi["Navigation API"]
  node_gameapi["Game API"]
end

subgraph group_collection["Data collection"]
  node_navcollect["Navigation collector"]
  node_gamecollect["Game collector"]
  node_navfacts["Nav fact projection<br/>[engine.go]"]
  node_gamefacts["Game fact projection<br/>[engine.go]"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin console"]
  node_adminapi["Admin service"]
  node_collab["Collaboration"]
  node_auth["Admin identity"]
  node_cloudops["Cloud operations"]
  node_managedassets["Managed assets<br/>[assets.go]"]
end

subgraph group_platform["Shared platform"]
  node_gamefactsdb[("Game database")]
  node_navfactsdb[("Nav database")]
end

node_visitor(("Site visitor"))
node_steam{{"Steam"}}
node_cos{{"COS Primary"}}
node_r2{{"R2 mirror"}}
node_redis[("Redis")]

node_visitor -->|"browses"| node_navweb
node_navweb -.->|"requests navigation"| node_navapi
node_navweb -.->|"requests game data"| node_gameapi
node_navcollect -->|"projects facts"| node_navfacts
node_gamecollect -->|"projects facts"| node_gamefacts
node_steam -->|"provides source data"| node_gamecollect
node_navfacts -->|"writes projections"| node_navfactsdb
node_gamefacts -->|"writes projections"| node_gamefactsdb
node_adminui -.->|"uses"| node_adminapi
node_adminapi -.->|"provides identity"| node_auth
node_adminapi -.->|"provides collaboration"| node_collab
node_adminapi -.->|"provides operations"| node_cloudops
node_adminapi -->|"publishes assets"| node_managedassets
node_managedassets -->|"publishes primary"| node_cos
node_managedassets -.->|"mirrors best-effort"| node_r2
node_navapi -.->|"reads navigation data"| node_navfactsdb
node_gameapi -.->|"reads game data"| node_gamefactsdb
node_adminapi -.->|"uses cache"| node_redis

click node_navweb "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-web"
click node_navapi "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-backend"
click node_gameapi "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-backend"
click node_navcollect "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-collector"
click node_gamecollect "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-collector"
click node_navfacts "https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/nav-collector/collector/facts/engine.go"
click node_gamefacts "https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/game-collector/collector/facts/engine.go"
click node_adminui "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/react/src"
click node_adminapi "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin"
click node_collab "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/collaboration"
click node_auth "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/auth"
click node_cloudops "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/cloudops"
click node_managedassets "https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/admin/internal/app/navadmin/controller/assets.go"
click node_gamefactsdb "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-collector/internal/db/game/sqlc"
click node_navfactsdb "https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-backend/internal/db/nav/sqlc"

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_navweb,node_navapi,node_gameapi toneBlue
class node_navcollect,node_gamecollect,node_navfacts,node_gamefacts,node_redis toneAmber
class node_adminui,node_adminapi,node_collab,node_auth,node_cloudops,node_managedassets toneMint
class node_gamefactsdb,node_navfactsdb toneRose
class node_visitor,node_steam,node_cos,node_r2 toneIndigo
```

## Components

### Public discovery

- [Navigation site](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-web): `apps/cn/nav-web`
- [Navigation API](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-backend): `apps/cn/nav-backend`
- [Game API](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-backend): `apps/cn/game-backend`

### Data collection

- [Navigation collector](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-collector): `apps/cn/nav-collector`
- [Game collector](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-collector): `apps/cn/game-collector`
- [Nav fact projection](https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/nav-collector/collector/facts/engine.go): `apps/cn/nav-collector/collector/facts/engine.go`
- [Game fact projection](https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/game-collector/collector/facts/engine.go): `apps/cn/game-collector/collector/facts/engine.go`

### Administration

- [Admin console](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/react/src): `apps/cn/admin/react/src`
- [Admin service](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin): `apps/cn/admin`
- [Collaboration](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/collaboration): `apps/cn/admin/internal/app/collaboration`
- [Admin identity](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/auth): `apps/cn/admin/internal/app/auth`
- [Cloud operations](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/admin/internal/app/cloudops): `apps/cn/admin/internal/app/cloudops`
- [Managed assets](https://github.com/gofurry/gofurry-nav-site/blob/main/apps/cn/admin/internal/app/navadmin/controller/assets.go): `apps/cn/admin/internal/app/navadmin/controller/assets.go`

### Shared platform

- [Game database](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/game-collector/internal/db/game/sqlc): `apps/cn/game-collector/internal/db/game/sqlc`
- [Nav database](https://github.com/gofurry/gofurry-nav-site/tree/main/apps/cn/nav-backend/internal/db/nav/sqlc): `apps/cn/nav-backend/internal/db/nav/sqlc`

### Other components

- **Site visitor**
- **Steam**
- **COS Primary**
- **R2 mirror**
- **Redis**

## Connections

- Site visitor → Navigation site: browses (evidence: `README.md`)
- Navigation site → Navigation API: requests navigation
- Navigation site → Game API: requests game data
- Navigation collector → Nav fact projection: projects facts (evidence: `apps/cn/nav-collector/collector/facts/engine.go`)
- Game collector → Game fact projection: projects facts (evidence: `apps/cn/game-collector/collector/facts/engine.go`)
- Steam → Game collector: provides source data (evidence: `README.md`)
- Nav fact projection → Nav database: writes projections (evidence: `apps/cn/nav-collector/collector/facts/engine.go`)
- Game fact projection → Game database: writes projections (evidence: `apps/cn/game-collector/collector/facts/engine.go`)
- Admin console → Admin service: uses
- Admin service → Admin identity: provides identity
- Admin service → Collaboration: provides collaboration
- Admin service → Cloud operations: provides operations
- Admin service → Managed assets: publishes assets (evidence: `README.md`)
- Managed assets → COS Primary: publishes primary (evidence: `README.md`)
- Managed assets → R2 mirror: mirrors best-effort (evidence: `README.md`)
- Navigation API → Nav database: reads navigation data
- Game API → Game database: reads game data
- Admin service → Redis: uses cache
