{post.title}
+{post.content}
+diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
new file mode 100644
index 00000000..effaa705
--- /dev/null
+++ b/ARCHITECTURE.md
@@ -0,0 +1,313 @@
+# ๐๏ธ Clean FSD & CQRS ์ํคํ
์ฒ ๊ฐ์ด๋ (v1.0)
+
+## 1. ํต์ฌ ์ฒ ํ (Core Philosophy)
+
+์ฐ๋ฆฌ๋ **Clean FSD (Feature-Sliced Design)**๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, **CQRS (Read/Write ๋ถ๋ฆฌ)** ํจํด๊ณผ **Next.js App Router**์ ์ฅ์ ์ ๊ฒฐํฉํ ์ํคํ
์ฒ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
+
+- **Lego Architecture:** ํ์ ๋ ์ด์ด(Entities, Features)๋ ๋
๋ฆฝ์ ์ธ ๋ ๊ณ ๋ธ๋ก์ด๋ฉฐ, ์์ ๋ ์ด์ด(Widgets, Pages)๋ ์ด๋ฅผ ์กฐ๋ฆฝํ๋ ์ญํ ์ ํฉ๋๋ค.
+- **Server First:** ์ฝ๊ธฐ(Read) ๋์์ **RSC(Server Component)**๋ฅผ ํตํด ์ต์ ํํ๊ณ , ์ฐ๊ธฐ(Write) ๋์์ **Client Component**๋ก ์ํธ์์ฉ์ ์ฒ๋ฆฌํฉ๋๋ค.
+- **Separation of Concerns:** ํ๋ ์์ํฌ ์ค์ (`app`)๊ณผ ๋น์ฆ๋์ค ํ๋ฉด ๊ตฌํ(`pages`)์ ์ฒ ์ ํ ๋ถ๋ฆฌํฉ๋๋ค.
+
+---
+
+## 2. ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ (Directory Structure)
+
+### 2.1. ์ ์ฒด ํธ๋ฆฌ (Overview)
+
+```
+src/
+โโโ app/ # [Framework Layer] ๋ผ์ฐํ
, ๋ฉํ๋ฐ์ดํฐ, ๋ ์ด์์ (Shell)
+โโโ pages/ # [Page Layer] ์ค์ ํ์ด์ง ํ๋ฉด ์กฐ๋ฆฝ (Implementation)
+โโโ widgets/ # [Composition Layer] Feature์ Entity๋ฅผ ๊ฒฐํฉํ ๋
๋ฆฝ ๋ธ๋ก
+โโโ features/ # [Write Layer] ์ฌ์ฉ์ ํ๋, ๋ฎคํ
์ด์
(Verbs)
+โโโ entities/ # [Read Layer] ๋๋ฉ์ธ ๋ฐ์ดํฐ, ์กฐํ (Nouns)
+โโโ shared/ # [Generic Layer] ๋๋ฉ์ธ์ ๋ชจ๋ฅด๋ ์์ ๊ณตํต ๋ก์ง
+```
+
+### 2.2. ๋ ์ด์ด๋ณ ์์ธ ์ญํ
+
+| ๋ ์ด์ด | ์ญํ | ์ฑ๊ฒฉ | ์ฃผ์ ํฌํจ ๋ด์ฉ | ์ฐธ์กฐ ๊ฐ๋ฅ ๋ฒ์ |
+|--------|------|------|----------------|----------------|
+| App | ๋ผ์ฐํ
(Shell) | Framework | page.tsx, layout.tsx, Metadata | pages ์ดํ ์ ์ฒด |
+| Pages | ํ๋ฉด ์กฐ๋ฆฝ | Business | ํ์ด์ง ๋จ์ UI ์กฐํฉ | widgets ์ดํ ์ ์ฒด |
+| Widgets | ๋ธ๋ก ์กฐ๋ฆฝ | Composition | Header, PostDetail, Sidebar | features, entities, shared |
+| Features | ์ฐ๊ธฐ (Write) | Action (CUD) | ๋ก๊ทธ์ธ ํผ, ์ข์์ ๋ฒํผ, useMutation | entities, shared |
+| Entities | ์ฝ๊ธฐ (Read) | Data (R) | ์ ์ ํ๋กํ ๋ทฐ, fetchUser, Type | shared |
+| Shared | ๊ณตํต | Generic | Button, Axios, Utils | ๋ถ๊ฐ (์ตํ์) |
+
+---
+
+## 3. CQRS ํจํด ์ ์ฉ
+
+### 3.1. Read (Entity)
+
+๋ฐ์ดํฐ ์กฐํ์ ํ์๋ฅผ ๋ด๋นํฉ๋๋ค.
+
+```typescript
+// entities/post/api/getPost.ts
+export const getPost = async (id: string) => {
+ const response = await api.get(`/posts/${id}`);
+ return response.data;
+};
+
+// entities/post/ui/PostContent.tsx
+export const PostContent = ({ post }: { post: Post }) => {
+ return (
+ {post.content}{post.title}
+
{error}
} + {helperText && !error &&{helperText}
} +