# kuroineko2511/basic-be architecture

> Architecture diagram of the GitHub repository kuroineko2511/basic-be, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kuroineko2511/basic-be
- Repository: https://github.com/kuroineko2511/basic-be

## Overview

This training repository contains successive Express backend examples. The most complete product is BUOI5JS: clients enter through the server and mounted routes for authentication, user management, and uploads; the visible authentication service handles registration, login, and profile lookup, while the user repository accesses a database and upload controllers invoke an R2 service. BUOI1JS is an earlier file-backed user CRUD example. The README is empty, and several route, service, and integration implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`BUOI5JS/src/index.js`](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/index.js) (Express server), [`BUOI5JS/src/route/route.js`](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/route.js) (Mounted routes), [`BUOI5JS/src/service/auth.service.js`](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/auth.service.js) (Auth service), [`BUOI5JS/src/controller/upload.controller.js`](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/upload.controller.js) (Upload controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["BUOI5 API runtime"]
  node_server["Express server<br/>[index.js]"]
  node_root_routes["Mounted routes<br/>[route.js]"]
  node_error_middleware["Error handler<br/>[errorHandler.js]"]
  node_db_config["Database config<br/>[db.config.js]"]
  node_env_config["Environment config<br/>[env.config.js]"]
end

subgraph group_accounts["Identity and users"]
  node_auth_routes["Auth routes<br/>[auth.route.js]"]
  node_auth_controller["Auth controller<br/>[auth.controller.js]"]
  node_auth_service["Auth service<br/>[auth.service.js]"]
  node_auth_middleware["Auth middleware<br/>[auth.middleware.js]"]
  node_jwt_helper["JWT helper<br/>[jwt.helper.js]"]
  node_users_routes["User routes<br/>[users.route.js]"]
  node_users_controller["User controller"]
  node_users_service["User service<br/>[users.service.js]"]
  node_user_repository["User repository<br/>[user.repository.js]"]
  node_user_db[("Users database")]
end

subgraph group_uploads["File uploads"]
  node_upload_routes["Upload routes<br/>[upload.route.js]"]
  node_upload_middleware["Upload middleware"]
  node_upload_controller["Upload controller"]
  node_upload_service["Upload service<br/>[upload.service.js]"]
  node_r2_service["R2 service<br/>[r2.service.js]"]
end

subgraph group_legacy["BUOI1 CRUD"]
  node_legacy_server["Legacy server<br/>[index.js]"]
  node_legacy_routes["Legacy routes<br/>[route.js]"]
  node_legacy_users_routes["User routes<br/>[users.route.js]"]
  node_legacy_controller["User controller"]
  node_legacy_service["User service<br/>[users.service.js]"]
  node_legacy_data["File data reader<br/>[readData.js]"]
end

node_client(("API client"))
node_r2[("Cloudflare R2")]

node_client -->|"sends requests"| node_server
node_server -->|"mounts routes"| node_root_routes
node_server -->|"connects database"| node_db_config
node_server -->|"reads config"| node_env_config
node_server -->|"installs handler"| node_error_middleware
node_root_routes -->|"mounts auth"| node_auth_routes
node_root_routes -->|"mounts users"| node_users_routes
node_root_routes -->|"mounts uploads"| node_upload_routes
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"queries users"| node_user_repository
node_auth_service -->|"generates tokens"| node_jwt_helper
node_user_repository -->|"queries and updates"| node_user_db
node_upload_controller -->|"formats files"| node_upload_service
node_upload_controller -->|"uploads buffers"| node_r2_service
node_r2_service -->|"stores files"| node_r2
node_legacy_server -->|"mounts routes"| node_legacy_routes
node_legacy_routes -->|"includes routes"| node_legacy_users_routes
node_legacy_controller -->|"calls"| node_legacy_service
node_legacy_service -->|"reads data"| node_legacy_data

click node_server "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/index.js"
click node_root_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/route.js"
click node_error_middleware "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/errorHandler.js"
click node_db_config "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/config/db.config.js"
click node_env_config "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/config/env.config.js"
click node_auth_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/auth.route.js"
click node_auth_controller "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/auth.controller.js"
click node_auth_service "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/auth.service.js"
click node_auth_middleware "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/auth.middleware.js"
click node_jwt_helper "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/utils/jwt.helper.js"
click node_users_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/users.route.js"
click node_users_controller "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/users.controller.js"
click node_users_service "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/users.service.js"
click node_user_repository "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/repository/user.repository.js"
click node_upload_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/upload.route.js"
click node_upload_middleware "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/upload.middleware.js"
click node_upload_controller "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/upload.controller.js"
click node_upload_service "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/upload.service.js"
click node_r2_service "https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/r2.service.js"
click node_legacy_server "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/index.js"
click node_legacy_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/route/route.js"
click node_legacy_users_routes "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/route/users.route.js"
click node_legacy_controller "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/controller/users.controller.js"
click node_legacy_service "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/service/users.service.js"
click node_legacy_data "https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/repository/readData.js"

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_server,node_root_routes,node_error_middleware,node_db_config,node_env_config,node_client toneBlue
class node_auth_routes,node_auth_controller,node_auth_service,node_auth_middleware,node_jwt_helper,node_users_routes,node_users_controller,node_users_service,node_user_repository,node_user_db,node_r2 toneAmber
class node_upload_routes,node_upload_middleware,node_upload_controller,node_upload_service,node_r2_service toneMint
class node_legacy_server,node_legacy_routes,node_legacy_users_routes,node_legacy_controller,node_legacy_service,node_legacy_data toneRose
```

## Components

### BUOI5 API runtime

- [Express server](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/index.js): `BUOI5JS/src/index.js`
- [Mounted routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/route.js): `BUOI5JS/src/route/route.js`
- [Error handler](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/errorHandler.js): `BUOI5JS/src/middleware/errorHandler.js`
- [Database config](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/config/db.config.js): `BUOI5JS/src/config/db.config.js`
- [Environment config](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/config/env.config.js): `BUOI5JS/src/config/env.config.js`

### Identity and users

- [Auth routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/auth.route.js): `BUOI5JS/src/route/auth.route.js`
- [Auth controller](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/auth.controller.js): `BUOI5JS/src/controller/auth.controller.js`
- [Auth service](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/auth.service.js): `BUOI5JS/src/service/auth.service.js`
- [Auth middleware](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/auth.middleware.js): `BUOI5JS/src/middleware/auth.middleware.js`
- [JWT helper](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/utils/jwt.helper.js): `BUOI5JS/src/utils/jwt.helper.js`
- [User routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/users.route.js): `BUOI5JS/src/route/users.route.js`
- [User controller](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/users.controller.js): `BUOI5JS/src/controller/users.controller.js`
- [User service](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/users.service.js): `BUOI5JS/src/service/users.service.js`
- [User repository](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/repository/user.repository.js): `BUOI5JS/src/repository/user.repository.js`
- **Users database**

### File uploads

- [Upload routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/route/upload.route.js): `BUOI5JS/src/route/upload.route.js`
- [Upload middleware](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/middleware/upload.middleware.js): `BUOI5JS/src/middleware/upload.middleware.js`
- [Upload controller](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/controller/upload.controller.js): `BUOI5JS/src/controller/upload.controller.js`
- [Upload service](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/upload.service.js): `BUOI5JS/src/service/upload.service.js`
- [R2 service](https://github.com/kuroineko2511/basic-be/blob/main/BUOI5JS/src/service/r2.service.js): `BUOI5JS/src/service/r2.service.js`

### BUOI1 CRUD

- [Legacy server](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/index.js): `BUOI1JS/index.js`
- [Legacy routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/route/route.js): `BUOI1JS/route/route.js`
- [User routes](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/route/users.route.js): `BUOI1JS/route/users.route.js`
- [User controller](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/controller/users.controller.js): `BUOI1JS/controller/users.controller.js`
- [User service](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/service/users.service.js): `BUOI1JS/service/users.service.js`
- [File data reader](https://github.com/kuroineko2511/basic-be/blob/main/BUOI1JS/repository/readData.js): `BUOI1JS/repository/readData.js`

### Other components

- **API client**
- **Cloudflare R2**

## Connections

- API client → Express server: sends requests
- Express server → Mounted routes: mounts routes
- Express server → Database config: connects database
- Express server → Environment config: reads config
- Express server → Error handler: installs handler
- Mounted routes → Auth routes: mounts auth
- Mounted routes → User routes: mounts users
- Mounted routes → Upload routes: mounts uploads
- Auth controller → Auth service: calls
- Auth service → User repository: queries users
- Auth service → JWT helper: generates tokens
- User repository → Users database: queries and updates
- Upload controller → Upload service: formats files
- Upload controller → R2 service: uploads buffers
- R2 service → Cloudflare R2: stores files
- Legacy server → Legacy routes: mounts routes
- Legacy routes → User routes: includes routes
- User controller → User service: calls
- User service → File data reader: reads data
