Dingo Dream

Package Table

execute the shell command "tree gameserver" and read all the go files, skip the tests. 
find out what is the purpose of each go package and which other packages are imported.
But I am only interested in custom packages and 3rd party library. stdlib packages like "fmt" are not interesting to me in this context.
In @README.md before the table "Go Server Structs Reference" add table "Package Structure" with 3 columns: 
1. package name
2. packages used (imports)
3. description 

For 3rd party packages, summarize the whole library as one "virtual package" consisting of github hanlde and library name like "julienschmidt/httprouter"
Ommit the host like github.com. github.com/gorilla/websocket should be gorilla/websocket
Custom packages like github.com/4hel/paper/gameserver/internal/types should be internal/types

Structs table

execute "tree gameserver" and read the go files and indentify all structs
At the beginning of @README.md add table of all the structs with the columns:
- package
- name
- sourcefile
- purpose

Package Graph

From @README.md use the “Package Structure” and “Go Server Structs Reference” to create a mermaid diagram.
Every Package should be subgraph and imports should be expressed as directed edges between the subgraphs.
Inside every subgraph there should be the structs with their fields as a box.
every subgraph should have a light yellow background color and label of the package name in black color
the struct boxes should have a green color for custom packages and blue for stdlib and and grey for 3rd party.

struct of stdlib or 3rd party that are used / imported by a custom package should be placed inside the custom package subgraph.
So every for every custom package we have one subgraph and not more.

when there are a lot structs of the same kind, like different message structs, summarize them. like "Message Structs".

Do not display the methods of a struct. only the fields.

All elements inside a subgraph should have the layout left to right. add "direction LR" and invisible links like:
"Server ~~~ httpServer ~~~ ServeMux ~~~ TLSConfig ~~~ Context ~~~ Signal"
But the subgraphs should be rendered top to bottom, vertically.

if the same stdlib package is used in multiple custom packages. E.g. "websocket.Conn" then do not add edges from every custom package to "websocket.Conn" but instead add "websocket.Conn" redundantly to every custom package which is using it. 

use classdef and class for style definitions.

To be sure you do not miss anything, execute “tree gameserver” and read the go files.
Add the mermaid diagram to @README.md below the “Go Server Structs Reference”
if anything is not clear, ask me

Component Dependency Graph

TODO: use classdef and class for style definitions.

There still has to be some manual tweeking of the diagram.


read @README.md and execute the shell command "tree cmd internal"
I want you to add a mermaid diagram "Component Dependency Graph" at the beginning of @README.md
read all the go source files and have in mind the concept of spring beans in a java application.
So data classes / structs are not relevant but the structs which are application components.
Put the components into the categories:
- Transport Layer 
- Application Layer (including helpers components) 
- Data Access Layer
- Infrastructure (like db connection pool and application logger) 

Summarise all the http middlewares into one middleware chain component.

For the coloring we want to distinguish stdlib components, custom components and 3rd party components.

here is an example graph:


```mermaid

graph TB
subgraph Infrastructure ["Infrastructure"]
DB["Database Connectionsql.DB"]
EFS["Embedded FileSystemui.Files"]
LOG["Loggerslog.Logger"]
end

subgraph DataAccessLayer ["Data Access Layer"]
    SM["<br/>SnippetModel<br/>models.SnippetModel"] --> DB
    UM["<br/>UserModel<br/>models.UserModel"] --> DB
    STORE["<br/>Session Store<br/>mysqlstore.Store"] --> DB
end

subgraph ApplicationLayer ["Application Layer"]
    CFG["<br/>Config<br/>main.config"]
    SESS["<br/>SessionManager<br/>scs.SessionManager"] --> STORE
    TC["<br/>Template Cache<br/>template.Template"]
    FD["<br/>Form Decoder<br/>form.Decoder"]
    VAL["<br/>Validator<br/>validator.Validator"]
    APP["<br/>Application with HTTP Handlers<br/>main.application"]
    APP --> SM
    APP --> UM
    APP --> SESS
    APP --> TC
    APP --> FD
    APP -.-> VAL
    APP --> CFG
end

subgraph TransportLayer ["Transport Layer"]
    SERVER["<br/>HTTP Server<br/>http.Server"] --> APP
    MW["<br/>Middleware Chain<br/>alice.Chain"] --> SESS
    MW --> APP
end

subgraph Legend ["Legend"]
    STDLIB["<br/>stdlib"] ~~~ CUSTOM["<br/>custom"] ~~~ THIRDPARTY["<br/>3rd party"]
end


%% Color Legend:
%% Green: Internal Application Components
%% Blue: Go Standard Library Components  
%% Gray: External Library Components (3rd party dependencies)
%% Gray: Internal Domain/Data Components

style APP fill:#2e7d32,stroke:#1b5e20,stroke-width:3px,color:#ffffff
style DB fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#ffffff
style SERVER fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#ffffff
style LOG fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#ffffff
style EFS fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style SESS fill:#4d4d4d,stroke:#666666,stroke-width:2px,color:#ffffff
style TC fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style SM fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style UM fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style STORE fill:#4d4d4d,stroke:#666666,stroke-width:2px,color:#ffffff
style VAL fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style FD fill:#4d4d4d,stroke:#666666,stroke-width:2px,color:#ffffff
style CFG fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style MW fill:#4d4d4d,stroke:#666666,stroke-width:2px,color:#ffffff
style STDLIB fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#ffffff
style CUSTOM fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#ffffff
style THIRDPARTY fill:#4d4d4d,stroke:#666666,stroke-width:2px,color:#ffffff

%% Subgraph styling with light yellow background and black text
style Infrastructure fill:#fff7d9,stroke:#333,stroke-width:2px,color:#000000
style DataAccessLayer fill:#fff7d9,stroke:#333,stroke-width:2px,color:#000000
style ApplicationLayer fill:#fff7d9,stroke:#333,stroke-width:2px,color:#000000
style TransportLayer fill:#fff7d9,stroke:#333,stroke-width:2px,color:#000000
style Legend fill:#fff7d9,stroke:#333,stroke-width:2px,color:#000000