์ํ |
์ง์ |
์ง์ |
๋์ |
| ์นดํ ๊ณ ๋ฆฌ | ๊ธฐ์ ์คํ |
|---|---|
| Library | |
| Server State Management | |
| Language | |
| Build Tool | |
| Styling | |
| Repository Management | |
| Build System | |
| Package Manager | |
| CI/CD |
| ๋ธ๋์น | ์ญํ | ์ค๋ช |
|---|---|---|
main |
Production | ์ถ์๋ ์ ์๋ ์์ ๋ ์ํ์ ์ฝ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. |
develop |
Development | ๋ชจ๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์ด ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์งํ๋ฉ๋๋ค. |
Feature |
Feature | ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ๋ฒ๊ทธ ์์ ์ ์ํ ๊ฐ๋ณ ์์ ๋ธ๋์น์ ๋๋ค. |
๐ ๊ฐ๋ฐ ํ๋ก์ธ์ค
-
์ด์ ๊ธฐ๋ฐ ๋ธ๋์น ์์ฑ
- ๋ชจ๋ ์์ ์์ ์ GitHub Issue๋ฅผ ์์ฑํฉ๋๋ค.
- ํด๋น ์ด์ ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก develop ๋ธ๋์น์์ ๊ธฐ๋ฅ ๋ณ ์ด์ ๋ธ๋์น๋ก ๋ถ๊ธฐํฉ๋๋ค. (
feat/๊ธฐ๋ฅ๋ช /#issue-number)
-
์์ ๋ฐ PR ์์ฑ
- ๊ธฐ๋ฅ ๊ตฌํ์ด ์๋ฃ๋๋ฉด PR์ ์์ฑํฉ๋๋ค.
- ํ์ ์ค 2๋ช ์ด์์ Approve์ด ์์ ๋, develop ๋ธ๋์น๋ก ๋ณํฉํฉ๋๋ค.
-
๋ธ๋์น ์ญ์
- develop ๋ธ๋์น๋ก ๋ณํฉ ํ, ์ฌ์ฉ์ด ๋๋ ์ด์ ๋ธ๋์น๋ ์ญ์ ํฉ๋๋ค.
๐ ์ปค๋ฐ ์ปจ๋ฒค์
init: ์ปค๋ฐ ๋ฉ์์ง
| ์ ํ | ์๋ฏธ | ์์ธ ๋ด์ฉ |
|---|---|---|
| feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ | ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํ |
| fix | ๋ฒ๊ทธ ์์ | ์ค๋ฅ ์์ |
| hotfix | ๊ธด๊ธ ์์ | ์น๋ช ์ ์ธ ๋ฒ๊ทธ ์ฆ์ ์์ |
| refactor | ๋ฆฌํฉํ ๋ง | ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ (๊ธฐ๋ฅ ๋ณํ X) |
| style | ์คํ์ผ ๋ณ๊ฒฝ | ์คํ์ผ ์ฝ๋ ๋ฐ ํฌ๋งทํ ๋ณ๊ฒฝ |
| docs | ๋ฌธ์ ์์ | ๋ฌธ์ ์์ฑ ๋ฐ ์์ |
| chore | ๊ธฐํ ์์ | ๋น๋ ์ ๋ฌด, ํจํค์ง ๋งค๋์ ๋ฑ ์ค์ ๋ณ๊ฒฝ |
| build | ๋น๋ ์์คํ | ๋น๋ ๋๊ตฌ ๋ฐ ์ข ์์ฑ ๋ณ๊ฒฝ |
| ci | CI ์ค์ | CI ์ค์ ํ์ผ ๋ฐ ์คํฌ๋ฆฝํธ ์์ |
| perf | ์ฑ๋ฅ ๊ฐ์ | ์ฑ๋ฅ ์ต์ ํ ์ฝ๋ |
| test | ํ ์คํธ | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ ๋ฐ ์์ |
| type | ํ์ ์์ | ํ์ ์ ์ ์์ |
| asset | ๋ฆฌ์์ค ์ถ๊ฐ | ๋์์ธ ์์ (svg, img) ์ถ๊ฐ |
| rename | ์ด๋ฆ/์์น ์์ | ํ์ผ๋ช ์์ ๋ฐ ํด๋ ์ด๋ |
| remove | ํ์ผ ์ญ์ | ๋ฏธ์ฌ์ฉ ํ์ผ ์ญ์ |
| revert | ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ | ์ด์ ์ปค๋ฐ ๋ณต๊ตฌ |
| init | ์ด๊ธฐ ์ธํ | ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ |
โ๏ธ ์ปดํฌ๋ํธ
-
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ง PascalCase ์ฌ์ฉ
- ์๋ฏธ ์๋ div ํ๊ทธ ์ฌ์ฉ ์ง์
- ์ต์๋จ fragment ์ฌ์ฉ
- children์ด ๋ถํ์ํ ๋ selfClosing์ฌ์ฉํ๊ธฐ
<์ปดํฌ๋ํธ ์ด๋ฆ/>
const InfoText = () => { return ( <> <h1>Welcome!</h1> <p>We are Team-Decibel!</p> </> ); };
๐ ํด๋๋ช
-
์ผ๋ฐฅ ์ผ์ด์ค(kebab-case) ์ฌ์ฉ
- ํด๋๋ช ๊ณผ ํ์ผ๋ช ๋ชจ๋ ์ผ๋ฐฅ ์ผ์ด์ค๋ฅผ ์ ์ฉํฉ๋๋ค.
- โ๏ธ๏ธ
UserProfile/,loginForm.tsx - โ
user-profile/,login-form.tsx
-
๋ฌด์กฐ๊ฑด ์๋ฌธ์๋ก ์์
- ๋ชจ๋ ํ์ผ๊ณผ ํด๋๋ ์๋ฌธ์๋ก ์์ํ์ฌ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
- โ
Main-header.tsx - โ
main-header.tsx
๐งฉ ํ์
-
PascalCase ์ฌ์ฉ
- ํ์
๊ณผ ์ธํฐํ์ด์ค ์ด๋ฆ์
PascalCase๋ก ์์ฑํฉ๋๋ค.
- ํ์
๊ณผ ์ธํฐํ์ด์ค ์ด๋ฆ์
-
interface ์ฌ์ฉ ์งํฅ
- ๊ฐ์ฒด ๊ตฌ์กฐ ์ ์ ์
type๋์interface๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ฒด ๊ตฌ์กฐ ์ ์ ์
-
Props ๋ค์ด๋ฐ ๊ท์น
- ์ปดํฌ๋ํธ์ Props ํ์
์ [์ปดํฌ๋ํธ๋ช
] +
Props์ ๋ฏธ์ฌ๋ฅผ ๋ถ์ ๋๋ค. interface AmpProps { ... }
- ์ปดํฌ๋ํธ์ Props ํ์
์ [์ปดํฌ๋ํธ๋ช
] +
-
์ผ๋ฐ ํ์ ๋ค์ด๋ฐ ๊ท์น
- ๊ทธ ์ธ ์ผ๋ฐ์ ์ธ ํ์
์ ์ ์์๋ ์ด๋ฆ ๋ค์
Types์ ๋ฏธ์ฌ๋ฅผ ๋ถ์ ๋๋ค. interface UserTypes { ... }
- ๊ทธ ์ธ ์ผ๋ฐ์ ์ธ ํ์
์ ์ ์์๋ ์ด๋ฆ ๋ค์
๐ก ๋ณ์
-
๋ณ์ ๋ฐ ์์ ์ ์ธ
constโlet์์๋ก ์ ์ธ (var ๊ธ์ง)- ์์๋
UPPER_SNAKE_CASE์ฌ์ฉ (ex.API_KEY) - ์ค์๋ง ์ง์, ์๋ฏธ ์๋ ๋ณ์๋ช
์ฌ์ฉ (ex.
userData)
-
๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ํ์
- ๋ณต์ ๋ฐ์ดํฐ๋ ๋์
s์ฌ์ฉ (ex.userLists) - Boolean์
is์ ๋์ฌ ์ฌ์ฉ (ex.isActive) - ๋ฌธ์์ด ์กฐํฉ์ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด(
`) ์ฌ์ฉ
- ๋ณต์ ๋ฐ์ดํฐ๋ ๋์
-
map์ฌ์ฉ ์key์index์ฌ์ฉ ์ง์ (๊ณ ์ID๊ถ์ฅ)
๐ ํจ์
-
ํ์ดํ ํจ์(
const) ์ฌ์ฉ์ ์์น์ผ๋ก ํฉ๋๋ค. -
๋ค์ด๋ฐ: [๋์ฌ + ๋ช ์ฌ] ํ์์ ์ฌ์ฉํฉ๋๋ค.
get: ๊ฐ ๋ฐํ |create: ์ ๊ท ์์ฑ |check: ๋ก์ง ํ์ธconvert: ํํ ๋ณํ |add/minus: ์์น ์ฐ์ฐ |filter: ๋ฐฐ์ด ํํฐ๋ง
-
์ด๋ฒคํธ ํธ๋ค๋ฌ: ์ค์ง ์ด๋ฒคํธ ๊ด๋ จ ํจ์์๋ง
handle์ ๋ถ์ ๋๋ค.- ๋์์ ์์ธํ ๊ธฐ๋ก (ex.
handleResetClick,handleSubmitClick)
- ๋์์ ์์ธํ ๊ธฐ๋ก (ex.
-
์ ํธ ํจ์: ๋ฐํ๊ฐ ์ค์ฌ์ผ๋ก ๋ค์ด๋ฐํฉ๋๋ค.
- Boolean ๋ฐํ ์
has์ ๋์ฌ ์ฌ์ฉ (ex.hasEmail)
- Boolean ๋ฐํ ์
๐๏ธ ๋ฐฐ์ด & ๊ตฌ์กฐ ๋ถํด
- ๋ฐฐ์ด ๋ณต์ฌ: ์คํ๋ ๋ ์ฐ์ฐ์(
...) ์ฌ์ฉ- ex)
const copys = [...originals]
- ex)
- ๋ฐ๋ณต๋ฌธ:
for๋ฌธ ์ง์,forEach๋map์ฌ์ฉ ๊ถ์ฅ - ๊ตฌ์กฐ ๋ถํด ํ ๋น: ๊ฐ์ฒด/๋ฐฐ์ด ์ถ์ถ ์ ํ์ ์ฌ์ฉ (ํนํ Props ๋ฐ ํจ์ ํ๋ผ๋ฏธํฐ)
// 1. Interface ๋ค์ด๋ฐ (PascalCase + Types)
interface VoteAllInfoTypes {
date: number;
time: string;
}
interface UserDataTypes {
userName: string;
userBirth: string;
}
// 2. ๊ตฌ์กฐ ๋ถํด ํ ๋น ์ ์ฉ ์์
const MonthVoting = ({ date, time }: VoteAllInfoTypes) => { ... }
const checkIsUser = ({ userName, userBirth }: UserDataTypes) => { ... }๐จ ์คํ์ผ
- ์์๋ฅผ ๊ฐ์ธ๋ Wrapper๋
container๋ก ๋ช ์นญ ํต์ผ - ์คํ์ผ ๋ค์ด๋ฐ์ ์์์ ์๋ฏธ๊ฐ ๋๋ฌ๋๋๋ก ์์ฑ (ex.
user-list-container)
์์ฑ ๊ธฐ์ ์ ์๋์ ํ๋ฆ(๋ฐ๊นฅ์์ ์์ชฝ์ผ๋ก)์ ์ต๋ํ ์ค์ํฉ๋๋ค.
- Display & Layout:
display,position,float,z-index - Box Model:
width,height,margin,padding - Visual:
border,background,opacity - Typography:
color,font,text-align,white-space - Content:
content(pseudo-elements)
CSS ์์ฑ ๊ธฐ์ ์์
- display
-๊ฐ์ฒด์ ๋ ธ์ถ์ฌ๋ถ/ํํ๋ฐฉ์-- - list-style
- position
-์์น/์ขํ-- - float
- clear
- width / height
-ํฌ๊ธฐ/์ฌ๋ฐฑ-- - padding / margin
- border / background
-์ค๊ณฝ/๋ฐฐ๊ฒฝ-- - color / font
-๊ธ์/์ ๋ ฌ-- - text-decoration
- text-align / vertical-align
- white-space
- other text
- content
-๋ด์ฉ--
๐ ํ์ ๊ท์น
-
๐ก ๋ชจ๋ฅด๋ ๊ฒ์ ๋ถ๋๋ฌ์ํ์ง ์๊ธฐ
-
๐โโ๏ธ ์ง๋ฌธ ๋ง์ด ํ๊ธฐ
-
๐ฑ ์๋ก ๋ฐฐ๋ คํ๋ฉฐ ์ํตํ๊ธฐ
-
๐ง ๊น์ด ์๊ฐํ๊ณ ๊ณ ๋ฏผํด๋ณด๊ธฐ
-
โฐ ๋งค์ผ ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ ์งํค๊ธฐ
๐ ์ฝ๋๋ฆฌ๋ทฐ ๊ท์น
- ๊ณต๊ฒฉ์ ์ด๊ฑฐ๋ ๋จ์ ์ ์ธ ํํ์ ์ง์ํฉ๋๋ค.
- ๊ฐ์ธ์ ์ทจํฅ์ด ์๋ ๊ฐ๊ด์ ์ธ ์ด์ ์ ๋งฅ๋ฝ์ ์ค๋ช ํฉ๋๋ค.
- ๋ ๋์ ๋์์ด ์๋ค๋ฉด ๊ด๋ จ ๊ณต์ ๋ฌธ์๋ ๋ ํผ๋ฐ์ค(Reference) ๋งํฌ ์ฒจ๋ถ๋ฅผ ์ ๊ทน ๊ถ์ฅํฉ๋๋ค.
- AI ๋ฆฌ๋ทฐ์ด๋ ๋ณด์กฐ ๋๊ตฌ์ผ ๋ฟ์ ๋๋ค. ์๋ ๋ฆฌ๋ทฐ์ ์์กดํ์ฌ ๋์ถฉ ๋๊ธฐ์ง ์์ต๋๋ค.
- ์์ฑ์์ ๋ก์ง, ์๋, ๋น์ฆ๋์ค ๋งฅ๋ฝ์ ์ฐ๋ฆฌ ์ค์ค๋ก ๊ผผ๊ผผํ ํ์ธํ๊ณ ๊ฒ์ฆํฉ๋๋ค.
- ๋ชจ๋ ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ฅผ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์์ฉํ ํ์๋ ์์ต๋๋ค.
- ์๊ฒฌ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์ ๊ทน์ ์ผ๋ก ํ ๋ก ํ๋ฉฐ, ์๊ฒฌ์ ๋๋๋๋ค.



