ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

2025.03.21(๊ธˆ) Task

ํŒ€ ํšŒ์˜

- ERD : ํŽ˜์ด์ง€ ๊ตฌ์กฐํ™”
- supabase DB ์„ค์ •
- ํ”„๋กœ์ ํŠธ ์…‹์—…
- ์—ญํ•  ๋‚˜๋ˆ„๊ธฐ

 

๊ฐœ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- ์ดˆ๊ธฐ ์„ค์ •

- ๊ธฐ๋Šฅ ํŒŒ์•… ๋ฐ ๊ตฌํ˜„

 

 

ํŒ€ ํšŒ์˜

 

ERD : ํŽ˜์ด์ง€ ๊ตฌ์กฐํ™”

๐Ÿ“์ธ์ฆ / ์ธ๊ฐ€ ๋ฐฉ๋ฒ• : ๋น„ํšŒ์› ์ต๋ช…์ œ - ํ™*๋™, ๋Œ“๊ธ€ ์ž‘์„ฑ ์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •

๐Ÿ“CUD : ์˜ํ™” ์ƒ์„ธ ํŽ˜์ด์ง€ ๋Œ“๊ธ€ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ

๐Ÿ“์™€์ด์–ดํ”„๋ ˆ์ž„์„ ํ†ตํ•ด์„œ ํŽ˜์ด์ง€ ๋‹ค์‹œ ์ •ํ•˜๊ธฐ

๐Ÿ“ํŽ˜์ด์ง€ ๊ตฌ์กฐ ์ •ํ•˜๊ธฐ

๐Ÿ“ํ•„์ˆ˜ ๊ธฐ๋Šฅ ์ฒดํฌ

 

 

supabase DB ์„ค์ •

๐Ÿ“ํŒ€์› ์ดˆ๋Œ€

๐Ÿ“comments ํ…Œ์ด๋ธ” ์„ค์ •

  • id : uuid
  • created_at : timestamptz
  • name : varchar
  • password : varchar
  • content : varchar
  • movie_id : int8

 

 

ํ”„๋กœ์ ํŠธ ์…‹์—…

๐Ÿ“Next.js ์„ค์น˜

๐Ÿ“prettierrc

  • ์„ค์น˜ ๋ฐ ์ž๋™ ์ •๋ ฌ

๐Ÿ“.gitkeep / .gitignore

  • .gitignore : ๊นƒํ—™์— ์˜ฌ๋ผ๊ฐ€๋ฉด ์•ˆ ๋˜๋Š” ํŒŒ์ผ ์„ค์ •
  • .gitkeep : ๋นˆ ๋””๋ ‰ํ† ๋ฆฌ ์œ ์ง€ํ•˜์—ฌ ๊นƒํ—™ ๊ฒŒ์‹œ(๊ฐ ํด๋”๋งˆ๋‹ค ์„ค์ • - ๋‚ด์šฉ ์—†์ด ํŒŒ์ผ๋ช…๋งŒ)

๐Ÿ“.env / .env.local

  • TMDB ApiKey
  • Supabase Key

๐Ÿ“๊นƒํ—™

  • default ๋ธŒ๋žœ์น˜ dev ์„ค์ •
  • ์ด์Šˆ & PR ํ…œํ”Œ๋ฆฟ

 

๊ฐœ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

 

์ดˆ๊ธฐ ์„ค์ •

๐Ÿ“์ด์Šˆ ์ž‘์„ฑ

๐Ÿ“๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

๐Ÿ“.env ํŒŒ์ผ ์„ค์ •

๐Ÿ“๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •

 

๊ธฐ๋Šฅ ํŒŒ์•… ๋ฐ ๊ตฌํ˜„

 

์™€์ด์–ดํ”„๋ ˆ์ž„

 

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

  • ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • ์นดํ…Œ๊ณ ๋ฆฌ : Now Playing / Popular / Top Rated / Upcoming
  • ํŽ˜์ด์ง€๋„ค์ด์…˜
  • ์ถ”ํ›„ 3ํŽ˜์ด์ง€ ์ •๋„๊นŒ์ง€ ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ์ดํ›„ SSR๋กœ ์„œ๋ฒ„ ์š”์ฒญ
  • ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ ์ถ”๊ฐ€ : Home์œผ๋กœ ์ด๋™
  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ œ๊ณต ๋ฐ›๊ธฐ : ํ—ค๋”, ์นดํ…Œ๊ณ ๋ฆฌ ๋ฒ„ํŠผ, ์˜ํ™” ์นด๋“œ 

๐Ÿ“ํŒŒ์ผ ๊ตฌ์กฐ

  • src / app / components / catecory / (now-playing, popular, top-rated, upcoming)

๐Ÿ“๊ตฌํ˜„ ์ˆœ์„œ

  1. ์„œ๋ฒ„ ์•ก์…˜์œผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
  2. Tanstack์œผ๋กœ ๋ฐ์ดํ„ฐ ์บ์‹ฑ (~3ํŽ˜์ด์ง€)
    • staleTime, gcTime ์„ค์ •
  3. ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์บ์‹œ ์˜ต์…˜ ๋ณ€๊ฒฝ
    • ~3ํŽ˜์ด์ง€ ISR๋กœ revalidate ์ ์šฉ (cache: "force-cache", revalidate: 60 * 1000)
    • 4ํŽ˜์ด์ง€~ SSR
  4. ํŽ˜์ด์ง€๋„ค์ดํŠธ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
    • CSR
    • ์˜จํด๋ฆญ ์ด๋ฒคํŠธ (์„œ๋ฒ„ ์•ก์…˜ ์‹คํ–‰) -> ๋ฐ์ดํ„ฐ ์š”์ฒญ

 

๐Ÿ“๊ณ ๋ฏผํ•  ๋‚ด์šฉ

  • ํŽ˜์ด์ง€๋ฅผ ์นด๋“œ ๊ฐœ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ธฐ
    TMDB์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํŽ˜์ด์ง€๋‹น ์˜ํ™” 20๊ฐœ์”ฉ
    ๋ฐ์ดํ„ฐ ํ˜•ํƒœ : {"datas":{ }, "page": 1,  "results": [ {์˜ํ™” 1}, {์˜ํ™” 2}, {์˜ํ™” 3}, ... , {์˜ํ™” 20} ] }
    page๋‹จ์œ„๋กœ ํŽ˜์ด์ง€๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์•„๋‹Œ, { results }๋ฅผ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์œผ๋กœ ๊บผ๋‚ด์–ด์„œ ์˜ํ™” 10~15๊ฐœ๋งˆ๋‹ค ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ?

 

๐Ÿ“์„œ๋ฒ„ ์•ก์…˜์„ ์„ ํƒํ•œ ์ด์œ 

  • ์š”์ฒญ์— ApiKey๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ => ์„œ๋ฒ„ ํ†ต์‹ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ์œ ์ง€ ๊ฐ€๋Šฅ
  • ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ํ˜•์‹๋งŒ ํ•„์š”ํ•จ
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ