Team DAN_DA_DAN Project
Next.js ๊ธฐ๋ฐ์ ์ง๊ด์ ์ธ ์นธ๋ฐ ๋ณด๋ ํ์ ํด
Taskry๋ ๋ณต์กํ ์ ์ฐจ ์์ด ๋๊ตฌ๋ ์ฝ๊ฒ ์
๋ฌด ํ๋ฆ์ ๊ด๋ฆฌํ ์ ์๋ ์น ๊ธฐ๋ฐ ํ์
๋๊ตฌ์
๋๋ค.
์ง๊ด์ ์ธ UI์ ์ค์๊ฐ ๋๊ธฐํ๋ฅผ ํตํด ํ์ ์์ฐ์ฑ์ ๊ทน๋ํํฉ๋๋ค.
์ ๋ฐ์ดํธ์ผ: 2026-07-02
| ๋ฉ์ธ ๋์๋ณด๋ | ์นธ๋ฐ๋ณด๋ | ์บ๋ฆฐ๋ |
|---|---|---|
![]() |
![]() |
![]() |
-
๐ ์ ๋ฌด ์งํ ํํฉ์ ์๊ฐํ
- ์ ๋ฌด ์ํ(To Do, In Progress, Done)๋ฅผ ๋จ๊ณ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ์๊ฐ์ ์ผ๋ก ํํํฉ๋๋ค.
- ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก ์ํ๋ฅผ ์์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. (์ฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: @dnd-kit)
-
๐๏ธ ๋์๋ณด๋
- ์งํ ์ค์ธ ํ๋ก์ ํธ ํํฉ๊ณผ ์ฃผ์ ์งํ๋ฅผ ํ๋์ ํ์ธํ ์ ์์ต๋๋ค.
-
๐ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ผ์ ๊ด๋ฆฌ
- ์/์ฃผ/์ผ/์ด์ ๋ค 4๊ฐ์ง ๋ทฐ๋ก ์ผ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ผ์ ์ถ๊ฐ/์์ /์ญ์ (CRUD), ํ์ ์ง์ , ์ค์๋ ์ค์ , ๊ฒ์ ๋ฐ ํํฐ๋ง์ ์ง์ํฉ๋๋ค.
-
๐ ํ๋ก์ ํธ ๋ฉ๋ชจ
- ์ํฌ์คํ์ด์ค๋ณ ๋ฉ๋ชจ๋ฅผ ์์ฑํ๊ณ ๊ณ ์ /ํด์ , ์ด๋ชจ์ง ๋ฐ์, ์์ ๋ ์ด๋ธ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
-
๐ข ๊ณต์ง์ฌํญ
- Lexical ๋ฆฌ์น ํ ์คํธ ์๋ํฐ์ GitHub Flavored Markdown์ ์ง์ํฉ๋๋ค.
- ์ค์๋ ํ๋๊ทธ, ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค.
-
๐ ํ์ ์ด๋ ๋ฐ ๊ถํ ๊ด๋ฆฌ
- ์ํฌ์คํ์ด์ค์ ํ์์ ์ด๋ํ๊ณ ์ญํ (Role)์ ์ง์ ํ ์ ์์ต๋๋ค.
-
๐ ๋คํฌ๋ชจ๋
- ๋ผ์ดํธ/๋คํฌ ํ ๋ง๋ฅผ ํค๋์์ ์ฆ์ ์ ํํ ์ ์์ต๋๋ค. (next-themes)
-
๐จ ์ง๊ด์ ์ด๊ณ ๊ฐ๊ฒฐํ UX
- ๋ณต์กํ ํ์ต ์์ด ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ UI๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ํ ๋์์ธ(Responsive Design)์ ์ ์ฉํ์ฌ PC, ํ๋ธ๋ฆฟ, ๋ชจ๋ฐ์ผ ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
-
๐ค ์ค์๊ฐ ํ์ ํ๊ฒฝ
- ํ์์ ์์ ๋ด์ญ๊ณผ ์ํ ๋ณ๊ฒฝ์ด ์ค์๊ฐ์ผ๋ก ๋ณด๋์ ๋ฐ์๋ฉ๋๋ค.
- Supabase๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ์ ์งํฉ๋๋ค.
-
๐ก๏ธ ๊ด๋ฆฌ์ ํจ๋
- ์ฌ์ฉ์ ์ญํ ๊ด๋ฆฌ, ์ ์ฒด ํ๋ก์ ํธ ์กฐํ, ๊ณต์ง์ฌํญ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๐๏ธ ์นธ๋ฐ๋ณด๋: CRUD ๊ธฐ๋ฅ ๊ตฌํ, dnd-kit ๊ธฐ๋ฐ ๋๋๊ทธ ์ค ๋๋กญ, ํํฐ๋ง/์ ๋ ฌ ์์คํ , ํค๋ณด๋ ๋จ์ถํค ํ ์ถ๊ฐ
- ๐ ์บ๋ฆฐ๋: ์ปค์คํ ์บ๋ฆฐ๋ ๋ทฐ(์/์ฃผ/์ผ) ๊ตฌํ, ํ๋ก์ ํธ ๊ธฐ๊ฐ ๊ธฐ๋ฐ ์ผ์ ์ ํ, Supabase Realtime ์ฐ๋
- ๐ ์ธ์ฆ ๊ตฌ์กฐ ๊ฐ์ : ๊ธฐ์กด ์ธ์ฆ์ NextAuthยทSupabase Auth ๋ณํ ๊ตฌ์กฐ๋ก ์ ํ, API ์ธ์ฆ ํตํฉ ์ ํธ ๋ฐ ๋ฏธ๋ค์จ์ด ๋ณ๋ ฌ ์ธ์ ์ฒดํฌ ๊ตฌํ, GitHub OAuth ์ถ๊ฐ
- ๐๏ธ ์ํคํ ์ฒ ๋ฆฌํฉํ ๋ง: project/notice/task ๋ชจ๋์ FSD(Feature-Sliced Design) ๊ตฌ์กฐ๋ก ์ ํ, public API ๊ฒฝ๊ณ ์ ๋ฆฌ
- ๐ ํ๋ก์ ํธ ๋ฉ๋ชจ: ๋ฉ๋ชจ ์์ฑ, soft-delete, ์๋จ ๊ณ ์ /์์ฑ์ ์ ๋ณด/ํ์์คํฌํ ๊ธฐ๋ฅ ๊ตฌํ
- ๐ Storybook: ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ์ปดํฌ๋ํธ ์ ๋ ์ด์ด ์คํ ๋ฆฌ ์์ฑ, ํ ๋ง/๋คํฌ๋ชจ๋ ์ฐ๋
- ๐ก๏ธ ๊ด๋ฆฌ์ ํ์ด์ง: ๊ด๋ฆฌ์ ํ๋ก์ ํธ ํ์ด์ง ์ค๋ฐ์ดํฐ(Supabase) ์ฐ๋, API์ ๊ด๋ฆฌ์ ๊ถํ ๋ฐ ํ๋ก์ ํธ ์์ ๊ถ ๊ฒ์ฆ ๊ฐํ
- ๐ ๋ฐฐํฌ ์์ ํ: Vercel ๋น๋ ์ค๋ฅ ์์ , ๋ฐ์ํ ๋ ์ด์์ ์์ ํ, Next.js ๋ณด์ ์ ๊ทธ๋ ์ด๋
| ๋ถ๋ฅ | ๊ธฐ์ | ๋ฒ์ | ๋น๊ณ |
|---|---|---|---|
| Framework | Next.js (App Router) | 16.2.6 |
React ๊ธฐ๋ฐ ํ์คํ ํ๋ ์์ํฌ |
| Runtime | React | 19.2.0 |
์ต์ React 19 ์ฌ์ฉ |
| Language | TypeScript | ^5 |
์์ ์ ์ธ ํ์ ์์คํ |
| Styling | Tailwind CSS | ^4 |
์ ํธ๋ฆฌํฐ ํผ์คํธ CSS |
| DnD | @dnd-kit | ^6.3.1 |
๋๋๊ทธ ์ค ๋๋กญ ๊ธฐ๋ฅ |
| Auth / DB | Supabase | ^2.105.1 |
GoogleยทGitHub OAuth, PostgreSQL |
| Auth | NextAuth | ^4 |
์ธ์ ๊ด๋ฆฌ, GoogleยทGitHub OAuth |
| Fetching | TanStack Query | ^5 |
์๋ฒ ์ํ ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ํ์นญ |
| Editor | Lexical | ^0.38.2 |
๋ฆฌ์น ํ ์คํธ ์๋ํฐ |
| Calendar | react-big-calendar | ^1.19.4 |
์/์ฃผ/์ผ/์ด์ ๋ค ์บ๋ฆฐ๋ ๋ทฐ |
| Markdown | react-markdown + remark-gfm | ^10.1.0 |
GitHub Flavored Markdown ๋ ๋๋ง |
| Toast | react-hot-toast | ^2.6.0 |
ํ ์คํธ ์๋ฆผ |
| Theming | next-themes | ^0 |
๋คํฌ/๋ผ์ดํธ ๋ชจ๋ ์ ํ |
| Date | date-fns | ^4.1.0 |
๋ ์ง ์ ํธ๋ฆฌํฐ |
| Linting | ESLint | - | ์ฝ๋ ํ์ง ๊ด๋ฆฌ |
| Package Mgr | npm | - | ํจํค์ง ๊ด๋ฆฌ |
git clone https://github.com/Taskry/NextTaskry.git
cd NextTaskry
npm install
# AUTH
NEXTAUTH_URL=your_url
NEXTAUTH_SECRET=your_secret
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
# Database URLs
DATABASE_URL=your_database_url
DIRECT_URL=your+direct_url
# Supabase API
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
- ํ์ฌ ์ธ์ฆ์ NextAuth์ Supabase Auth๋ฅผ ๋ณํ ์ด์ํฉ๋๋ค.
- ๋ก๊ทธ์ธ ํ์ด์ง์์ Google ๋๋ GitHub ์์ ๋ก๊ทธ์ธ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
- ๋ณดํธ ๋ผ์ฐํธ๋ NextAuth ํ ํฐ๊ณผ Supabase ์ธ์ ์ ํจ๊ป ํ์ธํฉ๋๋ค.
- ์๋ฒ API๋ ํตํฉ ์ธ์ฆ ์ ํธ์ ํตํด ์ฌ์ฉ์ ์ปจํ ์คํธ๋ฅผ ์ถ์ถํฉ๋๋ค.
- ๊ด๋ฆฌ์ API๋ role === "admin" ๊ธฐ์ค์ผ๋ก๋ง ํ์ฉํฉ๋๋ค.
- Google OAuth Client ID/Secret๊ณผ ์น์ธ๋ Redirect URI๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
- Supabase OAuth Redirect URL๊ณผ ์ฑ์ redirectTo ์ค์ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ฟ ํค/์ธ์ ์ํ์ ์๋ฒ ํ๊ฒฝ๋ณ์ ๋๋ฝ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
npm run dev
๋ธ๋ผ์ฐ์ ์์ http://localhost:3000์ผ๋ก ์ ์ํ์ฌ ํ์ธํ์ธ์.
src/
โโโ app/ # Next.js App Router
โ โโโ (main)/ # ๋ฉ์ธ ์ฌ์ฉ์ ํ์ด์ง
โ โโโ (admin)/ # ๊ด๋ฆฌ์ ํ์ด์ง
โ โโโ (auth)/ # ์ธ์ฆ ํ์ด์ง
โ โโโ api/ # API ๋ผ์ฐํธ
โ โโโ data/ # ๋ชจ์ ๋ฐ์ดํฐ
โ โโโ sample/ # ์ํ ํ์ด์ง
โ โโโ layout.tsx # ๋ฃจํธ ๋ ์ด์์
โ โโโ page.tsx # ๋ฃจํธ ํ์ด์ง
โ โโโ globals.css # ์ ์ญ ์คํ์ผ
โ
โโโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
โ โโโ features/ # ๋๋ฉ์ธ๋ณ ๊ธฐ๋ฅ ์ปดํฌ๋ํธ
โ โโโ layout/ # ๋ ์ด์์ ์ปดํฌ๋ํธ
โ โโโ shared/ # ๊ณต์ฉ ์ปดํฌ๋ํธ
โ โโโ ui/ # UI ๊ธฐ๋ณธ ์ปดํฌ๋ํธ
โ
โโโ lib/ # ์ ํธ๋ฆฌํฐ ๋ฐ API
โ โโโ api/ # API ํธ์ถ ํจ์
โ โโโ supabase/ # Supabase ํด๋ผ์ด์ธํธ
โ โโโ constants.ts # ์ ์ญ ์์
โ โโโ utils.ts # ์ ํธ๋ฆฌํฐ ํจ์
โ
โโโ types/ # TypeScript ํ์
์ ์
โโโ hooks/ # ์ปค์คํ
React ํ
โโโ providers/ # Context Provider
โโโ config/ # ์ค์ ํ์ผ
gitGraph
commit id: "init"
branch develop
checkout develop
commit id: "setup"
branch feature/login
checkout feature/login
commit id: "feat: login UI"
commit id: "feat: login API"
checkout develop
merge feature/login id: "PR #1" tag: "feature ๋ณํฉ"
branch feature/kanban
checkout feature/kanban
commit id: "feat: kanban board"
checkout develop
merge feature/kanban id: "PR #2"
checkout main
merge develop id: "v1.0.0" tag: "๋ฐฐํฌ"
branch hotfix/login-error
checkout hotfix/login-error
commit id: "fix: login bug"
checkout main
merge hotfix/login-error id: "v1.0.1" tag: "๊ธด๊ธ ์์ "
checkout develop
merge hotfix/login-error id: "hotfix ๋๊ธฐํ"
| ๊ท์น | ์ค๋ช |
|---|---|
| ๋ธ๋์น ๊ตฌ์ฑ | main, develop, feature/*, hotfix/* ๋ธ๋์น ์ฌ์ฉ |
| ์์ ์์ | โ main โ develop ์์ฑ โก develop โ feature/* ์์ฑํ์ฌ ๊ฐ๋ฐ |
| ๋ณํฉ(Merge) | PR์ ํตํด feature โ develop ๋ณํฉ ํ, feature ๋ธ๋์น ์ญ์ |
| ๋๊ธฐํ(Sync) | ์์
์์ ์ ํญ์ develop ๋ธ๋์น๋ฅผ pull ๋ฐ์ ์ต์ ์ํ ์ ์ง |
| ๋ฐฐํฌ(Deploy) | develop์์ ๊ฐ๋ฐ ์๋ฃ ์ main์ ๋ณํฉํ์ฌ ๋ฐฐํฌ |
| ๊ธด๊ธ ์์ (Hotfix) | main์์ hotfix/* ์์ฑ โ ์์ ํ main๊ณผ develop ๋ชจ๋์ ๋ณํฉ |
| ํ์ | ํ์ | ์ค๋ช | ์ค์ ์ฌ์ฉ ์์ |
|---|---|---|---|
feature |
feature/๊ธฐ๋ฅ๋ช
|
์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ | feature/login, feature/kanban-refactor, feature/calendar-timeline-add |
fix |
fix/์ด์๋ช
|
๋ฒ๊ทธ ์์ | fix/z-index, fix/modal-close |
style |
style/๋์ |
์คํ์ผ ๋ณ๊ฒฝ | style/calendar-darkmode |
chore |
chore/์์
๋ช
|
๊ธฐํ ์์ | chore/remove-duplicate-files |
docs |
docs/๋ฌธ์๋ช
|
๋ฌธ์ ์์ | docs/readme |
dev |
dev/์์
์ |
๊ฐ์ธ ๊ฐ๋ฐ ๋ธ๋์น | dev/nelee |
๐ก ๊ท์น: ๋ชจ๋ ์๋ฌธ์๋ก ์์ฑํ๋ฉฐ, ๋จ์ด ๊ตฌ๋ถ์ **ํ์ดํ(-)**์ ์ฌ์ฉํฉ๋๋ค.
๐ ์ค์ ์ฌ์ฉ๋ ๋ธ๋์น ๋ชฉ๋ก (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
# Feature ๋ธ๋์น
feature/login
feature/admin
feature/invite
feature/kanban-manager
feature/kanban-refactor
feature/calendar-kanban-memo
feature/calendar-timeline-add
feature/design-system
feature/notice
feature/project
# Style ๋ธ๋์น
style/calendar-darkmode
# Fix ๋ธ๋์น
fix/z-index
# Chore ๋ธ๋์น
chore/remove-duplicate-files
[type] : subject
body
footer
| ํ๊ทธ | ์ค๋ช |
|---|---|
[feat] |
์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒฝ์ฐ |
[fix] |
๋ฒ๊ทธ๋ฅผ ๊ณ ์น ๊ฒฝ์ฐ |
[design] |
CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ |
[style] |
์ฝ๋ ํฌ๋งท ๋ณ๊ฒฝ, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ์์ ์ด ์๋ ๊ฒฝ์ฐ |
[refactor] |
์ฝ๋ ๋ฆฌํฉํ ๋งํ ๊ฒฝ์ฐ |
[comment] |
ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ |
[docs] |
๋ฌธ์๋ฅผ ์์ ํ ๊ฒฝ์ฐ |
[chore] |
๋น๋ ํ ์คํธ ์ ๋ฐ์ดํธ, ํจํค์ง ๋งค๋์ ์ค์ (์์ค์ฝ๋๋ฅผ ๊ฑด๋ค์ง ์๋ ์์ ) |
[rename] |
ํ์ผ ํน์ ํด๋๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์ ๋ง ํ๋ ๊ฒฝ์ฐ |
[remove] |
์ญ์ ํ๋ ์์ ๋ง ์ํํ ๊ฒฝ์ฐ |
[init] |
๋ธ๋์น ์ด๊ธฐํ ๋ฐ ์ด๊ธฐ ์ ํ ๊ด๋ จ๋ ์ค์ ์ผ ๊ฒฝ์ฐ |
[build] |
๋น๋ ํ์ผ ์์ |
[ci] |
CI ์ค์ ํ์ผ ์์ |
[perf] |
์ฑ๋ฅ ๊ฐ์ |
โ Subject Rule (์ ๋ชฉ)
- ์ ๋ชฉ์ ์ต๋ 50๊ธ์๊ฐ ๋์ง ์๋๋ก ํ๊ณ , ๋ง์นจํ ๋ฐ ํน์๊ธฐํธ๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ์๋ฌธ ์ฌ์ฉ ์, ๋์ฌ ์ํ์ ์ฌ์ฉํ๊ณ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ํ๊ธฐํฉ๋๋ค. (๊ณผ๊ฑฐ ์์ ๊ธ์ง)
- ์ ๋ชฉ์ ๊ฐ์กฐ์ ๊ตฌ๋ฌธ์ผ๋ก ์์ฑํฉ๋๋ค. (์์ ํ ์์ ํ ๋ฌธ์ฅ์ด ์๋, ๊ฐ๊ฒฐํ๊ณ ์์ ์ ์ธ ์์ )
โก Body Rule (๋ณธ๋ฌธ)
- ๋ณธ๋ฌธ์ ํ ์ค ๋น 72์ ๋ด๋ก ์์ฑํฉ๋๋ค.
- ๋ด์ฉ์ ์์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์ต๋ํ ์์ธํ ์์ฑํฉ๋๋ค.
- ์ด๋ป๊ฒ ๋ณ๊ฒฝํ๋์ง๋ณด๋ค '๋ฌด์์', '์' ๋ณ๊ฒฝํ๋์ง๋ฅผ ์ค๋ช ํฉ๋๋ค.
โข Footer Rule (๊ผฌ๋ฆฌ๋ง)
- ๊ผฌ๋ฆฌ๋ง์ **์ ํ ์ฌํญ(Optional)**์ด๋ฉฐ, ์ด์ ํธ๋์ปค ID๋ฅผ ์์ฑํฉ๋๋ค.
- ํ์:
"์ ํ: #์ด์ ๋ฒํธ"(์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ ์ผํ๋ก ๊ตฌ๋ถ) - ์ด์ ํธ๋์ปค ์ ํ:
Fixes: ์ด์ ์์ ์ค (์์ง ํด๊ฒฐ๋์ง ์์ ๊ฒฝ์ฐ)Resolves: ์ด์๋ฅผ ํด๊ฒฐํ์ ๋ ์ฌ์ฉRef: ์ฐธ๊ณ ํ ์ด์๊ฐ ์์ ๋ ์ฌ์ฉRelated to: ํด๋น ์ปค๋ฐ์ ๊ด๋ จ๋ ์ด์ ๋ฒํธ (์์ง ํด๊ฒฐ๋์ง ์์ ๊ฒฝ์ฐ)
[feat] : ์ถ๊ฐ get data api ํจ์
๋ก๊ทธ์ธ API ๊ฐ๋ฐ
Resolves: #123
Ref: #456
Related to: #48, #45
์ฌ์ฉํ๋ ๋ค์ด๋ฐ ์ข ๋ฅ
PascalCase(ํ์ค์นผ ์ผ์ด์ค)camelCase(์นด๋ฉ ์ผ์ด์ค)kebab-case(์ผ๋ฐฅ ์ผ์ด์ค)snake_case(์ค๋ค์ดํฌ ์ผ์ด์ค)
๋ช ๋ช ๊ท์น ์์ธ
- ๋ณ์ ๋ฐ ํจ์:
camelCase์ฌ์ฉ - Boolean:
is์ ๋์ฌ ์ฌ์ฉ - ๋ฐฐ์ด(Array):
List์ ๋ฏธ์ฌ ์ฌ์ฉ - ์์(Constant): ์๋ฌธ ๋๋ฌธ์,
SNAKE_CASE์ฌ์ฉ - ์ด๋ฒคํธ ํธ๋ค๋ฌ:
handle์ ๋์ฌ ์ฌ์ฉ - Fetch ํจ์: HTTP Method(
get,post,put,del)๋ก ์์
const userName = "Alice";
const userAge = 30;
// Boolean
const isLoggedIn = true;
// ๋ฐฐ์ด (List ์ ๋ฏธ์ฌ)
const dataList = [10, 20, 30];
// ์์ (๋๋ฌธ์ Snake ํ๊ธฐ๋ฒ)
const NAME_ROLE = "Alice";
// ์ด๋ฒคํธ ํธ๋ค๋ฌ (handle ์ ๋์ฌ)
const handleClick = () => {};
const handleChange = () => {};
// Fetch ํจ์ (Method๋ก ์์)
const getDataList = () => {...}
const postDataList = () => {...}
const putDataList = () => {...}
const delDataList = () => {...}Props ์ ๋ ฌ
- ์ฌ๋ฌ ์ค Props: Props๊ฐ ๋ง๊ฑฐ๋ ๊ธธ ๊ฒฝ์ฐ, ๊ฐ prop์ ๋ณ๋์ ์ค์ ์์ฑํ๊ณ ๋ค์ฌ์ฐ๊ธฐํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ ๋๋ค.
<MyComponent propA="valueA" propB={someVariable} propC={() =>
console.log("clicked")} />๋ธ๋ก ๊ตฌ๋ฌธ (Block Syntax)
- ํ ์ค์ง๋ฆฌ ๋ธ๋ก์ผ ๊ฒฝ์ฐ๋ผ๋ ์ค๊ดํธ {}๋ฅผ ์๋ตํ์ง ์๊ณ ๋ช ํํ ์ค ๋ฐ๊ฟํ์ฌ ์ฌ์ฉํฉ๋๋ค.
// โ ๋์ ์์
if (true) return "hello";
// โ
์ข์ ์์
if (true) {
return "hello";
}- ํด๋๋ช : camelCase๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํ์ผ๋ช
:
- ์ปดํฌ๋ํธ, ํด๋์ค ํ์ผ: PascalCase (.jsx, .tsx)
- ์ผ๋ฐ JS ํ์ผ (service, config ๋ฑ): camelCase (.js, .ts)
// ์ปดํฌ๋ํธ ํ์ผ
Header.jsx
Menu.jsx
// Service ํ์ผ
authSignUp.js
authGoogleSignin.js
// Config ํ์ผ
firebase.js
firebaseError.js
- ์ผ๊ด์ฑ ์ ์ง: CSS Modules, Styled Components, Tailwind CSS ๋ฑ ์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ ์ ์ฒด์์ ํต์ผ๋ ๊ท์น์ ๋ฐ๋ฆ ๋๋ค.
- ์ธ๋ผ์ธ ์คํ์ผ ์ง์: ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด style ์์ฑ์ ์ง์ ์ฌ์ฉํ๋ ์ธ๋ผ์ธ ์คํ์ผ์ ํผํฉ๋๋ค.
// ๋์ ์์
<div style={{ color: 'red', fontSize: '16px' }}>Hello</div>
// ์ข์ ์์ (CSS ํด๋์ค ์ฌ์ฉ)
<div className="text-red-16">Hello</div>์ด ํ๋ก์ ํธ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!






