Skip to content

Latest commit

ย 

History

History
136 lines (84 loc) ยท 6.93 KB

README.md

File metadata and controls

136 lines (84 loc) ยท 6.93 KB

๋ฐ˜์ง๋ฐ˜์ง์ž‘์€๋ณ„ - ๋Œ€๊ตฌ๋ชจ์•„

์„œ๋น„์Šค ์š”์•ฝ

๐Ÿ‘‘ 2024 ๋Œ€๊ตฌ๋ฅผ ๋น›๋‚ด๋Š” ํ•ด์ปคํ†ค ๋Œ€์ƒ ์ˆ˜์ƒ์ž‘ ๐Ÿ‘‘

โ€˜๋Œ€๊ตฌ๋ชจ์•„โ€™๋Š” ์‹œ๋ฏผ๋“ค์—๊ฒŒ ์ด๋ฒคํŠธ์— ๊ด€๋ จ๋œ ์ •๋ณด์™€ ๋ฏธ์…˜์„ ์ œ๊ณตํ•ด ์‹œ๋ฏผ๋“ค์˜ ์ด๋ฒคํŠธ ์ฐธ์—ฌ๋ฅผ ์ด‰๊ตฌํ•˜๋Š” ์•ฑ์›น์ž…๋‹ˆ๋‹ค. โ€˜๋Œ€๊ตฌ๋ชจ์•„โ€™๋Š” ์‹œ๋ฏผ๋“ค์ด ๋Œ€๊ตฌ์—์„œ ํ™œ๋™ํ•˜๋Š” ๊ฒƒ๋“ค์„ ๊ธฐ๋กํ•˜๋ฉฐ ์ด์— ๋Œ€ํ•œ ๋ณด์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์ œ ๊ตฌ๋ถ„

  • Cํƒ€์ž… - ๋Œ€๊ตฌ ์ง€์—ญ ์ƒ๊ถŒ์„ ์‚ด๋ฆฌ๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ์„œ๋น„์Šค

ํŒ€์› ์†Œ๊ฐœ

๊ถŒ์„ ์šฐ ๋ฐ•์žฌ๋ฏผ ์žฅ๊ธฐ์› ํ™ฉ๋ถ€์—ฐ
๊ธฐํš ๊ฐœ๋ฐœ ๊ฐœ๋ฐœ / ๋””์ž์ธ ๊ฐœ๋ฐœ

์‹œ์—ฐ ์˜์ƒ

์‹œ์—ฐ ์˜์ƒ

์„œ๋น„์Šค ์†Œ๊ฐœ

์„œ๋น„์Šค ๊ฐœ์š”

โ€˜๋Œ€๊ตฌ๋ชจ์•„โ€™๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 1๋ฒˆ์งธ๋Š” ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋Š” ๋Œ€๊ตฌ์—์„œ ์ง„ํ–‰๋˜๋Š” ์ถ•์ œ, ์•ผ์‹œ์žฅ, ๊ฐ•์—ฐ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋˜๋Š” ์ •๋ณด๋Š” ์ด๋ฒคํŠธ์˜ ์ด๋ฆ„, ํฌ์Šคํ„ฐ, ์ฃผ์ตœ, ์œ„์น˜, ๊ธฐ๊ฐ„, ์„ธ๋ถ€ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ด๋ฒคํŠธ์˜ ์ •๋ณด๋ฅผ ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์น˜ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•œ ๊ฒƒ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๋ฒˆ์งธ๋Š” ๋ฏธ์…˜์ž…๋‹ˆ๋‹ค. ๋ฏธ์…˜์€ โ€˜๋Œ€๊ตฌ๋ชจ์•„โ€™๋งŒ์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. โ€˜์•ผ์‹œ์žฅ ์ •๋ณตํ•˜๊ธฐโ€™, โ€˜์ถ•์ œ ๋งˆ์Šคํ„ฐโ€™ ๋“ฑ ๋Œ€๊ตฌ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฏธ์…˜์„ ์ œ๊ณตํ•ด์ฃผ๋ฉฐ ์ด ๋ฏธ์…˜์„ ํ•ด๊ฒฐํ•  ์‹œ ๋ฑƒ์ง€์™€ ๋ณด์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฑƒ์ง€๋Š” ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ๊พธ๋ฏธ๋Š” ๊ฒƒ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ƒ์€ ๋ฏธ์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

3๋ฒˆ์งธ๋Š” ๋žญํ‚น์ž…๋‹ˆ๋‹ค. โ€˜๊ฐ€์žฅ ๋งŽ์ด ์‹œ์žฅ์— ๋ฐฉ๋ฌธํ•œ ์‚ฌ๋žŒโ€™, โ€˜๊ฐ€์žฅ ๋งŽ์€ ์ถ•์ œ์— ์ฐธ์—ฌํ•œ ์‚ฌ๋žŒโ€™ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋žญํ‚น์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ž์‹ ์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋Œ€๊ตฌ์˜ ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ง€ํ‘œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

4๋ฒˆ์งธ๋Š” ๋งˆ์ดํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋งˆ์ดํŽ˜์ด์ง€๋Š” ์ž์‹ ์˜ ์ •๋ณด์™€ ์ˆ˜์ง‘ํ•œ ๋ฑƒ์ง€๋“ค, ๊ทธ๋ฆฌ๊ณ  ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํŽ˜์ด์ง€๋Š” ์ž์‹ ์ด ํš๋“ํ•œ ๋ฑƒ์ง€์™€ ์ž์‹ ์˜ ๋žญํ‚น์œผ๋กœ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ†ต๊ณ„์—์„œ๋Š” ์ฐธ์—ฌํ•œ ํ–‰์‚ฌ ์ˆ˜, ๋‘˜๋Ÿฌ๋ณธ ์‹œ์žฅ ์ˆ˜ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์„œ๋น„์Šค์™€์˜ ์ฐจ๋ณ„์ 

  • ์ถ•์ œ์™€ ์‹œ์žฅ ์ •๋ณด ์—ด๋žŒ ๊ฐ€๋Šฅ
  • ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ผ์ด ๋งŽ์„ ๊ฒƒ์„ ์˜ˆ์ƒ๋˜๋ฏ€๋กœ Mobile ์œ ์ € ์นœํ™”์ 
  • PC ์›น๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก css - @media๋ฅผ ์ด์šฉํ•œ ๋ฐ˜์‘ํ˜• ์Šคํƒ€์ผ ์ ์šฉ
  • ๋ฏธ์…˜์ด๋ผ๋Š” ์ฐจ๋ณ„ํ™”๋œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํฅ๋ฏธ๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ด
  • ๋ฑƒ์ง€๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ๋žŒ๋“ค์˜ ์ฐธ์—ฌ ์œ ๋„

๊ตฌํ˜„ ๋‚ด์šฉ ๋ฐ ๊ฒฐ๊ณผ๋ฌผ

์„œ๋น„์Šค์˜ ์‹ค์ œ ๊ตฌํ˜„ ๋‚ด์šฉ๊ณผ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ธฐ์žฌํ•œ๋‹ค.

1. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ฒธ ๋žœ๋”ฉํŽ˜์ด์ง€(/login)

  • ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ
  • ๋งŒ์•ฝ ๋กœ๊ทธ์ธ ์„ธ์…˜์ด ์—†๋‹ค๋ฉด, / ๊ฒฝ๋กœ ์ ‘์†์‹œ /login ์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋จ
  • ๋งŒ์•ฝ ๋กœ๊ทธ์ธ ์„ธ์…˜์ด ์žˆ์ง€๋งŒ ํšŒ์›๊ฐ€์ž… ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด, /register ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋จ

2. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€(/register)

  • ๋กœ๊ทธ์ธ ์„ธ์…˜ ์ฒ˜๋ฆฌ ํ›„ ํšŒ์›๊ฐ€์ž… ํ•˜๋Š” ํŽ˜์ด์ง€

3. ์ด๋ฒคํŠธ ๋ชฉ๋ก(/)

  • ์ด๋ฒคํŠธ(์‹œ์žฅ, ์ถ•์ œ, ๊ณต์—ฐ/์ „์‹œ) ๋“ฑ์˜ ๋ชฉ๋ก์„ ํ‘œ์‹œ
  • ์ด๋ฒคํŠธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

4. ์ด๋ฒคํŠธ ์ •๋ณด(/event/{id})

  • ์นด์นด์˜ค ๋งต API๋ฅผ ํ†ตํ•ด ์ง€๋„ ์—ฐ๋™, ํ•ด๋‹น ์ด๋ฒคํŠธ์˜ ์œ„์น˜ ํ™•์ธ์ด ํŽธ๋ฆฌ
  • HTML5 Geolocation API๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ์œ„์น˜(์œ„๋„, ๊ฒฝ๋„)๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ํ–‰์‚ฌ์žฅ์œผ๋กœ๋ถ€ํ„ฐ ์ผ์ • ๊ฑฐ๋ฆฌ ๋‚ด์— ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜์—ฌ ์ด๋ฒคํŠธ(์‹œ์žฅ, ์ถ•์ œ) ์ฐธ์—ฌ ์—ฌ๋ถ€ ์ธ์ฆ
  • ์ด๋ฒคํŠธ ์ฐธ์—ฌ ์ธ์ฆ์„ ์™„๋ฃŒํ•˜๋ฉด ๋ฑƒ์ง€๋ฅผ ์ง€๊ธ‰

5. ๋ฏธ์…˜ ๋ชฉ๋ก(/mission)

  • ๋ฏธ์…˜๋ณ„ ๋‚จ์€ ์‹œ๊ฐ„๊ณผ ์žฅ์†Œ ๋“ฑ์„ ํ•œ๋ˆˆ์— ํ™•์ธ ๊ฐ€๋Šฅ

6. ๋ฏธ์…˜ ์„ธ๋ถ€์ •๋ณด(/mission/{id})

  • ๋ฏธ์…˜์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด(์œ ํ˜•, ์ง„ํ–‰์ค‘ ์—ฌ๋ถ€, ๋‚œ์ด๋„, ์ฐธ์—ฌ์ž ์ˆ˜ ๋“ฑ) ํ™•์ธ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€
  • ์‚ฌ์ง„ ์—…๋กœ๋“œ๋ฅผ ํ†ตํ•œ ๋ฏธ์…˜ ์ˆ˜ํ–‰, ๋ฑƒ์ง€ ์ง€๊ธ‰

7. ๋žญํ‚น ํŽ˜์ด์ง€(/ranking)

  • ์œ ํ˜•๋ณ„(์‹œ์žฅ, ์ถ•์ œ, ๊ณต์—ฐ/์ „์‹œ) ์‚ฌ์šฉ์ž ๋ฑƒ์ง€ ๋žญํ‚น์„ ํ‘œ์‹œ

8. ๋žญํ‚น ์ƒ์„ธ ํŽ˜์ด์ง€ (/ranking/{type})

9. ํ”„๋กœํ•„ (/profile/{id})

  • ํ”„๋กœํ•„ ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ๋‚ด ํ”„๋กœํ•„ ๊ณต์œ  ๊ฐ€๋Šฅ, ๋‚ด ํ”„๋กœํ•„ QR ์ฝ”๋“œ ๋ฐœ๊ธ‰
  • ํš๋“ํ•œ ๋ฑƒ์ง€ ํ™•์ธ ๋ฐ ๋Œ€ํ‘œ ๋ฑƒ์ง€ ์„ค์ • ๊ฐ€๋Šฅ
  • ๊ฐœ์ธ ํ†ต๊ณ„ ์—ด๋žŒ

10. ๊ด€๋ฆฌ์ž์šฉ ๋ฏธ์…˜ ์ธ์ฆ ํŽ˜์ด์ง€ (/admin)

  • ์œ ์ €๋“ค์ด ์˜ฌ๋ฆฐ ์‚ฌ์ง„๋“ค์„ ๋ณด๊ณ  ์ธ์ฆ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์ธ์ฆ์€ ์ œ๊ฑฐ ํ•ด๋‘” ์ƒํƒœ์ž…๋‹ˆ๋‹ค, user๊ถŒํ•œ์œผ๋กœ๋„ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ตฌํ˜„ ๋ฐฉ์‹

Summary

FE/BE: Next.js (with React + TypeScript)
UI Library: Chakra UI
Image Storage: Firebase
Database: MySQL
ORM: Prisma
Deploy: Vercel
Design: Figma

๊ธฐ์ˆ  ๊ตฌํ˜„ ์ƒ์„ธ

  • React ๊ธฐ๋ฐ˜์˜ ํ’€์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ธ Next.js ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ์ ์šฉ
  • SSR์„ ๊ธฐ๋ฐ˜์œผ๋กœ Server-side data fetching, image optimization, API Router ๋“ฑ์˜ ๊ธฐ์ˆ ์„ ์ ์šฉ
  • Auth.js ํ™œ์šฉํ•˜์—ฌ ์„ธ์…˜ ๊ธฐ๋ฐ˜์˜ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • Chakra UI๋ฅผ ํ™œ์šฉํ•œ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•, ์ง์ ‘ ๋””์ž์ธํ•œ ์ปค์Šคํ…€ SVG ์•„์ด์ฝ˜์…‹ ์ ์šฉ

ERD


Tech Diagram


Figma Design

ํ–ฅํ›„ ๊ฐœ์„  ํ˜น์€ ๋ฐœ์ „ ๋ฐฉ์•ˆ

  • ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ƒ๋‹จ ๋ฐฐ๋„ˆ๊ด‘๊ณ  ํ™œ์„ฑํ™”
  • ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ์ฒด๊ณ„ํ™”
  • ์ถ•์ œ๋‚˜ ์‹œ์žฅ์ธก๊ณผ ํ˜‘์˜ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฏธ์…˜์„ ๋Œ€์‹  ์ง„ํ–‰
  • ์ง€์†์ ์ธ ๋ฑƒ์ง€ ๋ฐ ๋ฏธ์…˜ ์—…๋ฐ์ดํŠธ