Skip to content

๐Ÿ“„ [๋ฌธ์„œ] MapSee ๊ณ„ํš์„œย #1

@Cassiiopeia

Description

@Cassiiopeia

MapSee (๋งต์‹œ) - ํ”„๋กœ์ ํŠธ ๊ธฐํš์„œ

์ธ์Šคํƒ€๊ทธ๋žจ ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ์žฅ์†Œ ํ๋ ˆ์ด์…˜ & ๊ณต์œ  ํ”Œ๋žซํผ

์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026.01.09
์ž‘์„ฑ์ž: Cassiiopeia
๋ฒ„์ „: v1.1


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

ํ•ต์‹ฌ ์ปจ์…‰

์ธ์Šคํƒ€๊ทธ๋žจ์—์„œ ๋ฐœ๊ฒฌํ•œ ๋ง›์ง‘, ์นดํŽ˜, ๊ด€๊ด‘์ง€ ๋“ฑ์„ ์‰ฝ๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ ํ๋ ˆ์ด์…˜ ์•ฑ

์ฃผ์š” ํŠน์ง•

  • ๐Ÿ“ฑ ์ธ์Šคํƒ€๊ทธ๋žจ ๊ณต์œ  ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์›ํด๋ฆญ ์žฅ์†Œ ๋“ฑ๋ก
  • ๐Ÿ—บ๏ธ ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๋™์œผ๋กœ ์ •ํ™•ํ•œ ์žฅ์†Œ ์ •๋ณด ์ œ๊ณต
  • ๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ ๋ฐ ์ธ๊ธฐ ์žฅ์†Œ ๋ถ„์„
  • ๐Ÿ‘ฅ ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์žฅ์†Œ ๊ณต์œ  ๋ฐ ์ถ”์ฒœ

ํƒ€๊ฒŸ ์œ ์ €

  • 20~30๋Œ€ ์ธ์Šคํƒ€๊ทธ๋žจ ํ™œ์„ฑ ์‚ฌ์šฉ์ž
  • ๋ง›์ง‘/์นดํŽ˜ ํƒ๋ฐฉ์„ ์ฆ๊ธฐ๋Š” ์‚ฌ๋žŒ๋“ค
  • ์—ฌํ–‰ ๊ณ„ํš ์‹œ ์žฅ์†Œ ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค

๐ŸŽฏ ์•ฑ ์ด๋ฆ„

Mapsy (๋งต์‹œ) โœ…

์ด๋ฆ„ ์„ ์ • ์ด์œ 

  • Map + ๋งต์‹œ: ์ง€๋„(Map)์™€ ํ•œ๊ตญ์–ด "๋งต์‹œ(๋ฉ‹์Šค๋Ÿฌ์›€, ๋ชจ์–‘์ƒˆ)"์˜ ์ด์ค‘ ์˜๋ฏธ
  • ๋ฐœ์Œ: 2์Œ์ ˆ (๋งต-์‹œ)๋กœ ์•ˆ์ •๊ฐ ์žˆ๊ณ  ๊ท€์—ฌ์›€
  • ์ฝ˜์…‰ํŠธ: "๋งต์‹œ์žˆ๊ฒŒ ์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค"๋Š” ๋А๋‚Œ
  • ๋…ํŠน์„ฑ: ๊ธฐ์กด ์•ฑ๊ณผ ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ์ง๊ด€์ 
  • ์นœ๊ทผ๊ฐ: ํ•œ๊ตญ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๋‹จ์–ด ํ™œ์šฉ

์˜๋ฌธ ํ‘œ๊ธฐ

  • ์ฃผ ํ‘œ๊ธฐ: MapSee
  • ๋„๋ฉ”์ธ: mapsee.kr / mapsee.app
  • SNS: @mapsee_official

์‚ฌ์šฉ ์˜ˆ์‹œ

"์ธ์Šคํƒ€์—์„œ ๋ดค์œผ๋ฉด ๋งต์‹œํ•ด!"
"๋‚ด๊ฐ€ ๋งต์‹œํ•œ ๋ง›์ง‘ ๊ฐ€๋ณผ๋ž˜?"
"๋งต์‹œ ์•ฑ ์ผœ์„œ ํ™•์ธํ•ด๋ด"
"๋งต์‹œ์— ๋‹ด์•„๋‘” ์นดํŽ˜ ์žˆ์–ด"

๐Ÿš€ 1์ฐจ MVP (Minimum Viable Product)

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

1. ์ธ์Šคํƒ€๊ทธ๋žจ ๊ณต์œ  ์—ฐ๋™ ๐Ÿ”—

๊ธฐ๋Šฅ ์„ค๋ช…

  • iOS/Android ์‹œ์Šคํ…œ ๊ณต์œ  Sheet์— ์•ฑ ๋“ฑ๋ก
  • ์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ URL ์ˆ˜์‹  ๋ฐ ํŒŒ์‹ฑ
  • ๊ฒŒ์‹œ๋ฌผ caption์—์„œ ์žฅ์†Œ๋ช… ์ž๋™ ์ถ”์ถœ
  • ๋„ค์ด๋ฒ„ ์ง€๋„ API๋กœ ์žฅ์†Œ ๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ธ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ

๊ธฐ์ˆ  ๊ตฌํ˜„

  • Instagram URL ํŒŒ์‹ฑ (๊ณต๊ฐœ ๊ฒŒ์‹œ๋ฌผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ)
  • NLP/์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ ์žฅ์†Œ๋ช… ์ถ”์ถœ (Upstage API ํ™œ์šฉ ๊ณ ๋ ค)
  • ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๋™
    • ์žฅ์†Œ ๊ฒ€์ƒ‰ API
    • ์žฅ์†Œ ์ƒ์„ธ์ •๋ณด API
  • ์ค‘๋ณต ์žฅ์†Œ ์ฒดํฌ ๋กœ์ง (์œ„๋„/๊ฒฝ๋„ ๊ธฐ๋ฐ˜)

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ•ญ๋ชฉ

  • ์žฅ์†Œ๋ช…
  • ์ฃผ์†Œ (๋„๋กœ๋ช…, ์ง€๋ฒˆ)
  • ์œ„๋„/๊ฒฝ๋„
  • ์นดํ…Œ๊ณ ๋ฆฌ (์Œ์‹์ , ์นดํŽ˜, ๊ด€๊ด‘์ง€ ๋“ฑ)
  • ์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ URL
  • ๊ฒŒ์‹œ๋ฌผ ์ด๋ฏธ์ง€ (์ธ๋„ค์ผ)
  • ๋“ฑ๋ก ์‹œ๊ฐ„

2. ํ™ˆ ํ™”๋ฉด ๐Ÿ 

2-1. ์ตœ์‹  ์ถ”๊ฐ€ ์žฅ์†Œ

๋ ˆ์ด์•„์›ƒ

  • ์นด๋“œํ˜• ๋ฆฌ์ŠคํŠธ (๋ฌดํ•œ ์Šคํฌ๋กค)
  • ๊ฐ ์นด๋“œ ๊ตฌ์„ฑ์š”์†Œ:
    • ์žฅ์†Œ ์ธ๋„ค์ผ (์ธ์Šคํƒ€ ์ด๋ฏธ์ง€)
    • ์žฅ์†Œ๋ช…
    • ๊ฐ„๋‹จํ•œ ์ฃผ์†Œ (ex. ์„œ์šธ ๋งˆํฌ๊ตฌ)
    • ์นดํ…Œ๊ณ ๋ฆฌ ํƒœ๊ทธ
    • ๋“ฑ๋ก ์‹œ๊ฐ„ (ex. 5๋ถ„ ์ „, 2์‹œ๊ฐ„ ์ „)
    • ์ €์žฅ ๋ฒ„ํŠผ (๋ถ๋งˆํฌ ์•„์ด์ฝ˜)

์ •๋ ฌ ๋ฐฉ์‹

  • ๊ธฐ๋ณธ: ์ตœ์‹ ์ˆœ
  • ์˜ต์…˜: ์ธ๊ธฐ์ˆœ, ๊ฑฐ๋ฆฌ์ˆœ (ํ˜„์žฌ ์œ„์น˜ ๊ธฐ๋ฐ˜)

2-2. ์ธ๊ธฐ ์ธ์Šคํƒ€ ํ”ผ๋“œ

์„ ์ • ๊ธฐ์ค€

  • ์ €์žฅ ํšŸ์ˆ˜ (๋ถ๋งˆํฌ ์ˆ˜)
  • ์ตœ๊ทผ 7์ผ ๊ธฐ์ค€ ์ธ๊ธฐ๋„
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ€์ค‘์น˜: ์‹ ์„ ๋„ + ์ €์žฅ ์ˆ˜

UI ๊ตฌ์„ฑ

  • ๊ทธ๋ฆฌ๋“œํ˜• ์ธ๋„ค์ผ (3์—ด)
  • ์ €์žฅ ์ˆ˜, ์ข‹์•„์š” ์ˆ˜ ํ‘œ์‹œ
  • ํƒญํ•˜๋ฉด ์›๋ณธ ์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ด๋™
  • ๋กฑํ”„๋ ˆ์Šค ์‹œ ์žฅ์†Œ ์ƒ์„ธ์ •๋ณด ๋ชจ๋‹ฌ

2-3. ๋‚ด ์ €์žฅ ์žฅ์†Œ TOP

๊ธฐ๋Šฅ

  • ๋‚ด๊ฐ€ ๋ถ๋งˆํฌํ•œ ์žฅ์†Œ ์ค‘ ์ธ๊ธฐ ์žˆ๋Š” ๊ณณ
  • ์ •๋ ฌ ์˜ต์…˜: ์ธ๊ธฐ์ˆœ / ์ตœ๊ทผ ์ €์žฅ์ˆœ
  • ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

UI

  • ๊ฐ€๋กœ ์Šคํฌ๋กค ์นด๋“œํ˜•
  • ์ตœ๋Œ€ 10๊ฐœ ํ‘œ์‹œ
  • "์ „์ฒด ๋ณด๊ธฐ" ๋ฒ„ํŠผ

2-4. ๋– ์˜ค๋ฅด๋Š” ํ‚ค์›Œ๋“œ ํŠธ๋ Œ๋“œ

ํŠธ๋ Œ๋“œ ๋ถ„์„

  • ์ตœ๊ทผ 7์ผ/30์ผ ๊ธ‰์ƒ์Šน ํ•ด์‹œํƒœ๊ทธ
  • ์žฅ์†Œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ธ๊ธฐ ํ‚ค์›Œ๋“œ
  • ์ง€์—ญ๋ณ„ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ

ํ‘œ์‹œ ๋ฐฉ์‹

  • ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ or ์นฉ ํ˜•ํƒœ
  • ๊ฐ ํ‚ค์›Œ๋“œ ํด๋ฆญ ์‹œ ๊ด€๋ จ ๊ฒŒ์‹œ๋ฌผ ํ”ผ๋“œ๋กœ ์ด๋™
  • ์ƒ์Šน๋ฅ  ํ‘œ์‹œ (๐Ÿ”ฅ ์•„์ด์ฝ˜)

์˜ˆ์‹œ

#์„ฑ์ˆ˜๋™์นดํŽ˜ ๐Ÿ”ฅ +120%
#๋ถ์ดŒํ•œ์˜ฅ๋งˆ์„ โฌ†๏ธ +85%
#์ œ์ฃผ์ˆจ์€๋ง›์ง‘ โœจ NEW

3. ํ‚ค์›Œ๋“œ/ํƒœ๊ทธ ํ”ผ๋“œ ๐Ÿท๏ธ

๊ธฐ๋Šฅ

  • ํŠน์ • ํ‚ค์›Œ๋“œ ๊ด€๋ จ ์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ ๋ชจ์Œ
  • ํ‚ค์›Œ๋“œ ์ž๋™ ์ถ”์ถœ ๋ฐ ํƒœ๊น… ์‹œ์Šคํ…œ

UI ๊ตฌ์„ฑ

  • ์ƒ๋‹จ: ํ‚ค์›Œ๋“œ ์ •๋ณด, ๊ด€๋ จ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜
  • ํ•„ํ„ฐ ์˜ต์…˜
    • ์ตœ์‹ ์ˆœ
    • ์ธ๊ธฐ์ˆœ (์ €์žฅ ์ˆ˜)
    • ๊ฑฐ๋ฆฌ์ˆœ (๋‚ด ์œ„์น˜ ๊ธฐ์ค€)
  • ๊ทธ๋ฆฌ๋“œ๋ทฐ (2์—ด) - ๊ธฐ๋ณธ
  • ๋ฆฌ์ŠคํŠธ๋ทฐ ์ „ํ™˜ ์˜ต์…˜
  • ์šฐ์ธก ์ƒ๋‹จ: ์ง€๋„๋ทฐ ์ „ํ™˜ ๋ฒ„ํŠผ

์ถ”๊ฐ€ ๊ธฐ๋Šฅ

  • ํ‚ค์›Œ๋“œ ํŒ”๋กœ์šฐ (์•Œ๋ฆผ ์„ค์ •)
  • ์—ฐ๊ด€ ํ‚ค์›Œ๋“œ ์ถ”์ฒœ

4. ์ง€๋„๋ทฐ ๐Ÿ—บ๏ธ

๊ธฐ๋ณธ ๊ธฐ๋Šฅ

  • ์ €์žฅ๋œ ๋ชจ๋“  ์žฅ์†Œ๋ฅผ ์ง€๋„์— ํ•€์œผ๋กœ ํ‘œ์‹œ
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง (๋ฐ€์ง‘ ์ง€์—ญ์€ ์ˆซ์ž๋กœ ํ‘œ์‹œ)
  • ํ˜„์žฌ ์œ„์น˜ ํ‘œ์‹œ
  • ํ•€ ํƒญ ์‹œ ๋ฏธ๋‹ˆ ์นด๋“œ ํ‘œ์‹œ (์žฅ์†Œ๋ช…, ์ธ๋„ค์ผ, ์ €์žฅ ๋ฒ„ํŠผ)

ํ•„ํ„ฐ ๊ธฐ๋Šฅ

  • ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ•„ํ„ฐ (์ „์ฒด/์นดํŽ˜/์Œ์‹์ /๊ด€๊ด‘์ง€ ๋“ฑ)
  • ์ €์žฅํ•œ ์žฅ์†Œ๋งŒ / ์ „์ฒด ์žฅ์†Œ
  • ๊ฑฐ๋ฆฌ ๋ฐ˜๊ฒฝ ์„ค์ • (1km/3km/5km/์ „์ฒด)

๋„ค์ด๋ฒ„ ์ง€๋„ vs ์นด์นด์˜ค๋งต

  • ๋„ค์ด๋ฒ„ ์ง€๋„ API ์šฐ์„  (์ƒ์„ธ์ •๋ณด ํ’๋ถ€)
  • ๊ธธ์ฐพ๊ธฐ๋Š” ์™ธ๋ถ€ ์•ฑ ์—ฐ๋™ (์นด์นด์˜ค๋งต, ๋„ค์ด๋ฒ„์ง€๋„ ์•ฑ)

5. ๊ฐœ์ธ ๋ถ๋งˆํฌ/์ €์žฅ ๊ด€๋ฆฌ โญ

๋‚ด ์žฅ์†Œ ํŽ˜์ด์ง€

  • ์ €์žฅํ•œ ๋ชจ๋“  ์žฅ์†Œ ๋ฆฌ์ŠคํŠธ
  • ํด๋”/์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ •๋ฆฌ (1์ฐจ์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ๋ถ„๋ฅ˜)
    • ๊ฐ€๊ณ  ์‹ถ์€ ๊ณณ
    • ๊ฐ€๋ณธ ๊ณณ
    • ์ฆ๊ฒจ์ฐพ๊ธฐ
  • ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ (์žฅ์†Œ๋ช…, ์ฃผ์†Œ, ๋ฉ”๋ชจ)

์žฅ์†Œ ์ƒ์„ธ ํŽ˜์ด์ง€

  • ์žฅ์†Œ ์ •๋ณด (์ฃผ์†Œ, ์˜์—…์‹œ๊ฐ„, ์ „ํ™”๋ฒˆํ˜ธ - ๋„ค์ด๋ฒ„ API)
  • ์—ฐ๊ฒฐ๋œ ์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ๋“ค
  • ๋‚ด ๋ฉ”๋ชจ (๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ)
  • ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ฒดํฌ
  • ๊ณต์œ  ๋ฒ„ํŠผ (์นด์นด์˜คํ†ก, URL ๋ณต์‚ฌ)

6. ๋„ค์ด๋ฒ„ ์ง€๋„ ์ •๋ณด ์—ฐ๋™ ๐Ÿ”

ํ™œ์šฉ API

  • Naver Maps API
    • ์žฅ์†Œ ๊ฒ€์ƒ‰ (Geocoding)
    • ์žฅ์†Œ ์ƒ์„ธ์ •๋ณด
    • Reverse Geocoding (์ขŒํ‘œ โ†’ ์ฃผ์†Œ)

์ˆ˜์ง‘ ์ •๋ณด

  • ์ •ํ™•ํ•œ ์ฃผ์†Œ
  • ์œ„๋„/๊ฒฝ๋„
  • ์˜์—…์‹œ๊ฐ„
  • ์ „ํ™”๋ฒˆํ˜ธ
  • ์นดํ…Œ๊ณ ๋ฆฌ/์—…์ข…
  • ๋„ค์ด๋ฒ„ ํ”Œ๋ ˆ์ด์Šค URL

๋ฐ์ดํ„ฐ ์บ์‹ฑ

  • ํ•œ๋ฒˆ ์กฐํšŒํ•œ ์žฅ์†Œ ์ •๋ณด๋Š” DB์— ์บ์‹ฑ
  • ์ฃผ๊ธฐ์  ์—…๋ฐ์ดํŠธ (1์ฃผ์ผ or 1๊ฐœ์›”)

๐ŸŽจ UI/UX ๊ตฌ์„ฑ

๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ

Bottom Tab Navigation (5๊ฐœ)
โ”œโ”€ ๐Ÿ  ํ™ˆ
โ”œโ”€ ๐Ÿ” ๊ฒ€์ƒ‰
โ”œโ”€ ๐Ÿ—บ๏ธ ์ง€๋„
โ”œโ”€ โญ ์ €์žฅ
โ””โ”€ ๐Ÿ‘ค ํ”„๋กœํ•„

์ฃผ์š” ํ™”๋ฉด ํ”Œ๋กœ์šฐ

Instagram ๊ณต์œ 
    โ†“
MapSee ์•ฑ ์˜คํ”ˆ
    โ†“
์žฅ์†Œ๋ช… ์ž๋™ ์ธ์‹ (ํŽธ์ง‘ ๊ฐ€๋Šฅ)
    โ†“
๋„ค์ด๋ฒ„ ์ง€๋„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ (์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ์„ ํƒ)
    โ†“
์žฅ์†Œ ์ •๋ณด ํ™•์ธ
    โ†“
์ €์žฅ ์™„๋ฃŒ (ํด๋” ์„ ํƒ ์˜ต์…˜)

๐Ÿ”ฅ 2์ฐจ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ

1. ์†Œ์…œ ๊ธฐ๋Šฅ ๐Ÿ‘ฅ

1-1. ์นœ๊ตฌ ์‹œ์Šคํ…œ

๊ธฐ๋Šฅ

  • ์นœ๊ตฌ ์ถ”๊ฐ€/์‚ญ์ œ (ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๋ฐฉ์‹)
  • ์นœ๊ตฌ ๊ฒ€์ƒ‰ (๋‹‰๋„ค์ž„, ID)
  • ์นœ๊ตฌ ์š”์ฒญ ์Šน์ธ ์‹œ์Šคํ…œ

์นœ๊ตฌ ํ”ผ๋“œ

  • ์นœ๊ตฌ๊ฐ€ ์ €์žฅํ•œ ์žฅ์†Œ ํƒ€์ž„๋ผ์ธ
  • "์นœ๊ตฌ๋“ค์ด ๋งŽ์ด ๊ฐ„ ๊ณณ" ์„น์…˜
  • ์นœ๊ตฌ ํ”„๋กœํ•„ โ†’ ์ €์žฅ ์žฅ์†Œ ๋ชฉ๋ก ๊ณต๊ฐœ ์„ค์ •

์•Œ๋ฆผ

  • ์นœ๊ตฌ๊ฐ€ ์ƒˆ ์žฅ์†Œ ์ €์žฅ ์‹œ ์•Œ๋ฆผ (์˜ต์…˜)
  • ์นœ๊ตฌ๊ฐ€ ๋‚ด ์žฅ์†Œ์— ๋ฐ˜์‘ ์‹œ ์•Œ๋ฆผ

1-2. ํ•œ์ค„ํ‰/๋ฉ”๋ชจ ์‹œ์Šคํ…œ

๊ธฐ๋Šฅ

  • ์žฅ์†Œ ์ €์žฅ ์‹œ ๊ฐœ์ธ ๋ฉ”๋ชจ ์ž‘์„ฑ
  • ๋ณ„์  (5์  ๋งŒ์ )
  • ํ•ด์‹œํƒœ๊ทธ ์ถ”๊ฐ€
  • ๊ณต๊ฐœ/๋น„๊ณต๊ฐœ ์„ค์ •
    • ๋น„๊ณต๊ฐœ: ๋‚˜๋งŒ ๋ณด๊ธฐ
    • ์นœ๊ตฌ ๊ณต๊ฐœ: ์นœ๊ตฌ๋“ค์—๊ฒŒ๋งŒ
    • ์ „์ฒด ๊ณต๊ฐœ: ๋ชจ๋“  ์œ ์ €

UI

  • ์žฅ์†Œ ์ƒ์„ธ ํŽ˜์ด์ง€์— ๋ฉ”๋ชจ ์„น์…˜
  • ์นœ๊ตฌ๋“ค์˜ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ํ‘œ์‹œ (๊ณต๊ฐœ ์„ค์ •์— ๋”ฐ๋ผ)

2. ํ๋ ˆ์ด์…˜ ๊ธฐ๋Šฅ ๐Ÿ“š

2-1. ์ปฌ๋ ‰์…˜ ๋งŒ๋“ค๊ธฐ

์ปจ์…‰

  • ํ…Œ๋งˆ๋ณ„ ์žฅ์†Œ ๋ฌถ์Œ (ex. "์„œ์ดŒ ์นดํŽ˜ ํˆฌ์–ด", "์ œ์ฃผ ์„œ๋ถ€ ๋“œ๋ผ์ด๋ธŒ", "๋ฐ์ดํŠธ ์ฝ”์Šค")

๊ธฐ๋Šฅ

  • ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ/ํŽธ์ง‘/์‚ญ์ œ
  • ์žฅ์†Œ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ์ˆœ์„œ ์กฐ์ •
  • ์ปค๋ฒ„ ์ด๋ฏธ์ง€ ์„ค์ •
  • ์„ค๋ช… ํ…์ŠคํŠธ

๊ณต์œ 

  • ์ปฌ๋ ‰์…˜ ๊ณต์œ  ๋งํฌ ์ƒ์„ฑ
  • ์นด์นด์˜คํ†ก, URL ๋ณต์‚ฌ
  • ๋‹ค๋ฅธ ์œ ์ €๊ฐ€ ์ปฌ๋ ‰์…˜ ์ €์žฅ ๊ฐ€๋Šฅ ("๋‚ด ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€")

๋ฃจํŠธ ์ตœ์ ํ™”

  • ์ง€๋„์— ์ปฌ๋ ‰์…˜ ๋‚ด ์žฅ์†Œ๋“ค ํ‘œ์‹œ
  • ๋ฐฉ๋ฌธ ์ˆœ์„œ ์ž๋™ ์ถ”์ฒœ (์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜)
  • ์˜ˆ์ƒ ์†Œ์š” ์‹œ๊ฐ„ ๊ณ„์‚ฐ

2-2. ์ฑŒ๋ฆฐ์ง€/์Šคํƒฌํ”„ ๐Ÿ†

๊ฒŒ์ž„ํ™” ์š”์†Œ

  • "์ด๋ฒˆ ์ฃผ 5๊ณณ ๋ฐฉ๋ฌธํ•˜๊ธฐ"
  • "์„œ์šธ 25๊ฐœ ๊ตฌ ์ œํŒจํ•˜๊ธฐ"
  • "์นดํŽ˜ ๋งˆ์Šคํ„ฐ: 100๊ฐœ ์นดํŽ˜ ๋ฐฉ๋ฌธ"

๋ฐฉ๋ฌธ ์ธ์ฆ

  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ฒดํฌ์ธ (GPS ํ™œ์šฉ)
  • ์ธ์ฆ์ƒท ์—…๋กœ๋“œ (์˜ต์…˜)
  • ์Šคํƒฌํ”„ ์ž๋™ ์ ๋ฆฝ

๋ณด์ƒ ์‹œ์Šคํ…œ

  • ๋ฑƒ์ง€ ์ˆ˜์ง‘
  • ๋ ˆ๋ฒจ ์‹œ์Šคํ…œ (Bronze/Silver/Gold/Platinum)
  • ๋žญํ‚น ๋ณด๋“œ (์ฃผ๊ฐ„/์›”๊ฐ„/์ „์ฒด)

3. ๊ฐœ์ธํ™” ๊ธฐ๋Šฅ ๐Ÿค–

3-1. AI ์ถ”์ฒœ ์‹œ์Šคํ…œ

๋ฐ์ดํ„ฐ ๋ถ„์„

  • ๋‚ด ์ €์žฅ ํŒจํ„ด ๋ถ„์„
    • ์„ ํ˜ธ ์นดํ…Œ๊ณ ๋ฆฌ
    • ์ฃผ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์ง€์—ญ
    • ์ €์žฅ ์‹œ๊ฐ„๋Œ€ ํŒจํ„ด
  • ์นœ๊ตฌ๋“ค์˜ ์ทจํ–ฅ ๊ต์ง‘ํ•ฉ

์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ํ˜‘์—… ํ•„ํ„ฐ๋ง (๋น„์Šทํ•œ ์ทจํ–ฅ ์œ ์ € ๊ธฐ๋ฐ˜)
  • ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง (์นดํ…Œ๊ณ ๋ฆฌ, ์ง€์—ญ)
  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ชจ๋ธ

UI

  • "๋‹น์‹ ์ด ์ข‹์•„ํ•  ๋งŒํ•œ ๊ณณ" ์„น์…˜
  • ํ™ˆ ํ™”๋ฉด์— ๊ฐœ์ธํ™” ์นด๋“œ
  • ์ฃผ๊ฐ„ ์ถ”์ฒœ (๋งค์ฃผ ์›”์š”์ผ ์•Œ๋ฆผ)

3-2. ์Šค๋งˆํŠธ ์•Œ๋ฆผ ๐Ÿ””

์œ„์น˜ ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ

  • ์ €์žฅํ•œ ์žฅ์†Œ ๊ทผ์ฒ˜ 500m ์ด๋‚ด ์ง„์ž… ์‹œ ์•Œ๋ฆผ
  • "๊ฐ€๊นŒ์šด ๊ณณ์— ์ €์žฅํ•˜์‹  [์žฅ์†Œ๋ช…]์ด ์žˆ์–ด์š”!" ํ‘ธ์‹œ

ํŠธ๋ Œ๋“œ ์•Œ๋ฆผ

  • ์ƒˆ๋กœ์šด ํ•ซํ”Œ๋ ˆ์ด์Šค ์•Œ๋ฆผ
  • ๋‚ด๊ฐ€ ํŒ”๋กœ์šฐํ•œ ํ‚ค์›Œ๋“œ ๊ธ‰์ƒ์Šน ์‹œ
  • ์นœ๊ตฌ๊ฐ€ ๋‚ด ๊ทผ์ฒ˜ ์žฅ์†Œ ์ €์žฅ ์‹œ

๋ฆฌ๋งˆ์ธ๋”

  • "์ €์žฅ๋งŒ ํ•˜๊ณ  ์•ˆ ๊ฐ„ ๊ณณ" ๋ฆฌ๋งˆ์ธ๋” (์›” 1ํšŒ)
  • "3๊ฐœ์›” ์ „ ์ €์žฅํ•œ [์žฅ์†Œ๋ช…], ์•„์ง ์•ˆ ๊ฐ€๋ณด์…จ๋‚˜์š”?"

4. ํŽธ์˜ ๊ธฐ๋Šฅ ๐Ÿ› ๏ธ

4-1. ์™ธ๋ถ€ ์•ฑ ์—ฐ๋™

๊ธธ์ฐพ๊ธฐ

  • ์นด์นด์˜ค๋งต ์•ฑ์œผ๋กœ ๊ธธ์ฐพ๊ธฐ
  • ๋„ค์ด๋ฒ„์ง€๋„ ์•ฑ์œผ๋กœ ๊ธธ์ฐพ๊ธฐ
  • ํ‹ฐ๋งต ์—ฐ๋™ (์˜ต์…˜)

์˜ˆ์•ฝ ์‹œ์Šคํ…œ

  • ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์—ฐ๋™
  • ์นด์นด์˜ค ์˜ˆ์•ฝ ์—ฐ๋™
  • ์ „ํ™” ๊ฑธ๊ธฐ (์›ํ„ฐ์น˜)

๊ณต์œ 

  • ์นด์นด์˜คํ†ก ๊ณต์œ 
  • Instagram DM ๊ณต์œ 
  • URL ๋ณต์‚ฌ

4-2. ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ ๐Ÿ“Š

๋‚ด ํ™œ๋™ ๋ถ„์„

  • ์ด ์ €์žฅ ์žฅ์†Œ ์ˆ˜
  • ์‹ค์ œ ๋ฐฉ๋ฌธํ•œ ๊ณณ ์ˆ˜
  • ๋ฐฉ๋ฌธ์œจ (%)
  • ๊ฐ€์žฅ ๋งŽ์ด ์ €์žฅํ•œ ์นดํ…Œ๊ณ ๋ฆฌ
  • ์ง€์—ญ๋ณ„ ๋ถ„ํฌ ์ง€๋„

์›”๊ฐ„ ๋ฆฌํฌํŠธ

  • ์ด๋ฒˆ ๋‹ฌ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ณณ N๊ฐœ
  • ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ์—ˆ๋˜ ์žฅ์†Œ TOP 5
  • ์นœ๊ตฌ๋“ค๊ณผ ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ

๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

  • ์ฐจํŠธ (ํŒŒ์ด, ๋ฐ”, ๋ผ์ธ)
  • ํžˆํŠธ๋งต (์ง€์—ญ๋ณ„ ํ™œ๋™)
  • ํƒ€์ž„๋ผ์ธ

4-3. ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰ ๐Ÿ”

ํ•„ํ„ฐ ์˜ต์…˜

  • ์ง€์—ญ (์‹œ/๊ตฌ/๋™)
  • ์นดํ…Œ๊ณ ๋ฆฌ (๋‹ค์ค‘ ์„ ํƒ)
  • ํ‚ค์›Œ๋“œ (์žฅ์†Œ๋ช…, ๋ฉ”๋ชจ, ํƒœ๊ทธ)
  • ๋ฐฉ๋ฌธ ์—ฌ๋ถ€
  • ์ €์žฅ ๋‚ ์งœ ๋ฒ”์œ„
  • ๋ณ„์ 

๋ถ€๊ฐ€ ํ•„ํ„ฐ

  • ์ฃผ์ฐจ ๊ฐ€๋Šฅ ์—ฌ๋ถ€
  • ์˜ˆ์•ฝ ํ•„์š” ์—ฌ๋ถ€
  • ๊ฐ€๊ฒฉ๋Œ€ (โ‚ฉ/โ‚ฉโ‚ฉ/โ‚ฉโ‚ฉโ‚ฉ)
  • ์˜์—… ์ค‘ (ํ˜„์žฌ ์˜์—… ์‹œ๊ฐ„ ๊ธฐ์ค€)

๊ฒฐ๊ณผ ํ‘œ์‹œ

  • ๋ฆฌ์ŠคํŠธ๋ทฐ / ๊ทธ๋ฆฌ๋“œ๋ทฐ / ์ง€๋„๋ทฐ
  • ์ •๋ ฌ: ๊ด€๋ จ๋„์ˆœ/์ตœ์‹ ์ˆœ/์ธ๊ธฐ์ˆœ/๊ฑฐ๋ฆฌ์ˆœ

๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ

Frontend

  • Framework: Flutter

    • Cross-platform (iOS/Android)
    • ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„
    • Native ์„ฑ๋Šฅ
  • ์ƒํƒœ ๊ด€๋ฆฌ: Riverpod or Bloc

  • ๋กœ์ปฌ DB: Hive or Drift (SQLite)

  • HTTP Client: Dio

  • ์ง€๋„: flutter_naver_map or google_maps_flutter

Backend

  • Framework: Spring Boot 3.x

    • Java 17 or 21
    • Spring Data JPA
    • Spring Security (JWT ์ธ์ฆ)
  • Database

    • PostgreSQL (์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
    • Redis (์บ์‹ฑ, ์„ธ์…˜)
    • Elasticsearch (๊ฒ€์ƒ‰ - ์„ ํƒ์‚ฌํ•ญ)
  • API Integration

    • ๋„ค์ด๋ฒ„ ์ง€๋„ API
    • Instagram Graph API (์ œํ•œ์ )
    • Upstage API (NLP/OCR)

Infrastructure

  • Server: Synology NAS (์ดˆ๊ธฐ) โ†’ AWS/GCP (ํ™•์žฅ ์‹œ)
  • Container: Docker
  • Reverse Proxy: Traefik
  • CI/CD: GitHub Actions
  • Monitoring: Prometheus + Grafana (์„ ํƒ)

์ถ”๊ฐ€ ๋„๊ตฌ

  • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: ImageMagick, Pillow
  • NLP: Upstage API, KoNLPy (ํ•œ๊ตญ์–ด ์ฒ˜๋ฆฌ)
  • Push Notification: Firebase Cloud Messaging
  • Analytics: Google Analytics, Mixpanel

๐Ÿ—‚๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ (์ดˆ์•ˆ)

์ฃผ์š” ํ…Œ์ด๋ธ”

1. users (์‚ฌ์šฉ์ž)

CREATE TABLE users (
    id BIGSERIAL PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    nickname VARCHAR(50),
    profile_image_url TEXT,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

2. places (์žฅ์†Œ)

CREATE TABLE places (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    address VARCHAR(300),
    road_address VARCHAR(300),
    latitude DECIMAL(10, 8),
    longitude DECIMAL(11, 8),
    category VARCHAR(50),
    naver_place_id VARCHAR(100),
    phone VARCHAR(20),
    opening_hours TEXT,
    naver_url TEXT,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW(),
    UNIQUE(latitude, longitude) -- ์ค‘๋ณต ์žฅ์†Œ ๋ฐฉ์ง€
);

3. instagram_posts (์ธ์Šคํƒ€๊ทธ๋žจ ๊ฒŒ์‹œ๋ฌผ)

CREATE TABLE instagram_posts (
    id BIGSERIAL PRIMARY KEY,
    place_id BIGINT REFERENCES places(id),
    instagram_url TEXT UNIQUE NOT NULL,
    thumbnail_url TEXT,
    caption TEXT,
    author VARCHAR(100),
    posted_at TIMESTAMP,
    created_at TIMESTAMP DEFAULT NOW()
);

4. user_bookmarks (์‚ฌ์šฉ์ž ๋ถ๋งˆํฌ)

CREATE TABLE user_bookmarks (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT REFERENCES users(id),
    place_id BIGINT REFERENCES places(id),
    folder VARCHAR(50) DEFAULT 'default', -- '๊ฐ€๊ณ  ์‹ถ์€ ๊ณณ', '๊ฐ€๋ณธ ๊ณณ' ๋“ฑ
    memo TEXT,
    rating INT CHECK (rating BETWEEN 1 AND 5),
    visited BOOLEAN DEFAULT FALSE,
    visited_at TIMESTAMP,
    created_at TIMESTAMP DEFAULT NOW(),
    UNIQUE(user_id, place_id)
);

5. keywords (ํ‚ค์›Œ๋“œ/ํƒœ๊ทธ)

CREATE TABLE keywords (
    id BIGSERIAL PRIMARY KEY,
    keyword VARCHAR(100) UNIQUE NOT NULL,
    count INT DEFAULT 1,
    trend_score DECIMAL(10, 2) DEFAULT 0, -- ํŠธ๋ Œ๋“œ ์ ์ˆ˜
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

6. place_keywords (์žฅ์†Œ-ํ‚ค์›Œ๋“œ ์—ฐ๊ฒฐ)

CREATE TABLE place_keywords (
    place_id BIGINT REFERENCES places(id),
    keyword_id BIGINT REFERENCES keywords(id),
    PRIMARY KEY (place_id, keyword_id)
);

2์ฐจ ์—…๋ฐ์ดํŠธ ์ถ”๊ฐ€ ํ…Œ์ด๋ธ”

7. user_follows (์นœ๊ตฌ ๊ด€๊ณ„)

CREATE TABLE user_follows (
    follower_id BIGINT REFERENCES users(id),
    following_id BIGINT REFERENCES users(id),
    created_at TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY (follower_id, following_id)
);

8. collections (์ปฌ๋ ‰์…˜)

CREATE TABLE collections (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT REFERENCES users(id),
    title VARCHAR(200) NOT NULL,
    description TEXT,
    cover_image_url TEXT,
    is_public BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

9. collection_places (์ปฌ๋ ‰์…˜-์žฅ์†Œ)

CREATE TABLE collection_places (
    collection_id BIGINT REFERENCES collections(id),
    place_id BIGINT REFERENCES places(id),
    order_num INT,
    PRIMARY KEY (collection_id, place_id)
);

๐Ÿ“ฑ API ์—”๋“œํฌ์ธํŠธ (์ดˆ์•ˆ)

์ธ์ฆ (Authentication)

  • POST /api/auth/register - ํšŒ์›๊ฐ€์ž…
  • POST /api/auth/login - ๋กœ๊ทธ์ธ
  • POST /api/auth/logout - ๋กœ๊ทธ์•„์›ƒ
  • POST /api/auth/refresh - ํ† ํฐ ๊ฐฑ์‹ 

์žฅ์†Œ (Places)

  • GET /api/places - ์žฅ์†Œ ๋ชฉ๋ก ์กฐํšŒ (ํŽ˜์ด์ง•, ํ•„ํ„ฐ๋ง)
  • GET /api/places/{id} - ์žฅ์†Œ ์ƒ์„ธ ์กฐํšŒ
  • POST /api/places - ์žฅ์†Œ ๋“ฑ๋ก (์ธ์Šคํƒ€๊ทธ๋žจ URL)
  • DELETE /api/places/{id} - ์žฅ์†Œ ์‚ญ์ œ (๊ด€๋ฆฌ์ž)

๋ถ๋งˆํฌ (Bookmarks)

  • GET /api/bookmarks - ๋‚ด ์ €์žฅ ์žฅ์†Œ ๋ชฉ๋ก
  • POST /api/bookmarks - ์žฅ์†Œ ์ €์žฅ
  • PUT /api/bookmarks/{id} - ๋ถ๋งˆํฌ ์ˆ˜์ • (๋ฉ”๋ชจ, ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ๋“ฑ)
  • DELETE /api/bookmarks/{id} - ์ €์žฅ ์ทจ์†Œ

ํ”ผ๋“œ (Feed)

  • GET /api/feed/latest - ์ตœ์‹  ์ถ”๊ฐ€ ์žฅ์†Œ
  • GET /api/feed/popular - ์ธ๊ธฐ ์ธ์Šคํƒ€ ํ”ผ๋“œ
  • GET /api/feed/trending - ๋– ์˜ค๋ฅด๋Š” ํ‚ค์›Œ๋“œ

๊ฒ€์ƒ‰ (Search)

  • GET /api/search/places - ์žฅ์†Œ ๊ฒ€์ƒ‰
  • GET /api/search/keywords - ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
  • POST /api/search/naver - ๋„ค์ด๋ฒ„ ์ง€๋„ ๊ฒ€์ƒ‰ (ํ”„๋ก์‹œ)

ํ‚ค์›Œ๋“œ (Keywords)

  • GET /api/keywords/trending - ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ
  • GET /api/keywords/{keyword}/places - ํ‚ค์›Œ๋“œ๋ณ„ ์žฅ์†Œ

์ง€๋„ (Map)

  • GET /api/map/places - ์ง€๋„์šฉ ์žฅ์†Œ ๋ชฉ๋ก (๋ฐ”์šด๋”ฉ ๋ฐ•์Šค)
  • GET /api/map/clusters - ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ์ดํ„ฐ

2์ฐจ: ์†Œ์…œ (Social)

  • GET /api/users/{id}/bookmarks - ํƒ€ ์œ ์ € ์ €์žฅ ์žฅ์†Œ
  • POST /api/follow/{userId} - ์นœ๊ตฌ ์ถ”๊ฐ€
  • DELETE /api/follow/{userId} - ์นœ๊ตฌ ์‚ญ์ œ
  • GET /api/friends/feed - ์นœ๊ตฌ ํ”ผ๋“œ

2์ฐจ: ์ปฌ๋ ‰์…˜ (Collections)

  • GET /api/collections - ์ปฌ๋ ‰์…˜ ๋ชฉ๋ก
  • POST /api/collections - ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
  • PUT /api/collections/{id} - ์ปฌ๋ ‰์…˜ ์ˆ˜์ •
  • DELETE /api/collections/{id} - ์ปฌ๋ ‰์…˜ ์‚ญ์ œ

๐Ÿ” ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

์ธ์ฆ/์ธ๊ฐ€

  • JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • Access Token (15๋ถ„) + Refresh Token (7์ผ)
  • HTTPS ๊ฐ•์ œ

๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” (BCrypt)
  • ๊ฐœ์ธ์ •๋ณด ์•”ํ˜ธํ™” (AES-256)
  • SQL Injection ๋ฐฉ์ง€ (Prepared Statement)
  • XSS ๋ฐฉ์ง€ (์ž…๋ ฅ ๊ฒ€์ฆ, ์ถœ๋ ฅ ์ธ์ฝ”๋”ฉ)

API ๋ณด์•ˆ

  • Rate Limiting (์‚ฌ์šฉ์ž๋ณ„, IP๋ณ„)
  • CORS ์„ค์ •
  • API Key ๊ด€๋ฆฌ (๋„ค์ด๋ฒ„, Instagram)

๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ

  • ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ง‘ ์ตœ์†Œํ™”
  • ์ด์šฉ์•ฝ๊ด€ ๋ฐ ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ
  • ํƒˆํ‡ด ์‹œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์ •์ฑ…

๐Ÿ“Š ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ (ํ–ฅํ›„ ๊ณ ๋ ค์‚ฌํ•ญ)

๋ฌด๋ฃŒ ์„œ๋น„์Šค

  • ๊ธฐ๋ณธ ์žฅ์†Œ ์ €์žฅ/๊ด€๋ฆฌ
  • ํ™ˆ ํ”ผ๋“œ ๋ฐ ํŠธ๋ Œ๋“œ ํ™•์ธ
  • ์ง€๋„๋ทฐ (๊ด‘๊ณ  ํฌํ•จ)

ํ”„๋ฆฌ๋ฏธ์—„ ๊ตฌ๋… (์›” โ‚ฉ4,900 ์˜ˆ์ƒ)

  • ๊ด‘๊ณ  ์ œ๊ฑฐ
  • ๋ฌด์ œํ•œ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ (๋ฌด๋ฃŒ: 5๊ฐœ ์ œํ•œ)
  • ๊ณ ๊ธ‰ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ
  • ์šฐ์„  ๊ณ ๊ฐ ์ง€์›

์ œํœด ๋ฐ ๊ด‘๊ณ 

  • ๋ง›์ง‘/์นดํŽ˜ ํ”„๋กœ๋ชจ์…˜ ๊ด‘๊ณ 
  • ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์ˆ˜์ˆ˜๋ฃŒ
  • ์ œํœด ๋งˆ์ผ€ํŒ… (์ฟ ํŒก, ์•ผ๋†€์ž ๋“ฑ)

๐ŸŽฏ ๋กœ๋“œ๋งต

Phase 1: MVP (1-2๊ฐœ์›”)

  • โœ… ์ธ์Šคํƒ€๊ทธ๋žจ ๊ณต์œ  ์—ฐ๋™
  • โœ… ์žฅ์†Œ ๋“ฑ๋ก ๋ฐ ์ €์žฅ
  • โœ… ํ™ˆ ํ”ผ๋“œ (์ตœ์‹ /์ธ๊ธฐ/ํŠธ๋ Œ๋“œ)
  • โœ… ๊ธฐ๋ณธ ์ง€๋„๋ทฐ
  • โœ… ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๋™

Phase 2: ์†Œ์…œ & ํ๋ ˆ์ด์…˜ (2-3๊ฐœ์›”)

  • ์นœ๊ตฌ ๊ธฐ๋Šฅ
  • ์ปฌ๋ ‰์…˜ ์‹œ์Šคํ…œ
  • ํ•œ์ค„ํ‰/๋ฉ”๋ชจ
  • ์ฑŒ๋ฆฐ์ง€/์Šคํƒฌํ”„

Phase 3: AI & ๊ฐœ์ธํ™” (3-4๊ฐœ์›”)

  • AI ์ถ”์ฒœ ์‹œ์Šคํ…œ
  • ์Šค๋งˆํŠธ ์•Œ๋ฆผ
  • ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ
  • ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰

Phase 4: ํ™•์žฅ (4-6๊ฐœ์›”)

  • ๋‹ค๊ตญ์–ด ์ง€์›
  • ํ•ด์™ธ ์„œ๋น„์Šค ํ™•์žฅ
  • ํŒŒํŠธ๋„ˆ์‹ญ ํ™•๋Œ€
  • ํ”„๋ฆฌ๋ฏธ์—„ ๊ตฌ๋… ์ถœ์‹œ

๐Ÿงช ํ…Œ์ŠคํŠธ ๊ณ„ํš

Unit Test

  • Spring Boot Service Layer
  • Repository Layer
  • Utility Functions

Integration Test

  • API ์—”๋“œํฌ์ธํŠธ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™
  • ์™ธ๋ถ€ API ์—ฐ๋™ (Mock)

E2E Test

  • Flutter Widget Test
  • ์ฃผ์š” ์‚ฌ์šฉ์ž ํ”Œ๋กœ์šฐ
    • ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
    • ์žฅ์†Œ ๋“ฑ๋ก
    • ๋ถ๋งˆํฌ ์ €์žฅ/์‚ญ์ œ

Performance Test

  • API ์‘๋‹ต ์‹œ๊ฐ„ (< 500ms)
  • ๋™์‹œ ์ ‘์†์ž ์ฒ˜๋ฆฌ (1000๋ช…)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์ตœ์ ํ™”

๐Ÿ“ˆ ์„ฑ๊ณต ์ง€ํ‘œ (KPI)

์‚ฌ์šฉ์ž ์ง€ํ‘œ

  • MAU (์›”๊ฐ„ ํ™œ์„ฑ ์‚ฌ์šฉ์ž): 10,000๋ช… (6๊ฐœ์›” ๋ชฉํ‘œ)
  • DAU/MAU ๋น„์œจ: 30% ์ด์ƒ
  • ํ‰๊ท  ์‚ฌ์šฉ ์‹œ๊ฐ„: 5๋ถ„/์ผ

์ฐธ์—ฌ๋„ ์ง€ํ‘œ

  • ํ‰๊ท  ์ €์žฅ ์žฅ์†Œ ์ˆ˜: 20๊ฐœ/์‚ฌ์šฉ์ž
  • ์ธ์Šคํƒ€๊ทธ๋žจ ๊ณต์œ  ์‚ฌ์šฉ๋ฅ : 70%
  • ์นœ๊ตฌ ์ดˆ๋Œ€์œจ: 30%

๋ฆฌํ…์…˜ ์ง€ํ‘œ

  • Day 1 Retention: 40%
  • Day 7 Retention: 20%
  • Day 30 Retention: 10%

๐Ÿ’ก ์ฐจ๋ณ„ํ™” ํฌ์ธํŠธ

๊ฒฝ์Ÿ ์•ฑ ๋Œ€๋น„ ๊ฐ•์ 

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

์ฃผ์š” ๊ฒฝ์Ÿ ์„œ๋น„์Šค

  • ๋ง๊ณ ํ”Œ๋ ˆ์ดํŠธ (๋ง›์ง‘ ํŠนํ™”)
  • ํฌ์ž‰ (์นดํŽ˜/์žฅ์†Œ ํ๋ ˆ์ด์…˜)
  • ๋‹ค์ด๋‹์ฝ”๋“œ
  • ๋„ค์ด๋ฒ„ MYํ”Œ๋ ˆ์ด์Šค

๐Ÿ“ ๋‹ค์Œ ๋‹จ๊ณ„

์ฆ‰์‹œ ์ง„ํ–‰ ์‚ฌํ•ญ

  1. ์•ฑ ์ด๋ฆ„ ์ตœ์ข… ํ™•์ • (PlaceLog)
  2. ๋„๋ฉ”์ธ ๊ตฌ๋งค (placelog.kr / placelog.app)
  3. ๋””์ž์ธ ๋ชฉ์—… ์ œ์ž‘ (Figma)
  4. ๋„ค์ด๋ฒ„ ์ง€๋„ API ํ‚ค ๋ฐœ๊ธ‰
  5. Instagram Graph API ์กฐ์‚ฌ

๊ฐœ๋ฐœ ์ค€๋น„

  1. GitHub Repository ์ƒ์„ฑ
  2. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์„ค๊ณ„
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ERD ์ƒ์„ธํ™”
  4. API ๋ช…์„ธ์„œ ์ž‘์„ฑ (Swagger/OpenAPI)
  5. CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

๋งˆ์ผ€ํŒ… ์ค€๋น„

  1. ์ธ์Šคํƒ€๊ทธ๋žจ ๊ณ„์ • ๊ฐœ์„ค
  2. ๋ฒ ํƒ€ ํ…Œ์Šคํ„ฐ ๋ชจ์ง‘ ๊ณ„ํš
  3. ์•ฑ์Šคํ† ์–ด ๋“ฑ๋ก ์ค€๋น„ (iOS/Android)

๐Ÿ“ž Contact & Resources


๋ฌธ์„œ ๋ฒ„์ „: v1.1
์ตœ์ข… ์ˆ˜์ •: 2026.01.09
๋‹ค์Œ ์—…๋ฐ์ดํŠธ ์˜ˆ์ •: ๋””์ž์ธ ๋ชฉ์—… ๋ฐ ์ƒ์„ธ API ๋ช…์„ธ์„œ


Metadata

Metadata

Assignees

No one assigned

    Labels

    ๋ฌธ์„œ๋ฌธ์„œ ์ž‘์—… ๊ด€๋ จ์ž‘์—… ์™„๋ฃŒ์ž‘์—… ์™„๋ฃŒ ์ƒํƒœ์ธ ๊ฒฝ์šฐ (์ด์Šˆ ํ์‡„)

    Type

    No type

    Projects

    Status

    ๋ฌธ์„œ

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions