์†Œ์Šค ๊ฒ€์ƒ‰

๐Ÿ“ docs(architecture): update architecture documentation

- update PostgreSQL version from 15 to 17 in technical stack summary
- rename middleware files: auth.ts โ†’ auth.middleware.ts, validation.ts โ†’ permission.middleware.ts
- expand source tree documentation with detailed component structure
- add more detailed client-side structure including admin components and UI library
- enhance server-side structure documentation with specific file examples
- add E2E tests directory to project structure
yourname 2 ๋‹ฌ ์ „
๋ถ€๋ชจ
์ปค๋ฐ‹
4458e90e9c
2๊ฐœ์˜ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๊ณผ 72๊ฐœ์˜ ์ถ”๊ฐ€์ž‘์—… ๊ทธ๋ฆฌ๊ณ  49๊ฐœ์˜ ํŒŒ์ผ์„ ์‚ญ์ œ
  1. 4 4
      docs/architecture.md
  2. 68 45
      docs/architecture/source-tree.md

+ 4 - 4
docs/architecture.md

@@ -32,7 +32,7 @@
 
 ### ๅฝ“ๅ‰้กน็›ฎ็Šถๆ€
 - **ไธป่ฆ็”จ้€”**: ็ŽฐไปฃๅŒ–็š„ๅ…จๆ ˆWebๅบ”็”จๅฏๅŠจๆจกๆฟ๏ผŒไธ“ๆณจไบŽๅผ€ๅ‘่€…ไฝ“้ชŒ
-- **ๆŠ€ๆœฏๆ ˆๆ€ป็ป“**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 15
+- **ๆŠ€ๆœฏๆ ˆๆ€ป็ป“**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 17
 - **ๆžถๆž„้ฃŽๆ ผ**: ๅˆ†ๅฑ‚ๆžถๆž„๏ผŒๅ‰ๅŽ็ซฏๅˆ†็ฆปไฝ†็ปŸไธ€ไป“ๅบ“็ฎก็†
 - **้ƒจ็ฝฒๆ–นๅผ**: Docker Composeๆœฌๅœฐๅผ€ๅ‘๏ผŒNode.js็”Ÿไบง้ƒจ็ฝฒ
 
@@ -322,8 +322,8 @@ src/server/
 โ”‚   โ”œโ”€โ”€ logger.ts          # ๆ—ฅๅฟ—ๅทฅๅ…ท
 โ”‚   โ””โ”€โ”€ __tests__/         # ๅทฅๅ…ทๆต‹่ฏ•
 โ”œโ”€โ”€ middleware/            # ไธญ้—ดไปถๅฑ‚
-โ”‚   โ”œโ”€โ”€ auth.ts           # ่ฎค่ฏไธญ้—ดไปถ
-โ”‚   โ””โ”€โ”€ validation.ts     # ้ชŒ่ฏไธญ้—ดไปถ
+โ”‚   โ”œโ”€โ”€ auth.middleware.ts           # ่ฎค่ฏไธญ้—ดไปถ
+โ”‚   โ””โ”€โ”€ permission.middleware.ts     # ๆƒ้™ไธญ้—ดไปถ
 โ”œโ”€โ”€ types/                # ็ฑปๅž‹ๅฎšไน‰
 โ”œโ”€โ”€ data-source.ts        # ๆ•ฐๆฎๅบ“่ฟžๆŽฅ้…็ฝฎ
 โ””โ”€โ”€ index.ts              # ๆœๅŠกๅ™จๅ…ฅๅฃ
@@ -331,7 +331,7 @@ src/server/
 
 **ๅŽ็ซฏๆŠ€ๆœฏๆ ˆ้…็ฝฎ**:
 - **ๆก†ๆžถ**: Hono 4.8.5 + TypeScript
-- **ๆ•ฐๆฎๅบ“**: PostgreSQL 15 + TypeORM 0.3.25
+- **ๆ•ฐๆฎๅบ“**: PostgreSQL 17 + TypeORM 0.3.25
 - **้ชŒ่ฏ**: Zod schema้ชŒ่ฏ
 - **่ฎค่ฏ**: JWT Bearer Token
 - **APIๆ–‡ๆกฃ**: @hono/zod-openapi + Swagger UI

+ 68 - 45
docs/architecture/source-tree.md

@@ -1,53 +1,76 @@
 # ๆบ็ ๆ ‘ๅ’Œๆ–‡ไปถ็ป„็ป‡
 
-## ็Žฐๆœ‰้กน็›ฎ็ป“ๆž„
+## ๅฎž้™…้กน็›ฎ็ป“ๆž„
 ```text
 d8d-starter/
 โ”œโ”€โ”€ src/
-โ”‚   โ”œโ”€โ”€ client/           # Reactๅ‰็ซฏไปฃ็ 
-โ”‚   โ”‚   โ”œโ”€โ”€ admin/        # ็ฎก็†ๅŽๅฐ็•Œ้ข
-โ”‚   โ”‚   โ”œโ”€โ”€ home/         # ็”จๆˆทไธป้กต็•Œ้ข
-โ”‚   โ”‚   โ”œโ”€โ”€ components/   # ๅ…ฑไบซ็ป„ไปถ
-โ”‚   โ”‚   โ”œโ”€โ”€ hooks/        # React Hooks
-โ”‚   โ”‚   โ””โ”€โ”€ lib/          # ๅทฅๅ…ทๅบ“
-โ”‚   โ”œโ”€โ”€ server/           # Node.jsๅŽ็ซฏไปฃ็ 
-โ”‚   โ”‚   โ”œโ”€โ”€ api/          # API่ทฏ็”ฑๅค„็†
-โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/     # ่ฎค่ฏ่ทฏ็”ฑ
-โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ users/    # ็”จๆˆท็ฎก็†่ทฏ็”ฑ
-โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ roles/    # ่ง’่‰ฒ็ฎก็†่ทฏ็”ฑ
-โ”‚   โ”‚   โ”œโ”€โ”€ modules/      # ไธšๅŠกๆจกๅ—
-โ”‚   โ”‚   โ”œโ”€โ”€ middleware/   # ไธญ้—ดไปถ
-โ”‚   โ”‚   โ”œโ”€โ”€ types/        # TypeScript็ฑปๅž‹
-โ”‚   โ”‚   โ””โ”€โ”€ utils/        # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
-โ”‚   โ””โ”€โ”€ share/            # ๅ‰ๅŽ็ซฏๅ…ฑไบซไปฃ็ 
-โ”‚       โ””โ”€โ”€ types.ts      # TypeScript็ฑปๅž‹ๅฎšไน‰
-```
-
-## ๆ–ฐๆ–‡ไปถ็ป„็ป‡
-```text
-d8d-starter/
-โ”œโ”€โ”€ src/
-โ”‚   โ”œโ”€โ”€ client/           # ็Žฐๆœ‰็ป“ๆž„ไฟๆŒไธๅ˜
-โ”‚   โ”œโ”€โ”€ server/
-โ”‚   โ”‚   โ”œโ”€โ”€ api/
-โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ users/
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ __tests__/          # ๆ–ฐๅขž๏ผšAPIๆต‹่ฏ•
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ [id]/
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ get.ts
-โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.ts
-โ”‚   โ”‚   โ”œโ”€โ”€ modules/
-โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ users/
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ __tests__/          # ๆ–ฐๅขž๏ผšๆœๅŠกๆต‹่ฏ•
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user.entity.ts
-โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user.service.ts
-โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ role.entity.ts
-โ”‚   โ”‚   โ””โ”€โ”€ utils/
-โ”‚   โ”‚       โ”œโ”€โ”€ __tests__/              # ๆ–ฐๅขž๏ผšๅทฅๅ…ทๆต‹่ฏ•
-โ”‚   โ”‚       โ”œโ”€โ”€ generic-crud.service.ts
-โ”‚   โ”‚       โ”œโ”€โ”€ generic-crud.routes.ts
-โ”‚   โ”‚       โ””โ”€โ”€ errorHandler.ts         # ้œ€่ฆๅขžๅผบ็š„้”™่ฏฏๅค„็†
-โ”‚   โ””โ”€โ”€ share/            # ็Žฐๆœ‰็ป“ๆž„ไฟๆŒไธๅ˜
-โ”‚       โ””โ”€โ”€ types.ts      # TypeScript็ฑปๅž‹ๅฎšไน‰
+โ”‚   โ”œโ”€โ”€ client/                 # Reactๅ‰็ซฏๅบ”็”จ
+โ”‚   โ”‚   โ”œโ”€โ”€ admin/              # ็ฎก็†ๅŽๅฐๅบ”็”จ
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ components/     # ็ฎก็†ๅŽๅฐไธ“็”จ็ป„ไปถ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProtectedRoute.tsx    # ่ทฏ็”ฑไฟๆŠค็ป„ไปถ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ErrorPage.tsx         # ้”™่ฏฏ้กต้ข
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ NotFoundPage.tsx      # 404้กต้ข
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ hooks/          # ็ฎก็†ๅŽๅฐHooks
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ AuthProvider.tsx      # ่ฎค่ฏ็Šถๆ€็ฎก็†
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layouts/        # ๅธƒๅฑ€็ป„ไปถ
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ MainLayout.tsx        # ไธปๅธƒๅฑ€
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ pages/          # ้กต้ข็ป„ไปถ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.tsx         # ไปช่กจๆฟ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Login.tsx             # ็™ปๅฝ•้กต้ข
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Users.tsx             # ็”จๆˆท็ฎก็†
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ routes.tsx      # ่ทฏ็”ฑ้…็ฝฎ
+โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.tsx       # ็ฎก็†ๅŽๅฐๅ…ฅๅฃ
+โ”‚   โ”‚   โ”œโ”€โ”€ home/               # ็”จๆˆทๅ‰ๅฐๅบ”็”จ
+โ”‚   โ”‚   โ”œโ”€โ”€ components/         # ๅ…ฑไบซUI็ป„ไปถ
+โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ui/            # shadcn/ui็ป„ไปถๅบ“๏ผˆ50+็ป„ไปถ๏ผ‰
+โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ button.tsx   # ๆŒ‰้’ฎ็ป„ไปถ
+โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ input.tsx    # ่พ“ๅ…ฅๆก†็ป„ไปถ
+โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ table.tsx    # ่กจๆ ผ็ป„ไปถ
+โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ ...          # ๅ…ถไป–็ป„ไปถ
+โ”‚   โ”‚   โ”œโ”€โ”€ hooks/             # ๅ…ฑไบซHooks
+โ”‚   โ”‚   โ”œโ”€โ”€ lib/               # ๅทฅๅ…ทๅบ“
+โ”‚   โ”‚   โ”œโ”€โ”€ utils/             # ๅทฅๅ…ทๅ‡ฝๆ•ฐ
+โ”‚   โ”‚   โ”œโ”€โ”€ api.ts             # APIๅฎขๆˆท็ซฏ้…็ฝฎ
+โ”‚   โ”‚   โ””โ”€โ”€ index.tsx          # ๅ‰็ซฏๅ…ฅๅฃ
+โ”‚   โ”œโ”€โ”€ server/                 # HonoๅŽ็ซฏๅบ”็”จ
+โ”‚   โ”‚   โ”œโ”€โ”€ api/                # API่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/           # ่ฎค่ฏ็›ธๅ…ณ่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ login.ts    # ็™ปๅฝ•่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ logout.ts   # ็™ปๅ‡บ่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ register.ts # ๆณจๅ†Œ่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ users/          # ็”จๆˆท็ฎก็†่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.ts    # ็”จๆˆทๅˆ—่กจ่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ [id].ts     # ็”จๆˆท่ฏฆๆƒ…่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ __tests__/  # ่ทฏ็”ฑๆต‹่ฏ•
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ roles/          # ่ง’่‰ฒ็ฎก็†่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ __integration_tests__/  # ้›†ๆˆๆต‹่ฏ•
+โ”‚   โ”‚   โ”œโ”€โ”€ modules/            # ไธšๅŠกๆจกๅ—
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/           # ่ฎค่ฏไธšๅŠกๆจกๅ—
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth.service.ts # ่ฎค่ฏๆœๅŠก
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ __tests__/  # ่ฎค่ฏๆต‹่ฏ•
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ users/          # ็”จๆˆทไธšๅŠกๆจกๅ—
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user.entity.ts  # ็”จๆˆทๅฎžไฝ“
+โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user.service.ts # ็”จๆˆทๆœๅŠก
+โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ __tests__/  # ็”จๆˆทๆต‹่ฏ•
+โ”‚   โ”‚   โ”œโ”€โ”€ utils/              # ๅทฅๅ…ทๅฑ‚
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ generic-crud.service.ts  # ้€š็”จCRUDๆœๅŠก
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ generic-crud.routes.ts   # ้€š็”จCRUD่ทฏ็”ฑ
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ errorHandler.ts # ้”™่ฏฏๅค„็†
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ backup.ts       # ๆ•ฐๆฎๅบ“ๅค‡ไปฝๅทฅๅ…ท
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ restore.ts      # ๆ•ฐๆฎๅบ“ๆขๅคๅทฅๅ…ท
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ logger.ts       # ๆ—ฅๅฟ—ๅทฅๅ…ท
+โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ __tests__/      # ๅทฅๅ…ทๆต‹่ฏ•
+โ”‚   โ”‚   โ”œโ”€โ”€ middleware/         # ไธญ้—ดไปถๅฑ‚
+โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth.middleware.ts        # ่ฎค่ฏไธญ้—ดไปถ
+โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ permission.middleware.ts  # ๆƒ้™ไธญ้—ดไปถ
+โ”‚   โ”‚   โ”œโ”€โ”€ types/             # ็ฑปๅž‹ๅฎšไน‰
+โ”‚   โ”‚   โ”œโ”€โ”€ data-source.ts     # ๆ•ฐๆฎๅบ“่ฟžๆŽฅ้…็ฝฎ
+โ”‚   โ”‚   โ””โ”€โ”€ index.ts           # ๆœๅŠกๅ™จๅ…ฅๅฃ
+โ”‚   โ””โ”€โ”€ share/                  # ๅ‰ๅŽ็ซฏๅ…ฑไบซไปฃ็ 
+โ”‚       โ””โ”€โ”€ types.ts           # TypeScript็ฑปๅž‹ๅฎšไน‰
+โ”œโ”€โ”€ tests/
+โ”‚   โ””โ”€โ”€ e2e/                    # E2Eๆต‹่ฏ• (Playwright)
+โ””โ”€โ”€ package.json
 ```
 
 ## ้›†ๆˆๆŒ‡ๅ—