Skip to content

ehfdl/OHZU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Project : OHZU

โœ… Topic

"์ž์‹ ๋งŒ์˜ ํ˜ผํ•ฉ์ฃผ ๋ ˆ์‹œํ”ผ์™€ ๋น„์œจ์„ ํƒ€์ธ๊ณผ ๊ณต์œ ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ"

๐ŸŽฏ Target

  1. ์ˆ ์„ ์ฆ๊ธฐ๊ณ , ์ž์‹ ์˜ ์ทจํ–ฅ์— ๋งž๋Š” ๋‹ค์–‘ํ•˜๊ณ  ๋ง›์žˆ๋Š” ์ˆ ์„ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋งˆ์…”๋ณด๊ณ  ์‹ถ์€ ๋ชจ๋“  ์‚ฌ๋žŒ.
  2. ๋ง›์žˆ๋Š” ์•Œ์ฝœ ์Œ๋ฃŒ๋ฅผ ๊ณต์œ ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ.

ohzu_landing

๐Ÿ“• Stack

๐Ÿคนโ€โ™€๏ธ ํŒ€ ์†Œ๊ฐœ


๐Ÿ‘ซ TEAM: OHZU

ํŒ€๋ช… OHZU์—๋Š”, ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์˜ ๊ธฐ๋‚˜๊ธด ์—ฌ์ •์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ์ตœ์ข… ํ”„๋กœ์ ํŠธ 5์ฃผ์˜ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ํŒ€์›๋“ค์ด ํ•จ๊ป˜ ์ตœ์„ ์„ ๋‹ค ํ•˜๊ฒ ๋‹ค๋Š” ์˜์ง€๋ฅผ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค. ์ €ํฌ๊ฐ€ 5์กฐ์ด๊ธฐ๋„ ํ•˜๊ณ ์š”! ์ €ํฌ ํ”„๋กœ์ ํŠธ ์ฃผ์ œ๋„ ์—ฐ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํŒ€๋ช…์„ ์ง€์–ด๋ดค๋Š”๋ฐ, ์„œ๋น„์Šค ๋ช…๋„ ๋™์ผํ•˜๊ฒŒ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

OHZU๋ฅผ ํ•จ๊ป˜ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค

์ตœ์˜์ง„ - ๊ธ€ ์ž‘์„ฑ ํŽ˜์ด์ง€, ๋งˆ์ด ํŽ˜์ด์ง€, ๊ด€๋ฆฌํŽ˜์ด์ง€
๋ฐ•ํœ˜์ธ - ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํ—ค๋”/ํ‘ธํ„ฐ
๊น€๋™ํ•œ - ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ธ ํŽ˜์ด์ง€
๊น€ํ•œ์šธ - ๋ฉ”์ธ ํŽ˜์ด์ง€
๊น€ํฌ์ˆ˜ - ์ „์ฒด UI ๋””์ž์ธ

๐ŸŒŸ Purpose&Expectation

  1. ๊ตญ๋ฏผ ๊ณผ๋ฐ˜์ด ์ˆ ์„ ์ฆ๊ธฐ๋Š” ์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ ์ˆ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณธ๋‹ค.
  2. ์ž์ฃผ ๋งˆ์‹œ๋Š” ์†Œ์ฃผ, ๋งฅ์ฃผ์˜ ๋ง›์ด ์•„๋‹Œ ์ƒ‰๋‹ค๋ฅธ ๋ง›์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ์ˆ ์ž๋ฆฌ์—์„œ ๋ถ„์œ„๊ธฐ ๋ฉ”์ด์ปค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋น„์ฃผ๋ฅ˜ ์ฃผ์ข…์— ๋Œ€ํ•œ ์†Œ๋น„์ž์˜ ๊ด€์‹ฌ์„ ์ฆ๋Œ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  5. ์ˆ ์„ ์•ˆ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋„ ์ˆ ์„ ๋ง›์žˆ๊ฒŒ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ ˆ์‹œํ”ผ๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  6. ์ž์‹ ๋งŒ์˜ ๋ ˆ์‹œํ”ผ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ํ•จ๊ป˜ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  7. ์ทจํ–ฅ์ด ๋น„์Šทํ•œ ์‚ฌ๋žŒ๋ผ๋ฆฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ‘ Concept

  • ์ฃผ ํƒ€๊ฒŸ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ท€์—ฝ๊ณ  ๋ฐœ๋ž„ํ•œ ๋Š๋‚Œ์ด ๋‚˜๋ฉด์„œ๋„ ์ง๊ด€์ ์ด๊ณ  ์‹ฌํ”Œํ•œ UI ๊ตฌ์„ฑ

๐Ÿ’ฅ Pain Point

  1. SNS์— ๋ถ„ํฌ๋˜์–ด ์žˆ๋Š” ํ˜ผํ•ฉ์ฃผ์˜ ๋ ˆ์‹œํ”ผ๋ฅผ ํ•œ ๊ณณ์—์„œ ๋ณด๊ณ  ์‹ถ๋‹ค.
  2. ๋‚˜์˜ ํ˜ผํ•ฉ์ฃผ ๋ ˆ์‹œํ”ผ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ๋‹ค.
  3. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ˜ผํ•ฉ์ฃผ ๋ ˆ์‹œํ”ผ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค.
  4. ์ƒ‰๋‹ค๋ฅด๊ฒŒ ์ˆ ์„ ์ฆ๊ธฐ๊ณ  ์‹ถ์€๋ฐ, ์–ด๋””์„œ ์ •๋ณด๋ฅผ ์ฐพ์•„์•ผ ํ•  ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
  5. ์ˆ ์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค, ๋น„์Šทํ•œ ์ทจํ–ฅ์˜ ์‚ฌ๋žŒ๋“ค๊ณผ ์†Œํ†ตํ•˜๊ณ  ์‹ถ๋‹ค.

๐ŸŒธ Core Function

1. ๋‚˜์˜ ๋ ˆ์‹œํ”ผ ๊ฒŒ์‹œ

  • ๋‚˜์˜ ๋ ˆ์‹œํ”ผ๋ฅผ ์ฃผ์ข… ๋ฐ ์žฌ๋ฃŒ๋ฅผ ๊ธฐ์žฌํ•˜์—ฌ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€์€ ๋ชจ๋“  ์œ ์ €๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํšŒ์›๊ฐ€์ž…์„ ํ•œ ์œ ์ €๋งŒ ๊ฒŒ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ๋Œ“๊ธ€ ๋ฐ ๋‹ต๊ธ€๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ธ€์ด๋‚˜ ๋Œ“๊ธ€์€ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์ „์ฒด ๋ ˆ์‹œํ”ผ ํ™•์ธ

  • ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ ˆ์‹œํ”ผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒŒ์‹œ๊ธ€์„ ์ธ๊ธฐ ์ˆœ / ์กฐํšŒ์ˆ˜ ์ˆœ / ์ตœ์‹  ์ˆœ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์›ํ•˜๋Š” ์ฃผ์ข…์ด๋‚˜ ์žฌ๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. ๋งˆ์ด ํŽ˜์ด์ง€

  • ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ๋ ˆ์‹œํ”ผ, ์ข‹์•„์š” ๋ˆ„๋ฅธ ๋ ˆ์‹œํ”ผ, ์ตœ๊ทผ ๋ณธ ๋ ˆ์‹œํ”ผ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒ”๋กœ์ž‰, ํŒ”๋กœ์›Œ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœํ•„๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… OHZU ํ”„๋ก ํŠธ์—”๋“œ ๋ชฉํ‘œ

์ง๊ด€์ ์ธ UX/UI ๊ตฌ์„ฑ

  • ํŽ˜์ด์ง€์— ๋“ค์–ด์™”์„ ๋•Œ, 5~10์ดˆ ์•ˆ์— ์–ด๋–ค ์ปจ์…‰์˜ ์„œ๋น„์Šค์ธ์ง€ ์œ ์ €๊ฐ€ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ๊ฒƒ
  • ์–ด๋–ค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜, ์•ก์…˜์„ ์ทจํ•  ๋•Œ ์œ ์ €๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ๋“ค์„ ๋ณด์—ฌ์ง€๋„๋ก ํ•  ๊ฒƒ
  • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋„ ์œ„์™€ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ์ด๋ฃจ๋„๋ก ํ•  ๊ฒƒ

โœจ OHZU ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ

OHZU แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ แ„€แ…ฎแ„Œแ…ฉ

๐Ÿ“ OHZU ์‚ฌ์šฉ ์Šคํƒ ๋ฐ ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •

1. Library & Language

React

  • ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ ‰์…˜์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฆฌ๋ Œ๋”๋ง์ด ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„์˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Redux vs React Query (๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ)

  • React Query
  1. Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด React Query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Redux๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด์ ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Redux๋Š” API ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ๊ฒฉํ™”๋œ ๋ฐฉ์‹์ด ์—†์Šต๋‹ˆ๋‹ค. ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด React Query๋Š” ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Hook์„ ์‚ฌ์šฉํ•˜์—ฌ React Component ๋‚ด๋ถ€์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋น„๋™๊ธฐ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

JavaScript vs TypeScript

  • TypeScript
  1. JavaScript(์ดํ•˜ JS)๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค(๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ). ๋ฐ˜๋ฉด TS๋Š” ๊ฐœ๋ฐœ์ค‘์— ์กฐ๊ธฐ ๋ฒ„๊ทธ๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ปดํŒŒ์ผ ์—๋Ÿฌ). ๋”ฐ๋ผ์„œ ๋ฒ„๊ทธ ๋ฐ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฒ„๊ทธ ๋ฐ ์—๋Ÿฌ๋ฅผ ๋นจ๋ฆฌ ์บ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ณง ์„œ๋น„์Šค ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค.
2. Next.Js
  • ๊ฒ€์ƒ‰์‹œ CSR์˜ ๋‹จ์ ์ธ SEO(๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”) ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • SSR ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๊ธฐํ™”๋ฉด์„ ๋ณผ ๋•Œ ๋กœ๋”ฉ์—†์ด HTML์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ , JS ๋‹ค์šด๋กœ๋“œ ํ›„ ํŽ˜์ด์ง€ ์ด๋™์‹œ CSR ๋ฐฉ์‹์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ ๋ณด๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค.
  • ์ง๊ด€์ ์ธ ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… (/pages/search/cocktail) ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ****ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ์ฑ„ํƒํ•˜๋Š” Next.js๋Š” React๋ณด๋‹ค ํŽ˜์ด์ง€ ์ด๋™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค. (Client-Side-Navigatin)
  • React๋Š” CSR๋ฐฉ์‹์ด๋ผ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์— ๋งค์šฐ ๋ถˆ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Next.js๋Š” ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์— ์ ํ•ฉํ•œ SSR ๊ธฐ๋Šฅ๊ณผ CSR์„ ๊ตฌํ˜„ํ•˜์—ฌ React์˜ ๋‹จ์ ์„ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.
3. Axios Fetch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ์‹œ Response๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” Promise๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • fetch๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JSON.stringify()๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Promise ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค, ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด, Axios๋Š” ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JSON๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” Promise๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

โ‡’ ์นด์นด์˜ค ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ์‹œ,** **์œ ์ € ์ •๋ณด๋ฅผ JSON์œผ๋กœ ์ฆ‰์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Axios๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

4. Tailwindcss
  • ์„œ๋น„์Šค ํŠน์„ฑ์ƒ ๋ชจ๋ฐ”์ผ ์œ ์ €๊ฐ€ ๋งŽ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์—ฌ, ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ์Šคํƒ€์ผ๋ง์— ์œ ์šฉํ•œ tailwind๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ์ž‘๋ช…์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•˜์ง€ ์•Š๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•˜์—ฌ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , JIT compiler๋กœ ์ธํ•ด ์ œํ•œ์ ์ด์ง€ ์•Š์•„์„œ ํ˜‘์—…์— ์žˆ์–ด์„œ ํŽธ๋ฆฌํ•œ ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
5. Firebase
  • ์ง์ ‘ Server๋ฅผ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š๊ณ  ์†์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ฐ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฑ์—”๋“œ ํŒŒํŠธ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์—ฌ UI/UX ํ–ฅ์ƒ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
6. Vercel
  • Git์ด ์—ฐ๋™๋˜์–ด ๋ฐฐํฌ ๊ณผ์ •์ด ๋‹จ์ˆœํ•˜๊ณ  ์‰ฌ์šฐ๋ฉฐ ๊ณผ์ •์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CDN์„œ๋ฒ„๊ฐ€ ์šฐ๋ฆฌ๋‚˜๋ผ์—๋„ ์žˆ์–ด TTFB๊ฐ€ ๋น ๋ฅธํŽธ์ด์–ด์„œ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

Firebase Method๋กœ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๋ฌธ์ œ

์ €ํฌํŒ€์€ ๋ถ€๋ถ„ ๊ฒ€์ƒ‰(Full-text search) ๊ธฐ๋Šฅ์„ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Firebase method๋กœ๋Š” ์ •ํ™•ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ๊ฒ€์ƒ‰(Exact-text search)์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ex) โ€œ๋ธ”๋ฃจ๋ ˆ๋ชฌ์—์ด๋“œโ€ โ‡’ โ€œ๋ธ”๋ฃจ๋ ˆ๋ชฌ์—์ด๋“œโ€ ( O ) / โ€œ๋ธ”๋ฃจ๋ ˆ๋ชฌโ€ โ‡’ โ€œ๋ธ”๋ฃจ๋ ˆ๋ชฌ์—์ด๋“œโ€ ( X )

์‹ค์ œ๋กœ Firebase Doc์—์„œ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉด, ๊ฒ€์ƒ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Algoria(์œ ๋ฃŒ) ๋“ฑ์˜ ****๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

fuse.js ๊ณต์‹ ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ method๋ฅผ ๋‹ค ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์”ฉ ์ ์šฉํ•ด๋ณด๋ฉด์„œ โ€œthreshold, distanceโ€ method์—์„œ ํžŒํŠธ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

  • threshould : ๋‹จ์–ด ๊ฒ€์ƒ‰ ์‹œ, ์—„๊ฒฉํ•จ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. (์—„๊ฒฉ 0.0 ~ 1.0)
  • distance : ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. (์—„๊ฒฉ 0 ~ 1000)

โ‡’ ๋‘ ๊ฐ€์ง€ method๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰์˜ ์—„๊ฒฉํ•จ์„ Settingํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, fuse.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €ํฌ ํŒ€์ด ์›ํ•˜๋Š” ๋‹จ์–ด ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ƒˆ์Šต๋‹ˆ๋‹ค. carbon

๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ์ค‘ ํŽ˜์ด์ง€ ์ด๋™ ๋ฐฉ์ง€ ### **๋ฌธ์ œ**
  1. ๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ์ค‘ ํŽ˜์ด์ง€ ์ดํƒˆ์‹œ ์ž‘์„ฑ์ค‘์ธ ๋ฐ์ดํ„ฐ ์†Œ์‹ค
  2. ์ƒˆ๋กœ๊ณ ์นจ์‹œ ๋ฐ์ดํ„ฐ์˜ ์†Œ์‹ค
  3. ๋’ค๋กœ๊ฐ€๊ธฐ ์‹คํ–‰์‹œ ๋ฐ์ดํ„ฐ์˜ ์†Œ์‹ค ๋ฐ pathname์˜ ๋ณ€ํ™”
  4. ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ ํ›„ ํŽ˜์ด์ง€ ์ด๋™์‹œ ํŽ˜์ด์ง€ ์ด๋™์ด ๋ฐฉ์ง€๋จ

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

  1. router.events ์ค‘ routeChangeStart ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ route์˜ ๊ฒฝ๋กœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์‹œ ์‹œ์ž‘ํ• ๋•Œ ์ด๋™ํ™•์ธ ๋ชจ๋‹ฌ๊ณผ ๊ฐ•์ œ๋กœ error๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ํŽ˜์ด์ง€ ์ด๋™์„ ๋ง‰๋Š”๋‹ค.
  2. ์ƒˆ๋กœ๊ณ ์นจ์€ event beforeunload ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™๋ฐฉ์ง€ ํŒ์—…์œผ๋กœ ๋ง‰๋Š”๋‹ค.
  3. ๋’ค๋กœ๊ฐ€๊ธฐ ์—ญ์‹œ route ๋ณ€๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— 1๋ฒˆ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ง‰๋Š”๋ฐ, ๋งํฌ๋Š” router.push ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋จ. ํ˜„์žฌ์˜ pathname ๊ณผ router.asPath ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ๋งํฌ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
  4. ๊ธ€ ์™„๋ฃŒํ›„์— ํŽ˜์ด์ง€ ์ด๋™์ด ์ƒ๊ธฐ๋Š”๋ฐ ์ด๋•Œ๋„ ํŽ˜์ด์ง€ ์ด๋™๋ฐฉ์ง€ ๋ชจ๋‹ฌ์ด ๋ฐœ์ƒํ•˜๊ฒŒ๋œ๋‹ค. ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ์‹œ ์™„๋ฃŒ ํ™•์ธ์ฒดํฌ state๋ฅผ ๋ณ€๊ฒฝ์‹œ์ผœ ๊ธ€ ์ž‘์„ฑ์™„๋ฃŒ์‹œ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™์„ ์‹œํ‚จ๋‹ค.
Dynamic Router ๋กœ ๋ณด๋‚ด์ค€ query ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ

๋ฌธ์ œ

dynamic router๋กœ query๋ฅผ ๋ณด๋‚ธ ํ›„์— ๋ฐ›์•„์„œ ํ•ด๋‹น ์ฟผ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ, ์ƒˆ๋กœ๊ณ ์นจ์‹œ์—๋Š” ๋ณด๋‚ด์ค€ ์ฟผ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

sessionStorage๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฒ˜์Œ์— ๋ฐ›์€ ์ฟผ๋ฆฌ๋ฅผ ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉ

๊ธด ๋กœ๋”ฉํƒ€์ž„

๋ฌธ์ œ

  1. ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ ๋กœ๋”ฉ์‹œ๊ฐ„์ด ๊ธธ์—ˆ์Œ
  2. ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•„์š”์„ฑ

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

  1. ๋กœ๋”ฉ ํŽ˜์ด์ง€ ์ถ”๊ฐ€
  2. next/image๋ฅผ ์ด์šฉํ•˜์—ฌ network payloads total size๋ฅผ ๊ธฐ์กด 31,850 KiB์—์„œ 12,829 KiB๋กœ ์ค„์ด๊ณ , interactive time๋„ ์ ˆ๋ฐ˜ ๊ฐ€๋Ÿ‰์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Œ

๐Ÿ›ซ ์„œ๋น„์Šค ์„ฑ๋Šฅ๊ฐœ์„ 


  • Next.js <Image>๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ํ•˜์—ฌ Perfomance๋ฅผ ์ตœ๋Œ€ 30% ๊ฐœ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • <button>๊ณผ <Link> ํƒœ๊ทธ์— ๊ณ ์œ ํ•œ aria-lable๊ฐ’์„ ๋ถ€์—ฌํ•˜์—ฌ Accessibility๋ฅผ ์ตœ๋Œ€ 27% ๊ฐœ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋ฉ”์ธ ํŽ˜์ด์ง€
  • ๊ฐœ์„  ์ „ แ„†แ…ฆแ„‹แ…ตแ†ซ
  • ๊ฐœ์„  ํ›„
แ„†แ…ฆแ„‹แ…ตแ†ซ
๊ธ€์“ฐ๊ธฐ ํŽ˜์ด์ง€
  • ๊ฐœ์„  ์ „ แ„€แ…ณแ†ฏแ„Šแ…ณแ„€แ…ต
  • ๊ฐœ์„  ํ›„
แ„€แ…ณแ†ฏแ„Šแ…ณแ„€แ…ต
์ƒ์„ธ ํŽ˜์ด์ง€
  • ๊ฐœ์„  ์ „ แ„‰แ…กแ†ผแ„‰แ…ฆ
  • ๊ฐœ์„  ํ›„
แ„‰แ…กแ†ผแ„‰แ…ฆแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต
๋งˆ์ด ํŽ˜์ด์ง€
  • ๊ฐœ์„  ์ „ แ„†แ…กแ„‹แ…ตแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต
  • ๊ฐœ์„  ํ›„
แ„†แ…กแ„‹แ…ตแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต
์œ ์ € ํŽ˜์ด์ง€
  • ๊ฐœ์„  ์ „ userpage version 1 7
  • ๊ฐœ์„  ํ›„
แ„‹แ…ฒแ„Œแ…ฅแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages