# david1ddt/atuu architecture

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

## Overview

The server contains user-token endpoints and an in-memory, socket-driven room controller with a card deck; the supplied room-controller excerpt is incomplete, so its event wiring and game lifecycle cannot be mapped reliably. The Expo client is an uncustomized welcome scaffold, and no client-to-server integration is evidenced. The user model and route behavior are represented from their paths and sampled imports, but their implementations were not sampled.

Main entry points: [`server/src/modules/user/user.routes.ts`](https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.routes.ts) (User routes), [`server/src/modules/user/user.controller.ts`](https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.controller.ts) (Create user), [`server/src/middleware/deserializeUser.ts`](https://github.com/david1ddt/atuu/blob/main/server/src/middleware/deserializeUser.ts) (Token middleware), [`server/src/main.ts`](https://github.com/david1ddt/atuu/blob/main/server/src/main.ts) (Express server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Expo scaffold"]
  node_home["Welcome screen<br/>[index.tsx]"]
  node_tabs["App navigation<br/>[_layout.tsx]"]
end

subgraph group_identity["User identity"]
  node_api["Express server<br/>[main.ts]"]
  node_user_routes["User routes<br/>[user.routes.ts]"]
  node_user_controller["Create user<br/>[user.controller.ts]"]
  node_user_model["User model<br/>[user.model.ts]"]
  node_auth["Token middleware<br/>[deserializeUser.ts]"]
end

subgraph group_rooms["Realtime rooms"]
  node_socket_player["Socket player<br/>[deserializeUser.ts]"]
  node_room_controller["Room controller<br/>[room.controller.ts]"]
  node_room_state[("In-memory rooms<br/>[room.controller.ts]")]
end

subgraph group_persistence["Persistence"]
  node_database_helper["Database connection<br/>[database.ts]"]
  node_mongo[("MongoDB")]
end

node_visitor(("App visitor"))
node_jwt["JWT library"]

node_visitor -->|"views"| node_home
node_home -->|"renders within"| node_tabs
node_api -->|"mounts routes"| node_user_routes
node_user_routes -->|"calls create"| node_user_controller
node_user_controller -->|"creates user"| node_user_model
node_user_controller -->|"signs token"| node_jwt
node_user_routes -->|"guards profile"| node_auth
node_auth -->|"verifies token"| node_jwt
node_auth -->|"sets user"| node_user_routes
node_socket_player -->|"provides player"| node_room_controller
node_room_controller -->|"updates rooms"| node_room_state
node_api -->|"connects on start"| node_database_helper
node_database_helper -->|"connects"| node_mongo

click node_home "https://github.com/david1ddt/atuu/blob/main/client/src/app/index.tsx"
click node_tabs "https://github.com/david1ddt/atuu/blob/main/client/src/app/_layout.tsx"
click node_api "https://github.com/david1ddt/atuu/blob/main/server/src/main.ts"
click node_user_routes "https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.routes.ts"
click node_user_controller "https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.controller.ts"
click node_user_model "https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.model.ts"
click node_auth "https://github.com/david1ddt/atuu/blob/main/server/src/middleware/deserializeUser.ts"
click node_socket_player "https://github.com/david1ddt/atuu/blob/main/server/src/middleware/deserializeUser.ts"
click node_room_controller "https://github.com/david1ddt/atuu/blob/main/server/src/modules/room/room.controller.ts"
click node_room_state "https://github.com/david1ddt/atuu/blob/main/server/src/modules/room/room.controller.ts"
click node_database_helper "https://github.com/david1ddt/atuu/blob/main/server/src/utils/database.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_home,node_tabs toneBlue
class node_api,node_user_routes,node_user_controller,node_user_model,node_auth toneAmber
class node_socket_player,node_room_controller,node_room_state toneMint
class node_database_helper,node_mongo toneRose
class node_visitor,node_jwt toneIndigo
```

## Components

### Expo scaffold

- [Welcome screen](https://github.com/david1ddt/atuu/blob/main/client/src/app/index.tsx): `client/src/app/index.tsx`
- [App navigation](https://github.com/david1ddt/atuu/blob/main/client/src/app/_layout.tsx): `client/src/app/_layout.tsx`

### User identity

- [Express server](https://github.com/david1ddt/atuu/blob/main/server/src/main.ts): `server/src/main.ts`
- [User routes](https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.routes.ts): `server/src/modules/user/user.routes.ts`
- [Create user](https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.controller.ts): `server/src/modules/user/user.controller.ts`
- [User model](https://github.com/david1ddt/atuu/blob/main/server/src/modules/user/user.model.ts): `server/src/modules/user/user.model.ts`
- [Token middleware](https://github.com/david1ddt/atuu/blob/main/server/src/middleware/deserializeUser.ts): `server/src/middleware/deserializeUser.ts`

### Realtime rooms

- [Socket player](https://github.com/david1ddt/atuu/blob/main/server/src/middleware/deserializeUser.ts): `server/src/middleware/deserializeUser.ts`
- [Room controller](https://github.com/david1ddt/atuu/blob/main/server/src/modules/room/room.controller.ts): `server/src/modules/room/room.controller.ts`
- [In-memory rooms](https://github.com/david1ddt/atuu/blob/main/server/src/modules/room/room.controller.ts): `server/src/modules/room/room.controller.ts`

### Persistence

- [Database connection](https://github.com/david1ddt/atuu/blob/main/server/src/utils/database.ts): `server/src/utils/database.ts`
- **MongoDB**

### Other components

- **App visitor**
- **JWT library**

## Connections

- App visitor → Welcome screen: views
- Welcome screen → App navigation: renders within
- Express server → User routes: mounts routes
- User routes → Create user: calls create
- Create user → User model: creates user
- Create user → JWT library: signs token
- User routes → Token middleware: guards profile
- Token middleware → JWT library: verifies token
- Token middleware → User routes: sets user
- Socket player → Room controller: provides player
- Room controller → In-memory rooms: updates rooms
- Express server → Database connection: connects on start
- Database connection → MongoDB: connects
