-
Notifications
You must be signed in to change notification settings - Fork 2
Feature/hompage #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Feature/hompage #11
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
2452724
chore : ννμ΄μ§μμ μ¬μ©ν μ΄λ―Έμ§ μΈν
Jaeho-Site 50e1201
chore : tsconfgμ€μ λ³κ²½
Jaeho-Site 232aff8
docs : νμ
λͺ
μΈ λ³κ²½, νμ₯ μ 리
Jaeho-Site 553db09
docs : widgets λ μ΄μ΄ CLAUDE.md μ μ
Jaeho-Site f696354
feat : μμ ν€λ μ μ(ννμ΄μ§μ©)
Jaeho-Site a0878d3
feat : SiteNav μΈλ±μ€ νμΌ μ μ
Jaeho-Site 9c67fe2
feat : μμ Footer μ μ(ννμ΄μ§μ©)
Jaeho-Site f562c97
feat : SiteFooter μΈλ±μ€ νμΌ μ μ
Jaeho-Site 8998f9e
feat : ννμ΄μ§ μ»΄ν¬λνΈ μ μ (κΈλ‘λ² λ μ΄μμλ§)
Jaeho-Site 810af89
feat : ννμ΄μ§ μΈλ±μ€ νμΌ μ μ
Jaeho-Site 0614fc2
feat : Appμ ν κ²½λ‘ μΆκ°
Jaeho-Site b0070e1
style : μ€νμΌ ν ν° μΆκ°
Jaeho-Site a3eddd5
refactor : μλ¬ λ°μ΄λ리 νμ
λ€μ΄λ° μμ
Jaeho-Site 4752b98
refactor : λλ ν 리 λ€μ΄λ° ν΅μΌ
Jaeho-Site 3892b07
Merge pull request #9 from Team-StackUp/feature/home-layout
i3months File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,124 @@ | ||
| # νλ‘ νΈμλ νμ μμ€ν β TypeScript | ||
|
|
||
| > StackUp νλ‘ νΈμλμ TypeScript νμ κ·μ½. **νμ μ μ¬μ©λλ λ μ΄μ΄μ μ°λ€.** μ΄λ¦μ μ λ―Έμ¬κ° μ± μ κ²½κ³λ₯Ό μ μΈνλ€. | ||
| > | ||
| > μμ 컨ν μ€νΈ β [coding-conventions.md](./coding-conventions.md) (μΈμ΄ κ³΅ν΅ κ·μ½), [`frontend/CLAUDE.md`](../frontend/CLAUDE.md) (FSD ꡬ쑰) | ||
| > μ μ© λ²μ β [`frontend/src/`](../frontend/src/) | ||
|
|
||
| --- | ||
|
|
||
| ## λͺ©μ°¨ | ||
|
|
||
| 1. [μμΉ](#1-μμΉ) | ||
| 2. [μ λ―Έμ¬ β λ μ΄μ΄ λ§€νΈλ¦μ€](#2-μ λ―Έμ¬--λ μ΄μ΄-λ§€νΈλ¦μ€) | ||
| 3. [λ μ΄μ΄λ³ νμ νλ¦](#3-λ μ΄μ΄λ³-νμ -νλ¦) | ||
| 4. [`type` vs `interface`](#4-type-vs-interface) | ||
| 5. [μ μ μμΉ](#5-μ μ-μμΉ) | ||
| 6. [shared μΉκ²© μκ³](#6-shared-μΉκ²©-μκ³) | ||
| 7. [μν°ν¨ν΄](#7-μν°ν¨ν΄) | ||
|
|
||
| --- | ||
|
|
||
| ## 1. μμΉ | ||
|
|
||
| - **PascalCase + μλ―Έ μλ μ λ―Έμ¬**. μ λ―Έμ¬κ° νμ μ μ± μΒ·λ μ΄μ΄λ₯Ό μ κ³ νλ€. | ||
| - `I` / `T` Hungarian prefix κΈμ§ β TypeScript μ»΄νμΌλ¬κ° `type` / `interface` λ₯Ό μΆ©λΆν ꡬλΆνλ€. | ||
| - **λ¨λ°©ν₯ νλ¦**: `Dto β Entity β Model β Props`. μλ°©ν₯ import κΈμ§. | ||
| - **μ μ `types/` ν΄λ κΈμ§**. μ¬λΌμ΄μ€ λ΄λΆμμ μμ, μ§μ§ 곡μ λ λλ§ λμ΄μ¬λ¦°λ€. | ||
|
|
||
| --- | ||
|
|
||
| ## 2. μ λ―Έμ¬ β λ μ΄μ΄ λ§€νΈλ¦μ€ | ||
|
|
||
| | μ λ―Έμ¬ | λ μ΄μ΄ | μ± μ | μ | | ||
| |---|---|---|---| | ||
| | `XxxDto` | `shared/api/` (OpenAPI μλ μμ±) | λ°±μλ wire format μ€λ μ·. μμ κΈμ§ | `SessionDto`, `UserDto` | | ||
| | `XxxRequest` / `XxxPayload` | API νΈμΆλΆ, μ΄λ²€νΈ publisher | HTTP μμ² body, RabbitMQ λ©μμ§ payload | `CreateSessionRequest`, `ResumeAnalyzedPayload` | | ||
| | `XxxResponse` | API νΈμΆλΆ | HTTP μλ΅ raw shape (μλ μ μ μ) β **ν¨μ λ°νμ μ¬μ© β** | `LoginResponse` | | ||
| | `Xxx` (μ λ―Έμ¬ μμ) | `domain/{slice}/model/` | λΉμ¦λμ€ μν°ν°. Dtoμμ λ§€νλ¨ | `User`, `Session`, `Resume` | | ||
| | `XxxResult` | λλ©μΈ / μ μ¦μΌμ΄μ€ ν¨μ λ°ν | λΉμ¦λμ€ λ‘μ§ μΆλ ₯ (HTTP λΉμ’ μ) | `AnalysisResult`, `ValidationResult` | | ||
| | `XxxModel` | `features/*/ui/`, `widgets/*/ui/` | UI νμ μ μ© κ°κ³΅ λ°μ΄ν° | `SessionListItemModel`, `ServiceCardModel` | | ||
| | `XxxProps` | μ»΄ν¬λνΈ μ | React props | `ButtonProps`, `HomeHeroProps` | | ||
| | `XxxState` | store / state machine | **λͺ μμ ** μν λͺ¨λΈ. λ¨λ° `useState` shape μ μ¬μ© β | `AuthState`, `SessionMachineState` | | ||
| | `XxxOptions` | ν¨μΒ·ν μ€μ | μ΅μ λ μΈμ λ¬Άμ | `UseTypewriterOptions` | | ||
| | `XxxId` | μ΄λλ | branded identifier | `type SessionId = number & { readonly __brand: 'SessionId' }` | | ||
|
|
||
| --- | ||
|
|
||
| ## 3. λ μ΄μ΄λ³ νμ νλ¦ | ||
|
|
||
| ``` | ||
| [Backend OpenAPI] | ||
| β openapi-typescript μλ μμ± | ||
| βΌ | ||
| shared/api/generated.ts ββ XxxDto | ||
| β λ§€νΌ ν¨μ (toUser, toSession) | ||
| βΌ | ||
| domain/{slice}/model/ ββ Xxx (Entity) | ||
| β feature / widget μμ UI κ°κ³΅ | ||
| βΌ | ||
| features|widgets/*/ui/ ββ XxxModel | ||
| β props λ‘ μ£Όμ | ||
| βΌ | ||
| React Component ββ XxxProps | ||
| ``` | ||
|
|
||
| **κ²½κ³ κ·μΉ**: | ||
|
|
||
| - `XxxDto` λ `shared/api/` λ°μΌλ‘ μμ§ μλλ€. UI Β· λλ©μΈμ΄ Dto λ₯Ό μ§μ import νλ©΄ anti-corruption layer κ° λ¬΄λμ§λ€. | ||
| - `Xxx` (Entity) λ `domain/` μ΄ μμ . features / widgets λ read-only λ‘ μ°Έμ‘°νλ€. | ||
| - `XxxModel` μ μ¬λΌμ΄μ€ λ΄λΆμ λ¨Έλ¬Έλ€. λ€λ₯Έ μ¬λΌμ΄μ€λ‘ export νμ§ μλλ€ β UI νμ ννκ° λμλλ©΄ λ³κ²½ λΉμ©μ΄ νμ¦νλ€. | ||
|
|
||
| --- | ||
|
|
||
| ## 4. `type` vs `interface` | ||
|
|
||
| `type` κΈ°λ³Έκ°. `interface` λ λ κ²½μ°μλ§: | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. κΈ°λ³Έκ° μ νκ±° μ’λ€μ |
||
|
|
||
| 1. ν΄λμ€κ° `implements` ν λ (`ErrorBoundary` λ±) | ||
| 2. declaration merging νμ μ (μΈλΆ λΌμ΄λΈλ¬λ¦¬ augmentation) | ||
|
|
||
| ```ts | ||
| // μ’μ | ||
| type SessionStatus = 'READY' | 'IN_PROGRESS' | 'COMPLETED'; | ||
| type CreateSessionRequest = { userId: UserId; mode: SessionMode }; | ||
| type AnalysisResult = { score: number; suggestions: string[] }; | ||
|
|
||
| // μ’μ β implements κ° νμν μΌμ΄μ€ | ||
| interface ErrorBoundaryProps { children: ReactNode; fallback: ReactNode } | ||
| class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> { ... } | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## 5. μ μ μμΉ | ||
|
|
||
| | 무μ | μ΄λ | | ||
| |---|---| | ||
| | μ»΄ν¬λνΈ props (λ¨μΌ μ¬μ©) | `{Component}.tsx` μλ¨, **export μ ν¨** | | ||
| | μΈλΆμμλ import λλ props | `{Component}.types.ts` | | ||
| | λλ©μΈ μν°ν° | `domain/{slice}/model/types.ts` | | ||
| | μ¬λΌμ΄μ€ λ΄ `XxxModel` | `features/{slice}/model/types.ts` λλ `ui/` λ΄λΆ | | ||
| | API `XxxDto` | `shared/api/generated.ts` (OpenAPI μ¬μμ±μΌλ‘λ§ κ°±μ ) | | ||
|
|
||
| **μ μ `src/types/` ν΄λλ λ§λ€μ§ μλλ€.** μ¬λΌμ΄μ€ λ΄λΆμμ μμνκ³ , μ§μ§ 곡μ λ λλ§ λμ΄μ¬λ¦°λ€. | ||
|
|
||
| --- | ||
|
|
||
| ## 6. shared μΉκ²© μκ³ | ||
|
|
||
| νμ μ `shared/` λ‘ μ¬λ¦¬λ μμ μ **μλ‘ λ€λ₯Έ μ¬λΌμ΄μ€ 3κ³³ μ΄μμμ λμΌν shape μ΄ λ°λ³΅λ λ**. κ·Έ μ μ μ¬λΌμ΄μ€ μμ μ°λ€. | ||
|
|
||
| > "μΈμ κ° μΈμ§λ λͺ¨λ₯΄λ 미리 shared λ‘" λ νμ μλͺ»λ μΆμνλ‘ λλλ€. | ||
|
|
||
| --- | ||
|
|
||
| ## 7. μν°ν¨ν΄ | ||
|
|
||
| - β `XxxResponse` λ₯Ό ν¨μ λ°ν νμ μΌλ‘ μ¬μ© β `XxxResult` λ‘. | ||
| - β UI μ»΄ν¬λνΈκ° `SessionDto` λ₯Ό props λ‘ λ°μ β `SessionListItemModel` λ‘ λ§€ν. | ||
| - β λ‘컬 `useState<{ ... }>` shape μ `XxxState` μ΄λ¦ λΆμ΄κ³ export. | ||
| - β `export type Props = { ... }` κ°μ generic export β `{Component}Props` λ‘. | ||
| - β `src/types/` λλ `src/shared/types/` μ μ ν΄λ (junk drawer ν). | ||
| - β `IXxx`, `TXxx` Hungarian prefix. | ||
| - β `Dto` κ° `features/` / `widgets/` / `domain/` μμ import λλ κ²½μ° β boundary μλ°. | ||
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
κ΅Ώ~