์ฃผ์š” ์ž‘์—…

  • ํด๋ผ์ด์–ธํŠธ
    • ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ(ProgressBar, autoRollingNews)
      • autoRollingNews setTimeout์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง
    • ํ™•์ธ ๋ชจ๋‹ฌ ์œ„์น˜ ์กฐ์ • ๋ฐ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌ
  • ์„œ๋ฒ„
    • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ตฌ์ƒ
    • ์„œ๋ฒ„ ์ดˆ๊ธฐ ํ™˜๊ฒฝ์„ค์ •
    • ๋”๋ฏธ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • ๊ธฐํƒ€
    • ์ฃผ๊ฐ„๊ณ„ํš์ž‘์„ฑ

ํ•™์Šต ํ‚ค์›Œ๋“œ

  • NOSQL
  • useReduce
  • firebase functions

๊ณ ๋ฏผ ๋ฐ ํ•ด๊ฒฐ๊ณผ์ •

์„œ๋ฒ„๋ฆฌ์Šค & ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ฟผ๋ฆฌ ๊ตฌ์„ฑ

๋‚˜๋Š” ์ด๋ฒˆ์— ๋ฐฐํฌ์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์ €๋ฒˆ ๋ฏธ์…˜๊ณผ ๋™์ผํ•˜๊ฒŒ firebase functions๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ , ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ firestore๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ์„œ๋ฒ„์—์„œ ํ•˜๋Š” ์‹์œผ๋กœ ๊ตฌ์ƒํ–ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด๋†“์„ ๊ณ„ํš์ด์—ˆ์ง€๋งŒ, ์ด ๊ณผ์ •์—์„œ NOSQL์ธ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜์—ฌ

  • ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋‰ด์Šค ๋ฐ์ดํ„ฐ
  • ๋‚ด๊ฐ€ ๊ตฌ๋…ํ•œ ์–ธ๋ก ์‚ฌ์˜ ๋‰ด์Šค ๋ฐ์ดํ„ฐ
  • ๊ฐ ์–ธ๋ก ์‚ฌ์˜ ๋‰ด์Šค ๋ฐ์ดํ„ฐ
  • ๋‚ด๊ฐ€ ๊ตฌ๋…ํ•œ ์–ธ๋ก ์‚ฌ
  • ์ „์ฒด ์–ธ๋ก ์‚ฌ ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋กœ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ• ๊นŒ? ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ๋˜์—ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋„๋ฉ”์ธ์„ ๋‚˜๋ˆ„์–ด๋ณด์ž๋ฉด

  • ์–ธ๋ก ์‚ฌ(press)
  • ๊ตฌ๋…(subscriptions)
  • ์–ธ๋ก ์‚ฌ์˜ ๋‰ด์Šค(articles) ๊ฐ€ ์žˆ๋‹ค.

์ผ๋‹จ ํ˜„์žฌ ๊ณ„ํš์ƒ์œผ๋กœ๋Š” ํ•ด๋‹น ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ๊ฐ™์ด subscription์—์„œ๋Š” press property์—์„œ press๋“ค์„ ์ฐธ์กฐํ•˜๊ณ , Press์˜ articles ํ”„๋กœํผํ‹ฐ์—์„œ๋Š” article๋“ค์„ ์ฐธ์กฐํ•˜๋ฉฐ article์—์„œ๋Š” ๊ฐ ๊ธฐ์‚ฌ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

Articles

  • id: number
  • title:string
  • created_at: string
  • thumbnail_image:string
  • openLink:string
  • category:string

Press

  • id: number
  • pressName: string
  • pressLogo:string
  • openLink:string
  • editDate:string
  • articles : Articles[]

Subscription

  • id: number
  • subscriber: string
  • press: Press[]

NOSQL์„ ์•Œ์•„๋ณด๋Š” ๊ณผ์ •์—์„œ Firestore์— ์ถ”์ฒœํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์˜ต์…˜์ด ์žˆ์—ˆ๋‹ค.

  • ๋ฌธ์„œ์˜ ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ๋กœ ํ‘œํ˜„
  • ํ•˜์œ„ ์ปฌ๋ ‰์…˜์œผ๋กœ ํ‘œํ˜„
  • ๋ฃจํŠธ ์ˆ˜์ค€ ์ปฌ๋ ‰์…˜ ์ด๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” ๊ฐ category, publisher, article์„ collections๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ์–ด ๋„๋ฉ”์ธ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ categories(collections) -> category(doc) -> publishers(collections) -> publisher(doc) -> articles(collections) -> article(doc)์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋”๋ฏธ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์„ฑ๋œ๋‹ค.