Skip to content

Namgyeon/Taskify

Repository files navigation

๐ŸŽฏ Taskify

taskify

ํŒ€ ํ˜‘์—…์„ ์œ„ํ•œ Kanban ๋ณด๋“œ ์Šคํƒ€์ผ ์ผ์ • ๊ด€๋ฆฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜


๐Ÿ“ ๊ฐœ์š”

Taskify๋Š” ์ง๊ด€์ ์ธ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” Kanban ๋ณด๋“œ ์Šคํƒ€์ผ์˜ ํ˜‘์—… ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฌด ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ ํŒ€ ํ˜‘์—…๊นŒ์ง€, ํšจ์œจ์ ์ธ ์ผ์ • ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“Š Framer Motion ๋žœ๋”ฉํŽ˜์ด์ง€

Framer Motion ์ ์šฉํ•œ ๋žœ๋”ฉํŽ˜์ด์ง€

แ„…แ…ขแ†ซแ„ƒแ…ตแ†ผแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต

๐Ÿ“Š ๋Œ€์‹œ๋ณด๋“œ ๊ด€๋ฆฌ

ํ”„๋กœ์ ํŠธ๋ณ„ ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ

แ„…แ…ฉแ„€แ…ณแ„‹แ…ตแ†ซ-แ„ƒแ…ขแ„‰แ…ตแ„‡แ…ฉแ„ƒแ…ณแ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ

๋กœ๊ทธ์ธ -> ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ

๐Ÿƒ Kanban ๋ณด๋“œ

๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ์ง๊ด€์ ์ธ ์—…๋ฌด ํ๋ฆ„ ๊ด€๋ฆฌ

แ„แ…ฅแ†ฏแ„…แ…ฅแ†ท,แ„แ…กแ„ƒแ…ณ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ

์ปฌ๋Ÿผ, ์นด๋“œ ์ƒ์„ฑ

แ„ƒแ…ณแ„…แ…ขแ„€แ…ณแ„‹แ…ขแ†ซแ„ƒแ…ณแ„…แ…ฉแ†ธ

์นด๋“œ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ

๐Ÿ‘ฅ ์‹ค์‹œ๊ฐ„ ํ˜‘์—…

ํŒ€์› ์ดˆ๋Œ€, ๋Œ“๊ธ€ ์‹œ์Šคํ…œ, ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ

แ„ƒแ…ขแ„‰แ…ตแ„‡แ…ฉแ„ƒแ…ณ แ„Žแ…ฉแ„ƒแ…ข

ํŒ€์› ์ดˆ๋Œ€

แ„ƒแ…ขแ†บแ„€แ…ณแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ท

๋Œ“๊ธ€ ์‹œ์Šคํ…œ

๐Ÿ“ฑ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ

๋ชจ๋ฐ”์ผ, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํ†ฑ ์™„๋ฒฝ ์ง€์›

แ„‡แ…กแ†ซแ„‹แ…ณแ†ผแ„’แ…งแ†ผ

๋ฐ˜์‘ํ˜•

์„ธ๋ถ€ ๊ธฐ๋Šฅ:

  • โœ… ์นด๋“œ ์‹œ์Šคํ…œ: ๋‹ด๋‹น์ž, ๋งˆ๊ฐ์ผ, ํƒœ๊ทธ, ์ด๋ฏธ์ง€, ์ƒ์„ธ ์„ค๋ช…
  • ๐Ÿ–ฑ๏ธ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ: ์ง๊ด€์ ์ธ ์นด๋“œ ์ด๋™ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ
  • ๐Ÿ’ฌ ๋Œ“๊ธ€ ์‹œ์Šคํ…œ: ์นด๋“œ๋ณ„ ์‹ค์‹œ๊ฐ„ ์†Œํ†ต
  • ๐Ÿ”” ์ดˆ๋Œ€ ๊ด€๋ฆฌ: ๋Œ€์‹œ๋ณด๋“œ ๋ฉค๋ฒ„ ์ดˆ๋Œ€ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ
  • ๐Ÿ“ท ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ: ์นด๋“œ๋ณ„ ์ฒจ๋ถ€ ํŒŒ์ผ ์ง€์›
  • ๐ŸŽจ ์ปค์Šคํ…€ ํ…Œ๋งˆ: ๋Œ€์‹œ๋ณด๋“œ๋ณ„ ๊ฐœ์„ฑ์žˆ๋Š” ์ƒ‰์ƒ ์„ค์ •

โš™๏ธ API ํ๋ฆ„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-07-24 แ„‹แ…ฉแ„’แ…ฎ 3 29 30 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-07-24 แ„‹แ…ฉแ„’แ…ฎ 3 29 43 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-07-24 แ„‹แ…ฉแ„’แ…ฎ 3 30 02

๐Ÿ’Ž ์ฃผ์š” ๊ธฐ์ˆ  ์Šคํƒ

โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๊ธฐ์ˆ  ์ด๋ฆ„ ์„ ์ • ์ด์œ 
Next.js ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„ ๋ฐฉ์‹์ธ ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ SSR๊ณผ CSR๋ฅผ ํ˜ผํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ ์ •ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
TypeScript Props ํƒ€์ž… ์ง€์ •์œผ๋กœ ์ธํ•œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๊ฐ์†Œ, VSCode ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ ๋“ฑ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ†ตํ•œ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„ ์„ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
React Query UI ์ƒํƒœ์™€ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , API ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ Promise๋ฅผ ์ง‘์•ฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
Axios Axios instance์˜ interceptor ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ค‘๋ณต ์ฝ”๋“œ ์ตœ์†Œํ™” ๋“ฑ์„ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
React Hook Form ํผ์˜ ์ƒํƒœ๋ฅผ ์ง‘์•ฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
Zod ํผ์˜ ์œ ํšจ์„ฑ ์ •์˜ ๋ฐ ํƒ€์ž… ์ถ”์ถœ์ด ์šฉ์ดํ•˜๊ณ , API request ํƒ€์ž… ์ •์˜ ๋ฐ safeParse() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•œ ์‘๋‹ต ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฒ€์ฆ์„ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
Framer Motion ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์ธํ„ฐ๋ž™์…˜์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
Tailwind CSS ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค ์‚ฌ์šฉ์œผ๋กœ ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ณ ๋ฏผ ๊ฐ์†Œ, ๋””์ž์ธ ์‹œ์Šคํ…œ์ด ๋ฏธํกํ•  ์‹œ ์œ ์—ฐํ•œ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
Vercel Next.js์™€์˜ ์™„๋ฒฝํ•œ ํ†ตํ•ฉ ๋ฐ ์†Œ๊ทœ๋ชจ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฌด๋ฃŒ ํ”Œ๋žœ์„ ์ œ๊ณตํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ ํด๋” ๊ตฌ์กฐ

๐Ÿ“‚src
 โ”ฃ ๐Ÿ“œmiddleware.ts
 โ”ฃ ๐Ÿ“‚apis
 โ”ƒ โ”ฃ ๐Ÿ“‚auth
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œindex.ts
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œqueries.ts
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œtypes.ts
 โ”ƒ โ”— ...
 โ”ฃ ๐Ÿ“‚app
 โ”ƒ โ”ฃ ๐Ÿ“œglobals.css
 โ”ƒ โ”ฃ ๐Ÿ“œlayout.tsx
 โ”ƒ โ”ฃ ๐Ÿ“‚(after-login)
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚mydashboard
 โ”ƒ โ”ƒ โ”— ...
 โ”ƒ โ”— ๐Ÿ“‚(before-login)
 โ”ƒ   โ”ฃ ๐Ÿ“‚(auth)
 โ”ƒ   โ”ƒ โ”— ๐Ÿ“‚login
 โ”ƒ   โ”— ...
 โ”ฃ ๐Ÿ“‚assets
 โ”ฃ ๐Ÿ“‚components
 โ”ƒ โ”ฃ ๐Ÿ“‚auth
 โ”ƒ โ”ฃ ๐Ÿ“‚ui
 โ”ƒ โ”— ...
 โ”ฃ ๐Ÿ“‚types
 โ”ƒ โ”— ๐Ÿ“œcommon.ts
 โ”— ๐Ÿ“‚utils

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages