Skip to content

๐Ÿ† 2025 ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์†Œํ”„ํŠธ์›จ์–ด์บก์Šคํ†ค๋””์ž์ธ_์ˆ˜์ƒ ๐Ÿ† ๐Ÿƒ - ๋Ÿฌ๋‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Notifications You must be signed in to change notification settings

WayToEarth-Team/WayToEarth_FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

573 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

image



WayToEarth - ๋ชจ๋˜ ๋Ÿฌ๋‹ ยท ์—ฌ์ • ยท ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ•˜๋‚˜๋กœ ์ž‡๋Š” ํ”Œ๋žซํผ

WayToEarth๋Š” โ€œ๋‹จ์ˆœ ๋Ÿฌ๋‹ ์•ฑโ€์„ ๋„˜์–ด, ๋‹ฌ๋ฆฐ ๊ฑฐ๋ฆฌ โ†’ ๊ฐ€์ƒ ์—ฌ์ • ์ง„ํ–‰ โ†’ ์Šคํƒฌํ”„/์— ๋ธ”๋Ÿผ ํš๋“ โ†’ AI ๋Ÿฌ๋‹ ๋ถ„์„ โ†’ ํฌ๋ฃจ์™€ ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๊ธฐ ๊นŒ์ง€ ํ•˜๋‚˜์˜ ๊ฒฝํ—˜์œผ๋กœ ๋ฌถ์€ ์Šค๋งˆํŠธ ๋Ÿฌ๋‹ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์ง€๋ฃจํ•œ ์šด๋™ ๊ธฐ๋ก์ด ์•„๋‹ˆ๋ผ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ๋Š” ์—ฌ์ •, ์˜๋ฏธ ์žˆ๋Š” ์„ฑ์ทจ, ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ๊ฒฝํ—˜์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


1. ๋ฌธ์ œ ์ •์˜ & ๋‹ˆ์ฆˆ ๋ถ„์„

AS-IS โ€” ๊ธฐ์กด ๋Ÿฌ๋‹ ์•ฑ์˜ ํ•œ๊ณ„

  • ํ˜ผ์ž ๋›ฐ๋ฉด ์ง€๋ฃจํ•˜๊ณ  ๋™๊ธฐ๋ถ€์—ฌ ๋ถ€์กฑ
  • ๋‹จ์ˆœ ๊ฑฐ๋ฆฌ/์‹œ๊ฐ„ ๊ธฐ๋ก ์ค‘์‹ฌ โ†’ ์žฌ๋ฏธ ์—†์Œ
  • ์†Œ์…œ ๊ธฐ๋Šฅยท์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์•ฝํ•จ
  • ๊ฐœ์ธํ™”๋œ ์กฐ์–ธ ๋ถ€์กฑ

TO-BE โ€” WayToEarth๊ฐ€ ์ œ์•ˆํ•˜๋Š” ํ•ด๊ฒฐ

  • ์—ฌ์ • ๊ธฐ๋ฐ˜ ๋Ÿฌ๋‹: ๋‹ฌ๋ฆฐ ๊ฑฐ๋ฆฌ๋กœ ๊ฐ€์ƒ ์ฝ”์Šค๋ฅผ ์—ฌํ–‰
  • ์Šคํƒฌํ”„ยท์— ๋ธ”๋Ÿผ ๊ฒŒ์ž„ํ™”๋กœ ์ง€์†์„ฑ ํ™•๋ณด
  • ํฌ๋ฃจ + ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์œผ๋กœ ๋™๊ธฐ๋ถ€์—ฌ
  • AI ๋Ÿฌ๋‹ ๋ถ„์„/ํŽ˜์ด์Šค ์ฝ”์น˜๋กœ ๊ฐœ์ธํ™”๋œ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต

2. ์ฃผ์š” ๊ธฐ๋Šฅ ์š”์•ฝ

๐Ÿƒ ๋Ÿฌ๋‹ (Real-time Running)

  • GPS ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋Ÿฌ๋‹ ์ถ”์ 
  • ์›Œ์น˜ ์—ฐ๋™(Wear OS)
  • ์นผ๋งŒ ํ•„ํ„ฐ๋ง์œผ๋กœ GPS ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ
  • ์‹ค์‹œ๊ฐ„ ํŽ˜์ด์Šค/๊ฑฐ๋ฆฌ/๊ณ ๋„/์ •ํ™•๋„ ๊ณ„์‚ฐ

๐Ÿ—บ ์—ฌ์ • & ์Šคํƒฌํ”„ (Journey & Stamp)

image image

  • ์‹ค์ œ ๊ฑฐ๋ฆฌ โ†’ ๊ฐ€์ƒ ์—ฌ์ • ์ง„ํ–‰
  • Landmark ์Šคํ† ๋ฆฌ ํ™•์ธ
  • ์ž๋™ ์Šคํƒฌํ”„ ํš๋“
  • ๋ฐฉ๋ช…๋ก ๊ธฐ๋Šฅ



๐Ÿ’ฌ ํฌ๋ฃจ & ์†Œ์…œ (Crew & Social)

image

  • ํฌ๋ฃจ ์ƒ์„ฑ/๊ฐ€์ž…/๊ด€๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…(WebSocket)
  • ํฌ๋ฃจ ๋žญํ‚น & ์„ฑ์žฅ๋ฅ 
  • ํฌ๋ฃจ MVP ์ž๋™ ์„ ์ •

๐Ÿค– AI ๋Ÿฌ๋‹ ๋ถ„์„ (AI Coaching)

  • GPT ๊ธฐ๋ฐ˜ ํŽ˜์ด์Šค/๋Ÿฌ๋‹ ๋ถ„์„
  • ์ตœ๊ทผ 5ํšŒ ํ‰๊ท  ํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ์ฝ”์นญ
  • ์š”์ผ/๊ฑฐ๋ฆฌ/ํŒจํ„ด ๊ธฐ๋ฐ˜ ํŠธ๋ Œ๋“œ ๋ถ„์„
image image

3. ์„œ๋น„์Šค ์ „์ฒด ๊ตฌ์กฐ

image

  • Mobile App (React Native)
  • Wear OS App (Kotlin)
  • Backend API (Spring Boot)
  • OpenAI ๊ธฐ๋ฐ˜ AI ๋ถ„์„ ์„œ๋ฒ„
  • AWS ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ (EC2 ยท ALB ยท RDS ยท ElastiCache ยท S3 ยท CloudFront)

4. โ˜ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

image

์‚ฌ์šฉ ๊ธฐ์ˆ  / ์„œ๋น„์Šค (Tech Stack) ์‚ฌ์šฉ ์ด์œ  (Reason for Use)
AWS Route 53 ์„œ๋น„์Šค ๋„๋ฉ”์ธ(waytoearth.cloud) ๊ด€๋ฆฌ ๋ฐ DNS ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ
AWS Certificate Manager (ACM) SSL/TLS ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๊ด€๋ฆฌ ๋ฐ HTTPS ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ ์ ์šฉ
Application Load Balancer (ALB) ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ๋ฐ Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(8080/8081) ํ™˜๊ฒฝ ๊ตฌ์„ฑ
Amazon EC2 + Docker Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฒฉ๋ฆฌ ๋ฐ ์šด์˜
GitHub Actions CI/CD ๊ตฌ์ถ• (Docker Build โ†’ Hub Push โ†’ EC2 ์ž๋™ ๋ฐฐํฌ)
Amazon RDS (MariaDB, Multi-AZ) ์ฃผ์š” ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ •์  ์ €์žฅ ๋ฐ ๊ณ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด
Amazon ElastiCache (Redis) Refresh Token ์ €์žฅ, JWT ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ, ์บ์‹ฑ, API Rate Limit ์ฒ˜๋ฆฌ
Amazon S3 ํ”ผ๋“œยทํ”„๋กœํ•„ยท๋ฐฉ๋ช…๋ก ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ
Amazon CloudFront ์ „ ์„ธ๊ณ„ ์—ฃ์ง€ ๋ฐฐํฌ ๊ฐ€์†ํ™” ๋ฐ S3 Presigned URL ๋งŒ๋ฃŒ ๋ฌธ์ œ ํ•ด๊ฒฐ
Firebase Cloud Messaging (FCM) ๋Ÿฌ๋‹ ํ™œ๋™ยทํฌ๋ฃจ ์†Œ์‹ยทํ”ผ๋“œ ๋ฐ˜์‘ ๋“ฑ ์‹ค์‹œ๊ฐ„ ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ ์•Œ๋ฆผ ์ „์†ก
OpenAI GPT-4o-mini ์‚ฌ์šฉ์ž ๋Ÿฌ๋‹ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AI ๋ถ„์„ ๋ฆฌํฌํŠธ ์ƒ์„ฑ ๋ฐ ํŽ˜์ด์Šค ์ฝ”์นญ ์ œ๊ณต
Google Maps API ๋Ÿฌ๋‹ ๊ฒฝ๋กœ ์ง€๋„ ๋ Œ๋”๋ง ๋ฐ ์œ„์น˜ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ์ œ๊ณต
Kakao OAuth 2.0 ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ ์ œ๊ณต์œผ๋กœ ์‚ฌ์šฉ์ž ์œ ์ž… ์žฅ๋ฒฝ ๊ฐ์†Œ

๋ฐ์ดํ„ฐ ํ๋ฆ„

image

1. Client Layer

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋ฐ”์ผ ์•ฑ(App) ๋˜๋Š” Wear OS์—์„œ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

2. Network Layer

  • ๋ชจ๋“  ์š”์ฒญ์€ HTTPS ๊ธฐ๋ฐ˜์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • Route53์ด ๋„๋ฉ”์ธ(waytoearth.cloud)์„ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • ACM(SSL)์ด ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญ์€ **ALB(Application Load Balancer)**๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

3. Load Balancing

  • ALB๋Š” ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์„ EC2 Blue(8080) / Green(8081) ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

4. Application Layer (EC2)

  • Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์กฐํšŒ/์ €์žฅ, ์ธ์ฆ, AI ๋ถ„์„, ํฌ๋ฃจ ๊ธฐ๋Šฅ ์ฒ˜๋ฆฌ ๋“ฑ์ด ์ด ๋ ˆ์ด์–ด์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

5. Data Layer

  • RDS(MariaDB) โ†’ ์‚ฌ์šฉ์ž, ๋Ÿฌ๋‹ ๊ธฐ๋ก, ํฌ๋ฃจ, ์—ฌ์ •, ํ”ผ๋“œ ๋“ฑ ๋ชจ๋“  ํ•ต์‹ฌ ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ ์ €์žฅ
  • ElastiCache(Redis) โ†’ Refresh Token, ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ, ๋žญํ‚น, ์บ์‹ฑ, ์„ธ์…˜ ๋“ฑ ๋น ๋ฅธ ์ฒ˜๋ฆฌ์™€ ์„ฑ๋Šฅ ์ตœ์ ํ™”

6. Static File Layer

  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ํ”ผ๋“œ ์ด๋ฏธ์ง€, ๋ฐฉ๋ช…๋ก ์ด๋ฏธ์ง€ ๋“ฑ์€ CloudFront CDN์„ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ๊ฐ€ ์—†์œผ๋ฉด CloudFront๊ฐ€ S3 ์›๋ณธ์—์„œ ํŒŒ์ผ์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • ์—…๋กœ๋“œ๋Š” Presigned URL ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ โ†’ S3 ์ง์ ‘ ์—…๋กœ๋“œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

7. External Services

  • FCM โ†’ ๋Ÿฌ๋‹ ์•Œ๋ฆผ, ํฌ๋ฃจ ์•Œ๋ฆผ, ํ”ผ๋“œ ๋ฐ˜์‘ ๋“ฑ ์‹ค์‹œ๊ฐ„ ํ‘ธ์‹œ ๋ฉ”์‹œ์ง€ ์ „์†ก
  • OpenAI API โ†’ ๋Ÿฌ๋‹ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ AI ๋ถ„์„ ๋ฐ ์ฝ”์นญ ์ƒ์„ฑ

8. Response

  • ๋ชจ๋“  ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด EC2 โ†’ ALB โ†’ HTTPS โ†’ App ์ˆœ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.


5. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ƒ์„ธ

1) ๋Ÿฌ๋‹ ์—”์ง„

  • 3์ดˆ ๊ฐ„๊ฒฉ ์œ„์น˜ ์—…๋ฐ์ดํŠธ
  • Kalman 2D ํ•„ํ„ฐ๋กœ GPS ์˜ค์ฐจ ๋ณด์ •
  • ์ •์ง€ ์ƒํƒœ ๊ฐ์ง€(10์ดˆ ์œˆ๋„์šฐ)
  • ๋“€์–ผ ์ปฌ๋Ÿฌ ๊ฒฝ๋กœ ๋ Œ๋”๋ง (์™„๋ฃŒ/๋ฏธ์™„๋ฃŒ ๊ตฌ๊ฐ„)
  • ์›Œ์น˜ ์—ฐ๋™ + Session ID ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ

2) ์—ฌ์ • ์—”์ง„

  • Journey โ†’ Route โ†’ Landmark 3๊ณ„์ธต ๊ตฌ์กฐ
  • Landmark ๋„๋‹ฌ ์‹œ ์Šคํƒฌํ”„ ์ž๋™ ์ง€๊ธ‰
  • ์œ ๋‹ˆํฌ ์Šคํƒฌํ”„ ๋ณด์žฅ ๋กœ์ง
  • ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ์ง„ํ–‰๋ฅ  ๊ณ„์‚ฐ

3) ํ”ผ๋“œ & S3

  • Presigned URL๋กœ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
  • ํ”ผ๋“œ ์‚ญ์ œ ์‹œ S3 ์ด๋ฏธ์ง€ ์ž๋™ ์‚ญ์ œ
  • ์ข‹์•„์š” ๋‚™๊ด€์  ๋ฝ ์ฒ˜๋ฆฌ

4) ํฌ๋ฃจ ์‹œ์Šคํ…œ

  • WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…
  • ConcurrentHashMap์œผ๋กœ ์„ธ์…˜ ๊ด€๋ฆฌ
  • N+1 ํ•ด๊ฒฐ ์œ„ํ•œ Fetch Join
  • ์›”๊ฐ„/์ฃผ๊ฐ„ ํ†ต๊ณ„ยท๋žญํ‚น

5) AI ์ฝ”์นญ

  • GPT-4o-mini ๊ธฐ๋ฐ˜ ๋Ÿฌ๋‹ ๋ถ„์„
  • ํŠธ๋ Œ๋“œ ๋ถ„์„
  • ํŽ˜์ด์Šค ์ฝ”์น˜

6. ๊ธฐ์ˆ  ์Šคํƒ

image

๐Ÿ“ฑ Frontend (React Native, Expo)

  • React Native + TypeScript
  • Expo / EAS Build
  • Tanstack Query
  • Zustand
  • react-native-maps
  • Expo-Location
  • Firebase FCM
  • WebSocket

๐Ÿ’ฝ Backend (Spring Boot)

  • Spring Boot 3
  • Spring Security (JWT)
  • QueryDSL
  • JPA & Hibernate
  • Redis (Token & Cache)
  • S3 / CloudFront
  • WebSocket (STOMP)
  • Swagger(OpenAPI)

โ˜ Infra

  • AWS EC2 ยท ALB ยท RDS ยท ElastiCache
  • S3 / CloudFront
  • GitHub Actions CI/CD
  • Docker Blue/Green Deploy

7. ERD ๊ตฌ์กฐ

image

  • User ์ค‘์‹ฌ์˜ ๋„๋ฉ”์ธ
  • Running, Journey, Crew, Feed ๋‹ค์ค‘ ์—ฐ๊ด€
  • Emblem/Stamp ์ฒด๊ณ„์  ์„ค๊ณ„
  • FeedLike, CrewMember, UserProgress ๋“ฑ N:M ๋‹ค์ˆ˜

8. ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ

๐Ÿ”ง Backend Directory

๐Ÿ“ WayToEarth_BE/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“„ build.gradle                    # Gradle ๋นŒ๋“œ ์„ค์ •
โ”œโ”€โ”€ ๐Ÿ“„ settings.gradle
โ”œโ”€โ”€ ๐Ÿ“„ Dockerfile                      # Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ
โ”œโ”€โ”€ ๐Ÿ“„ gradlew, gradlew.bat           # Gradle Wrapper
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE                         # Apache 2.0 ๋ผ์ด์„ ์Šค
โ”œโ”€โ”€ ๐Ÿ“„ NOTICE                          # ์˜์กด์„ฑ ๊ณ ์ง€
โ”œโ”€โ”€ ๐Ÿ“„ README.md
โ”œโ”€โ”€ ๐Ÿ“„ .env                            # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (gitignore)
โ”œโ”€โ”€ ๐Ÿ“„ .gitignore
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ .github/                        # GitHub Actions CI/CD
โ”œโ”€โ”€ ๐Ÿ“ gradle/                         # Gradle wrapper
โ”œโ”€โ”€ ๐Ÿ“ build/                          # ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ (gitignore)
โ”‚
โ””โ”€โ”€ ๐Ÿ“ src/
    โ”œโ”€โ”€ ๐Ÿ“ main/
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“ java/com/waytoearth/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ WaytoearthBackendApplication.java  # ๋ฉ”์ธ ํด๋ž˜์Šค
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ config/                    # ์„ค์ • ํด๋ž˜์Šค ๋ชจ์Œ
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ awsS3/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ cache/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ firebase/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ jpa/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ jwt/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ queryDsl/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ redis/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ scheduling/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ security/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ swagger/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ web/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ websocket/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ controller/v1/            # REST API (๋„๋ฉ”์ธ๋ณ„)
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ admin/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/                    # ์นด์นด์˜ค ๋กœ๊ทธ์ธ
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ emblem/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ statistics/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ weather/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ dto/                      # Request/Response DTO
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ request/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ai/
    โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ user/
    โ”‚   โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ response/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ common/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ emblem/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ai/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ statistics/
    โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user/
    โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ weather/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ entity/                   # JPA ์—”ํ‹ฐํ‹ฐ (๋„๋ฉ”์ธ๋ณ„)
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ common/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ emblem/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ enums/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ user/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ repository/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ emblem/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ statistics/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ user/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ service/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ai/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ crew/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ emblem/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feed/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ journey/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notification/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ranking/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ratelimit/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ running/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ statistics/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ user/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ weather/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ security/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ JwtAuthenticationFilter.java
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ JwtTokenProvider.java
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AuthUserArgumentResolver.java
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ mock/
    โ”‚   โ”‚   โ”‚
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ exception/
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ validation/
    โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“ util/
    โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“ websocket/
    โ”‚   โ”‚
    โ”‚   โ””โ”€โ”€ ๐Ÿ“ resources/
    โ”‚       โ”œโ”€โ”€ application.yml
    โ”‚       โ”œโ”€โ”€ application-dev.yml
    โ”‚       โ”œโ”€โ”€ application-prod.yml
    โ”‚       โ”œโ”€โ”€ ๐Ÿ“ db/migration/
    โ”‚       โ””โ”€โ”€ ๐Ÿ“ firebase/
    โ”‚
    โ””โ”€โ”€ ๐Ÿ“ test/
        โ””โ”€โ”€ ๐Ÿ“ java/com/waytoearth/

๋ฐฑ์—”๋“œ ์ „์ฒด ๊ตฌ์กฐ ์ƒ์„ธ (config, controller, DTO, entity, service ๋“ฑ)

๐Ÿ“ฑ Frontend Directory

๐Ÿ“ WayToEarth_FE/
โ”‚
โ”œโ”€โ”€ App.tsx                    # ์•ฑ ์ง„์ž…์ 
โ”œโ”€โ”€ assets/                    # ์ด๋ฏธ์ง€, ํฐํŠธ
โ”œโ”€โ”€ contexts/                  # ์ „์—ญ ์ปจํ…์ŠคํŠธ (Auth, Weather ๋“ฑ)
โ”œโ”€โ”€ hooks/                     # ์ปค์Šคํ…€ ํ›…
โ”œโ”€โ”€ utils/                     # API ํด๋ผ์ด์–ธํŠธ, ๊ณต์šฉ ์œ ํ‹ธ
โ”œโ”€โ”€ types/                     # TypeScript ํƒ€์ž… ์ •์˜
โ”œโ”€โ”€ navigation/                # ๋„ค๋น„๊ฒŒ์ด์…˜ ์„ค์ •
โ”œโ”€โ”€ styles/                    # ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ
โ”œโ”€โ”€ scripts/                   # ๋นŒ๋“œ/์œ ํ‹ธ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ android/                   # Android ๋„ค์ดํ‹ฐ๋ธŒ ๊ตฌ์„ฑ
โ”‚
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ app/
    โ”‚   โ”œโ”€โ”€ layout/            # ์ƒ๋‹จ๋ฐ”/ํ•˜๋‹จ๋ฐ” ๋ ˆ์ด์•„์›ƒ
    โ”‚   โ””โ”€โ”€ screens/           # Main.tsx ๋“ฑ ์ฃผ์š” ํ™”๋ฉด
    โ”‚
    โ””โ”€โ”€ features/              # ๊ธฐ๋Šฅ ์ค‘์‹ฌ ํด๋”๋ง (ํ•ต์‹ฌ)
        โ”œโ”€โ”€ auth/              # ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…
        โ”œโ”€โ”€ onboarding/        # ์˜จ๋ณด๋”ฉ
        โ”œโ”€โ”€ crew/              # ํฌ๋ฃจ ๊ธฐ๋Šฅ
        โ”œโ”€โ”€ running/           # ๋Ÿฌ๋‹ ํŠธ๋ž˜ํ‚น
        โ”œโ”€โ”€ journey/           # ์—ฌ์ •/ํ…Œ๋งˆ
        โ”œโ”€โ”€ landmark/          # ๋žœ๋“œ๋งˆํฌ/์Šคํƒฌํ”„
        โ”œโ”€โ”€ feed/              # ํ”ผ๋“œ
        โ”œโ”€โ”€ guestbook/         # ๋ฐฉ๋ช…๋ก
        โ”œโ”€โ”€ records/           # ๋Ÿฌ๋‹ ๊ธฐ๋ก/ํ†ต๊ณ„
        โ””โ”€โ”€ profile/           # ํ”„๋กœํ•„/๋‚ด ๊ณ„์ •

9. API ๋ช…์„ธ

10. Team

BE Full Stack FE
ํ™์„ฑ๋ฏผ(ํŒ€์žฅ) ์ดํ‰๊ฐ• ์ •์ง„ํ˜ธ
์ •์ง„ํ˜ธ ์ฆ๋ช…์‚ฌ์ง„

| | ํ•œ๋ฆผ๋Œ€ํ•™๊ต | ํ•œ๋ฆผ๋Œ€ํ•™๊ต | ํ•œ๋ฆผ๋Œ€ํ•™๊ต| | ๋น…๋ฐ์ดํ„ฐ์ „๊ณต 4ํ•™๋…„ | ๋น…๋ฐ์ดํ„ฐ์ „๊ณต 4ํ•™๋…„ | ์ฝ˜ํ…์ธ IT์ „๊ณต 3ํ•™๋…„| | @hskhsmm|@leepg038292|@wjdwlsgh


11. License

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Apache License 2.0์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Copyright 2025 WayToEarth

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

12. ๊ฒฐ๋ก 

WayToEarth๋Š” ๋Ÿฌ๋‹ ยท ์—ฌ์ • ยท ์ปค๋ฎค๋‹ˆํ‹ฐ ยท AI๋ฅผ ๊ฒฐํ•ฉํ•œ ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ๋Ÿฌ๋‹ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœ ์šด๋™ ๊ด€๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Ÿฌ๋‹์„ ํ•˜๋‚˜์˜ ์—ฌ์ •์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝํ—˜์„ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋„ ๋” ํ™•์žฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ ์žˆ๋Š” ์„œ๋น„์Šค๋กœ ๋ฐœ์ „ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ์‹œ์—ฐ ์˜์ƒ

์•„๋ž˜์˜ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‹œ์—ฐ ์˜์ƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Video Label

About

๐Ÿ† 2025 ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์†Œํ”„ํŠธ์›จ์–ด์บก์Šคํ†ค๋””์ž์ธ_์ˆ˜์ƒ ๐Ÿ† ๐Ÿƒ - ๋Ÿฌ๋‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors