junsobi

Menu

Close

๐Ÿ“† Todo App
BDD(ํ–‰์œ„ ์ฃผ๋„ ๊ฐœ๋ฐœ)๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•œ Todo App

Fri Aug 04 2023

Next.js
React Query
Axios
Recoil
TypeScript
Jest
Playwright
Firebase
Vercel Deployment
Image of ๐Ÿ“† Todo App

Todo App์€ BDD(ํ–‰์œ„ ์ฃผ๋„ ๊ฐœ๋ฐœ)๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋Š” ํ•  ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ฉฐ, ์™„๋ฃŒํ•œ ํ•  ์ผ์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Features

  • ํ•  ์ผ ์ถ”๊ฐ€: ์‚ฌ์šฉ์ž๋Š” ํ•  ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•  ์ผ ์ˆ˜์ •: ์ถ”๊ฐ€ํ•œ ํ•  ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•  ์ผ ์™„๋ฃŒ: ์™„๋ฃŒํ•œ ํ•  ์ผ์„ ์ฒดํฌํ•˜์—ฌ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ: Jest์™€ Playwright๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tech Stack

  • Frontend: Next.js, React Query, Recoil, TypeScript
  • Backend: Firebase
  • Testing: Jest, Playwright
  • Deployment: Vercel

๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ

Frontend

  • Next.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR(Server Side Rendering)์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • React Query๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Recoil์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • TypeScript๋ฅผ ๋„์ž…ํ•˜์—ฌ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

Backend

  • Firebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Testing

  • Jest๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ๋‹› ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ฝ”๋“œ์˜ ์‹ ๋ขฐ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • Playwright๋ฅผ ํ™œ์šฉํ•˜์—ฌ End-to-End ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•œ ๊ณผ์ œ

  • SSR ๊ตฌํ˜„: Next.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๊ด€๋ฆฌ: Recoil์„ ํ™œ์šฉํ•˜์—ฌ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ: Jest์™€ Playwright๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜: Firebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.