From 47bcdaf31670f43adba4253d907a38a3dd82374e Mon Sep 17 00:00:00 2001
From: Sienna <156987557+jeongkyueun@users.noreply.github.com>
Date: Thu, 12 Feb 2026 21:42:28 +0900
Subject: [PATCH 1/2] Enhance README with backend tech stack and architecture
Added backend tech stack details and service architecture flow to the README.
---
README.md | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/README.md b/README.md
index a683e4d..4bafa60 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,30 @@
+
+
+## π Backend Tech Stack
+
+### π§ κΈ°μ μ€ν
+
+| Category | Technology | Description |
+| :--- | :--- | :--- |
+| **Language** |  | μλ² μ¬μ΄λ λΉμ¦λμ€ λ‘μ§ μ²λ¦¬ λ° API μλ² κ΅¬μΆ |
+| **Web Server** |  | 리λ²μ€ νλ‘μ μ€μ μ ν΅ν 보μ λ° API μμ² μ λ¬ |
+| **Database** |  | κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό νμ©ν λ°μ΄ν° κ΄λ¦¬ λ° CRUD μ²λ¦¬ |
+| **Storage** |  | μ¬μ©μ μ
λ‘λ νμΌ(μ΄λ―Έμ§, λ¬Έμ λ±) μ μ₯ λ° κ°μ²΄ URL κ΄λ¦¬ |
+| **CI/CD** |  | μ½λ λ³κ²½ μ μλ λΉλ, ν
μ€νΈ λ° μλ² μλ λ°°ν¬ νκ²½ κ΅¬μΆ |
+
+
+
+
+### π Service Architecture Flow
+1. **Request**: `Vercel(Next.js)`μμ λ°μν API μμ²μ΄ `NGINX`λ‘ μΈμ
λ©λλ€.
+2. **Proxy**: `NGINX`λ ν΄λΉ μμ²μ λ΄λΆ `Node.js` μλ²λ‘ μμ νκ² μ λ¬ν©λλ€.
+3. **Logic & DB**: `Node.js`μμ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ©° `MySQL`κ³Ό ν΅μ νμ¬ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
+4. **File Control**: νμΌ μ
λ‘λ μ `AWS S3`μ ν΅μ νμ¬ νμΌμ κ΄λ¦¬νκ³ κ°μ²΄ URLμ λ°νλ°μ΅λλ€.
+
+
## π μμ€ν
λλ ν 리 ꡬ쑰
```bash
BACKEND
From f8705fba1877a4153b4fccb1513a857d712a6aab Mon Sep 17 00:00:00 2001
From: Sienna <156987557+jeongkyueun@users.noreply.github.com>
Date: Thu, 12 Feb 2026 21:48:21 +0900
Subject: [PATCH 2/2] Update README with custom error code structure
---
README.md | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index 4bafa60..283039a 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@
| **Language** |  | μλ² μ¬μ΄λ λΉμ¦λμ€ λ‘μ§ μ²λ¦¬ λ° API μλ² κ΅¬μΆ |
| **Web Server** |  | 리λ²μ€ νλ‘μ μ€μ μ ν΅ν 보μ λ° API μμ² μ λ¬ |
| **Database** |  | κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό νμ©ν λ°μ΄ν° κ΄λ¦¬ λ° CRUD μ²λ¦¬ |
+| **Compute** |  | ν΄λΌμ°λ κ°μ μλ² μΈμ€ν΄μ€λ₯Ό ν΅ν μ ν리μΌμ΄μ
νΈμ€ν
|
| **Storage** |  | μ¬μ©μ μ
λ‘λ νμΌ(μ΄λ―Έμ§, λ¬Έμ λ±) μ μ₯ λ° κ°μ²΄ URL κ΄λ¦¬ |
| **CI/CD** |  | μ½λ λ³κ²½ μ μλ λΉλ, ν
μ€νΈ λ° μλ² μλ λ°°ν¬ νκ²½ κ΅¬μΆ |
@@ -183,18 +184,20 @@ npm start
}
```
### β·μ»€μ€ν
μλ¬ μ½λ
-- μμ ꡬ쑰
- | Base Class | μ€λͺ
|
- | --- | --- |
- | CustomError | λͺ¨λ μλ¬μ λΆλͺ¨ ν΄λμ€ (statusCode, errorCode, reason, data ν¬ν¨) |
-- μλ¬ νμ
μ 리
- | Status Code | Default Error Code | κΈ°λ³Έ λ©μμ§|
- | --- | --- | --- |
- | 400 | BAD_REQUEST | μλͺ»λ μμ²μ
λλ€ |
- | 401 | UNAUTHORIZED | μΈμ¦μ μ€ν¨νμ΅λλ€|
- | 403 | FORBIDDEN | μ κ·Ό κΆνμ΄ μμ΅λλ€ |
- | 404 | NOT_FOUND | 리μμ€λ₯Ό μ°Ύμ μ μμ΅λλ€ |
- | 500 | INTERNAL_SERVER_ERROR | μλ² λ΄λΆ μ€λ₯κ° λ°μνμ΅λλ€ |
+
+#### **μμ ꡬ쑰**
+| Base Class | μ€λͺ
|
+| :--- | :--- |
+| `CustomError` | λͺ¨λ μλ¬μ λΆλͺ¨ ν΄λμ€ (`statusCode`, `errorCode`, `reason`, `data` ν¬ν¨) |
+
+#### **μλ¬ νμ
μ 리**
+| Status Code | Default Error Code | κΈ°λ³Έ λ©μμ§ |
+| :---: | :--- | :--- |
+| 400 | `BAD_REQUEST` | μλͺ»λ μμ²μ
λλ€ |
+| 401 | `UNAUTHORIZED` | μΈμ¦μ μ€ν¨νμ΅λλ€ |
+| 403 | `FORBIDDEN` | μ κ·Ό κΆνμ΄ μμ΅λλ€ |
+| 404 | `NOT_FOUND` | 리μμ€λ₯Ό μ°Ύμ μ μμ΅λλ€ |
+| 500 | `INTERNAL_SERVER_ERROR` | μλ² λ΄λΆ μ€λ₯κ° λ°μνμ΅λλ€ |
## π μ£Όμ API λͺ©λ‘