Skip to content

๐Ÿ”๏ธ ์‚ฐํƒ€ - ๊ตญ๋ฆฝ๊ณต์› ์‚ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ

Notifications You must be signed in to change notification settings

ganeodolu/santa

Repository files navigation

โ›ฐ๏ธ์‚ฐํƒ€

์†Œ๊ฐœ : ๊ตญ๋ฆฝ๊ณต์› ์‚ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ(์‚ฐ ๊ฒ€์ƒ‰, ์œ„์น˜, ๋‚ ์”จ, ์ผ์ถœ, ์ผ๋ชฐ, CCTV ๋“ฑ)

1. ์ตœ์ข… ๊ตฌํ˜„ ํ™”๋ฉด ์ด๋ฏธ์ง€

ํ™ˆํ™”๋ฉด ๊ฒ€์ƒ‰ ์ „๊ตญ์ง€๋„ ์‚ฐ ์ •๋ณด
ํ™ˆ ๊ฒ€์ƒ‰ ์ „๊ตญ์ง€๋„ ์‚ฐ์ •๋ณด

2. ์„ค์น˜, ํ™˜๊ฒฝ์„ค์ • ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ : 2๊ฐ€์ง€ API Key ํ•„์š”

    • ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ (OPEN API)
      • ๋‚ ์”จ : ๊ธฐ์ƒ์ฒญ ๋‹จ๊ธฐ์˜ˆ๋ณด ์กฐํšŒ์„œ๋น„์Šค
      • ์ผ์ถœ, ์ผ๋ชฐ์‹œ๊ฐ : ํ•œ๊ตญ์ฒœ๋ฌธ์—ฐ๊ตฌ์› ์ถœ๋ชฐ์‹œ๊ฐ ์ •๋ณด
  • ์‹คํ–‰ ๋ฐฉ๋ฒ•

    yarn install or npm install  // ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
    
    yarn build or npm build      // ๋นŒ๋“œ
    
    yarn start or npm start      // ์‹คํ–‰

3. ๊ตฌํ˜„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ชฉ๋ก

  • ํ™ˆ ํŽ˜์ด์ง€
    • ์‚ฐ ๋ฆฌ์ŠคํŠธ
  • ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€
    • ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
    • ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด
    • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ
  • ์ง€๋„ ํŽ˜์ด์ง€
    • ์ „์ฒด ์‚ฐ ์œ„์น˜ ๋ฐ ์ด๋ฆ„ ํ‘œ์‹œ
    • ์œ„์น˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง
  • ์‚ฐ ์ •๋ณด ํŽ˜์ด์ง€
    • ์œ„์น˜ ํ‘œ์‹œ
    • ์‚ฐ ์ •๋ณด
    • ๋“ฑ์‚ฐ ์™„๋ฃŒ ํ‘œ์‹œ
    • ๋‚ ์”จ ๋ฐ ์ผ์ถœ, ์ผ๋ชฐ ์‹œ๊ฐ„ ํ‘œ์‹œ
    • CCTV ๋งํฌ

4. ์‚ฌ์šฉํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค๋ช…

  • React : ํ›… ์‚ฌ์šฉ
  • Next.js : ISR ์ •์ ํŽ˜์ด์ง€, ํŽ˜์ด์ง€ ๋ผ์šฐํŒ…, image ์ตœ์ ํ™”, vercel ๋ฐฐํฌ ์—ฐ๋™
  • TanStack Query : ์„œ๋ฒ„ ์ƒํƒœ๊ด€๋ฆฌ, ์บ์‹œ ์ฒ˜๋ฆฌ
  • React-Leaflet : ๊ฐ ๊ตญ๋ฆฝ๊ณต์› ์œ„์น˜ ์ง€๋„๋กœ ํ‘œ์‹œ
  • Jotai : ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด์™€ ๋“ฑ์‚ฐ์™„๋ฃŒ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ €์žฅ
  • TypeScript : ์ •์ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ
  • Tailwind CSS : className์œผ๋กœ ์Šคํƒ€์ผ ์ง€์ •

5. ํด๋” ๊ตฌ์กฐ ์„ค๋ช…

  • app : ์•ฑ ์ „์—ญ ์„ค์ •(React-Query,Jotai ๋“ฑ)
  • pages : ํŒŒ์ผ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…, API ๋ผ์šฐํŠธ
  • views(FSD์˜ pages์™€ ๋™์ผ : Next.js์˜ page router์˜ pages ํด๋”์™€ ์ค‘๋ณต์œผ๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝ) : ํŽ˜์ด์ง€๋ณ„ ๊ตฌ์„ฑ์š”์†Œ
  • features : ์‚ฌ์šฉ์ž ํ–‰๋™๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(ํ—ค๋”, ์ฐจํŠธ)
  • entities : ๋ฐ์ดํ„ฐ์™€ ๋ Œ๋”๋ง(์ง€๋„)
  • shared : ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์ปดํฌ๋„ŒํŠธ, API, ์ƒ์ˆ˜ ๋“ฑ

6. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์‹œ ์ฃผ์•ˆ์  ์ž‘์„ฑ

  • ISR(Incremental Static Regeneration) ์ ์šฉ
    • Next.js์˜getStaticProps์™€ prefetchQuery๋ฅผ ์ด์šฉํ•œ pre-rendering ๋งํฌ
  • Leaflet์„ ์ด์šฉํ•œ ์ง€๋„ ๊ตฌํ˜„
  • FSD(Feature Sliced Design) ์ ์šฉ
  • Next/API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋กœ์ปฌ๊ณผ ํ”„๋กœ๋•์…˜ ์‹œ๊ฐ„์ฐจ
    • ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋Š” ์ •์ƒ์ด์—ˆ์œผ๋‚˜ ๋ฐฐํฌ ํ›„ ์‹œ๊ฐ„์ด 11์‹œ๊ฐ„์ •๋„ ์ฐจ์ด ๋‚˜์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
    • ๋ฐฐํฌ๋˜๋ฉด์„œ ๋ฐฐํฌ์„œ๋ฒ„๊ฐ€ ํ•œ๊ตญ์ด ์•„๋‹Œ ๊ณณ์— ๋˜๋ฉด์„œ API์— ์ ์šฉ๋˜๋Š” ํ˜„์žฌ์‹œ๊ฐ„์ด ๊ทธ ์ง€์—ญ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ
    • ํ˜„์žฌ์‹œ๊ฐ„์„ ํ•œ๊ตญ์‹œ๊ฐ„(UTC + 9 ์‹œ๊ฐ„)์œผ๋กœ ์ ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ
  • SEO

7. ํ•œ๊ณ„์  ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ ์ž‘์„ฑ

  • ํ•œ๊ณ„์ 
    • ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ๋ถ„๋ฆฌ
      • FSD ๊ฐ ์œ„์น˜, ๋ถ„๋ฆฌ์™€ ํ†ตํ•ฉ์˜ ๊ฒฝ๊ณ„ ๋ชจํ˜ธ
    • Next.js์˜ App Router ๋ฏธํ™œ์šฉ
  • ํ–ฅํ›„ ๋„ฃ๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ
    • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
    • ๊ฒŒ์‹œํŒ
    • 3D ์‚ฐ ์ง€๋„
    • ๋‹ค๋ฅธ API : ๋ฏธ์„ธ ๋จผ์ง€ ๋“ฑ

8. ํ›„๊ธฐ

  • ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๊ณ , ์ง€๋„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์ข…์ข… ๋‹ค๋‹ˆ๋Š” ๋“ฑ์‚ฐ๊ด€๋ จ ์‚ฐ ์ •๋ณด๋ฅผ ์†Œ๊ฐœํ•ด์ฃผ๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์กฐ๊ธˆ์”ฉ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ˜ผ์ž ์™„์„ฑํ•˜๊ณ  ๋‚œ ํ›„ ๊ตฌ๊ธ€์—์„œ '์‚ฐํƒ€๋ณด์•„' ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ฒซํŽ˜์ด์ง€์— ํ‘œ์‹œ๋˜๋‹ˆ๊นŒ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.
  • Next.js์˜ ์ฃผ์š”๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๋ฉฐ ์ด๋ก ๋งŒ์œผ๋กœ ์•Œ์•˜๋˜ ๋‚ด์šฉ๋“ค์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

9. ์ฐธ๊ณ 

About

๐Ÿ”๏ธ ์‚ฐํƒ€ - ๊ตญ๋ฆฝ๊ณต์› ์‚ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages