WayToEarth๋ โ๋จ์ ๋ฌ๋ ์ฑโ์ ๋์ด, ๋ฌ๋ฆฐ ๊ฑฐ๋ฆฌ โ ๊ฐ์ ์ฌ์ ์งํ โ ์คํฌํ/์ ๋ธ๋ผ ํ๋ โ AI ๋ฌ๋ ๋ถ์ โ ํฌ๋ฃจ์ ํจ๊ป ๋ฌ๋ฆฌ๊ธฐ ๊น์ง ํ๋์ ๊ฒฝํ์ผ๋ก ๋ฌถ์ ์ค๋งํธ ๋ฌ๋ ํ๋ซํผ์ ๋๋ค.
์ฌ์ฉ์๋ ์ง๋ฃจํ ์ด๋ ๊ธฐ๋ก์ด ์๋๋ผ ์ด์ผ๊ธฐ๊ฐ ์๋ ์ฌ์ , ์๋ฏธ ์๋ ์ฑ์ทจ, ํจ๊ป ๋ฌ๋ฆฌ๋ ๊ฒฝํ์ ์ป๊ฒ ๋ฉ๋๋ค.
- ํผ์ ๋ฐ๋ฉด ์ง๋ฃจํ๊ณ ๋๊ธฐ๋ถ์ฌ ๋ถ์กฑ
- ๋จ์ ๊ฑฐ๋ฆฌ/์๊ฐ ๊ธฐ๋ก ์ค์ฌ โ ์ฌ๋ฏธ ์์
- ์์ ๊ธฐ๋ฅยท์ปค๋ฎค๋ํฐ๊ฐ ์ฝํจ
- ๊ฐ์ธํ๋ ์กฐ์ธ ๋ถ์กฑ
- ์ฌ์ ๊ธฐ๋ฐ ๋ฌ๋: ๋ฌ๋ฆฐ ๊ฑฐ๋ฆฌ๋ก ๊ฐ์ ์ฝ์ค๋ฅผ ์ฌํ
- ์คํฌํยท์ ๋ธ๋ผ ๊ฒ์ํ๋ก ์ง์์ฑ ํ๋ณด
- ํฌ๋ฃจ + ์ค์๊ฐ ์ฑํ ์ผ๋ก ๋๊ธฐ๋ถ์ฌ
- AI ๋ฌ๋ ๋ถ์/ํ์ด์ค ์ฝ์น๋ก ๊ฐ์ธํ๋ ํผ๋๋ฐฑ ์ ๊ณต
- GPS ๊ธฐ๋ฐ ์ค์๊ฐ ๋ฌ๋ ์ถ์
- ์์น ์ฐ๋(Wear OS)
- ์นผ๋ง ํํฐ๋ง์ผ๋ก GPS ๋ ธ์ด์ฆ ์ ๊ฑฐ
- ์ค์๊ฐ ํ์ด์ค/๊ฑฐ๋ฆฌ/๊ณ ๋/์ ํ๋ ๊ณ์ฐ
- ์ค์ ๊ฑฐ๋ฆฌ โ ๊ฐ์ ์ฌ์ ์งํ
- Landmark ์คํ ๋ฆฌ ํ์ธ
- ์๋ ์คํฌํ ํ๋
- ๋ฐฉ๋ช ๋ก ๊ธฐ๋ฅ
- ํฌ๋ฃจ ์์ฑ/๊ฐ์ /๊ด๋ฆฌ
- ์ค์๊ฐ ์ฑํ (WebSocket)
- ํฌ๋ฃจ ๋ญํน & ์ฑ์ฅ๋ฅ
- ํฌ๋ฃจ MVP ์๋ ์ ์
- GPT ๊ธฐ๋ฐ ํ์ด์ค/๋ฌ๋ ๋ถ์
- ์ต๊ทผ 5ํ ํ๊ท ํ์ด์ค ๊ธฐ๋ฐ ์ฝ์นญ
- ์์ผ/๊ฑฐ๋ฆฌ/ํจํด ๊ธฐ๋ฐ ํธ๋ ๋ ๋ถ์
- Mobile App (React Native)
- Wear OS App (Kotlin)
- Backend API (Spring Boot)
- OpenAI ๊ธฐ๋ฐ AI ๋ถ์ ์๋ฒ
- AWS ๊ธฐ๋ฐ ์ธํ๋ผ (EC2 ยท ALB ยท RDS ยท ElastiCache ยท S3 ยท CloudFront)
| ์ฌ์ฉ ๊ธฐ์ / ์๋น์ค (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 | ๊ฐํธ ๋ก๊ทธ์ธ ์ ๊ณต์ผ๋ก ์ฌ์ฉ์ ์ ์ ์ฅ๋ฒฝ ๊ฐ์ |
- ์ฌ์ฉ์๊ฐ ๋ชจ๋ฐ์ผ ์ฑ(App) ๋๋ Wear OS์์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
- ๋ชจ๋ ์์ฒญ์ HTTPS ๊ธฐ๋ฐ์ผ๋ก ์ ์ก๋ฉ๋๋ค.
Route53์ด ๋๋ฉ์ธ(waytoearth.cloud)์ ๋ผ์ฐํ ํฉ๋๋ค.ACM(SSL)์ด ์ธ์ฆ์๋ฅผ ์ ์ฉํ์ฌ ์ํธํ๋ ํต์ ์ ์ ์งํฉ๋๋ค.- ์์ฒญ์ **ALB(Application Load Balancer)**๋ก ์ ๋ฌ๋ฉ๋๋ค.
- ALB๋ ์๋ฒ ์ํ๋ฅผ ํ์ธํ๊ณ ํธ๋ํฝ์ EC2 Blue(8080) / Green(8081) ์ธ์คํด์ค ์ค ํ๋๋ก ๋ถ์ฐํฉ๋๋ค.
- Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ด ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฐ์ดํฐ ์กฐํ/์ ์ฅ, ์ธ์ฆ, AI ๋ถ์, ํฌ๋ฃจ ๊ธฐ๋ฅ ์ฒ๋ฆฌ ๋ฑ์ด ์ด ๋ ์ด์ด์์ ์ํ๋ฉ๋๋ค.
- RDS(MariaDB) โ ์ฌ์ฉ์, ๋ฌ๋ ๊ธฐ๋ก, ํฌ๋ฃจ, ์ฌ์ , ํผ๋ ๋ฑ ๋ชจ๋ ํต์ฌ ์๋น์ค ๋ฐ์ดํฐ ์ ์ฅ
- ElastiCache(Redis) โ Refresh Token, ๋ธ๋๋ฆฌ์คํธ, ๋ญํน, ์บ์ฑ, ์ธ์ ๋ฑ ๋น ๋ฅธ ์ฒ๋ฆฌ์ ์ฑ๋ฅ ์ต์ ํ
- ํ๋กํ ์ด๋ฏธ์ง, ํผ๋ ์ด๋ฏธ์ง, ๋ฐฉ๋ช ๋ก ์ด๋ฏธ์ง ๋ฑ์ CloudFront CDN์ ํตํด ๋น ๋ฅด๊ฒ ์ ์ก๋ฉ๋๋ค.
- ์บ์๊ฐ ์์ผ๋ฉด CloudFront๊ฐ S3 ์๋ณธ์์ ํ์ผ์ ์กฐํํฉ๋๋ค.
- ์ ๋ก๋๋ Presigned URL ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ โ S3 ์ง์ ์ ๋ก๋ ๋ฐฉ์์ ๋๋ค.
- FCM โ ๋ฌ๋ ์๋ฆผ, ํฌ๋ฃจ ์๋ฆผ, ํผ๋ ๋ฐ์ ๋ฑ ์ค์๊ฐ ํธ์ ๋ฉ์์ง ์ ์ก
- OpenAI API โ ๋ฌ๋ ๋ฐ์ดํฐ ๊ธฐ๋ฐ AI ๋ถ์ ๋ฐ ์ฝ์นญ ์์ฑ
- ๋ชจ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด EC2 โ ALB โ HTTPS โ App ์์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ต์ด ๋ฐํ๋ฉ๋๋ค.
- 3์ด ๊ฐ๊ฒฉ ์์น ์ ๋ฐ์ดํธ
- Kalman 2D ํํฐ๋ก GPS ์ค์ฐจ ๋ณด์
- ์ ์ง ์ํ ๊ฐ์ง(10์ด ์๋์ฐ)
- ๋์ผ ์ปฌ๋ฌ ๊ฒฝ๋ก ๋ ๋๋ง (์๋ฃ/๋ฏธ์๋ฃ ๊ตฌ๊ฐ)
- ์์น ์ฐ๋ + Session ID ๊ธฐ๋ฐ ๋ฐ์ดํฐ ํตํฉ
- Journey โ Route โ Landmark 3๊ณ์ธต ๊ตฌ์กฐ
- Landmark ๋๋ฌ ์ ์คํฌํ ์๋ ์ง๊ธ
- ์ ๋ํฌ ์คํฌํ ๋ณด์ฅ ๋ก์ง
- ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์งํ๋ฅ ๊ณ์ฐ
- Presigned URL๋ก ์ด๋ฏธ์ง ์ ๋ก๋
- ํผ๋ ์ญ์ ์ S3 ์ด๋ฏธ์ง ์๋ ์ญ์
- ์ข์์ ๋๊ด์ ๋ฝ ์ฒ๋ฆฌ
- WebSocket ๊ธฐ๋ฐ ์ค์๊ฐ ์ฑํ
- ConcurrentHashMap์ผ๋ก ์ธ์ ๊ด๋ฆฌ
- N+1 ํด๊ฒฐ ์ํ Fetch Join
- ์๊ฐ/์ฃผ๊ฐ ํต๊ณยท๋ญํน
- GPT-4o-mini ๊ธฐ๋ฐ ๋ฌ๋ ๋ถ์
- ํธ๋ ๋ ๋ถ์
- ํ์ด์ค ์ฝ์น
- React Native + TypeScript
- Expo / EAS Build
- Tanstack Query
- Zustand
- react-native-maps
- Expo-Location
- Firebase FCM
- WebSocket
- Spring Boot 3
- Spring Security (JWT)
- QueryDSL
- JPA & Hibernate
- Redis (Token & Cache)
- S3 / CloudFront
- WebSocket (STOMP)
- Swagger(OpenAPI)
- AWS EC2 ยท ALB ยท RDS ยท ElastiCache
- S3 / CloudFront
- GitHub Actions CI/CD
- Docker Blue/Green Deploy
- User ์ค์ฌ์ ๋๋ฉ์ธ
- Running, Journey, Crew, Feed ๋ค์ค ์ฐ๊ด
- Emblem/Stamp ์ฒด๊ณ์ ์ค๊ณ
- FeedLike, CrewMember, UserProgress ๋ฑ N:M ๋ค์
๐ 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 ๋ฑ)
๐ 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/ # ํ๋กํ/๋ด ๊ณ์
| BE | Full Stack | FE |
|---|---|---|
| ํ์ฑ๋ฏผ(ํ์ฅ) | ์ดํ๊ฐ | ์ ์งํธ |
![]() |
![]() |
| | ํ๋ฆผ๋ํ๊ต | ํ๋ฆผ๋ํ๊ต | ํ๋ฆผ๋ํ๊ต| | ๋น ๋ฐ์ดํฐ์ ๊ณต 4ํ๋ | ๋น ๋ฐ์ดํฐ์ ๊ณต 4ํ๋ | ์ฝํ ์ธ IT์ ๊ณต 3ํ๋ | | @hskhsmm|@leepg038292|@wjdwlsgh
๋ณธ ํ๋ก์ ํธ๋ 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.
WayToEarth๋ ๋ฌ๋ ยท ์ฌ์ ยท ์ปค๋ฎค๋ํฐ ยท AI๋ฅผ ๊ฒฐํฉํ ์๋ก์ด ํํ์ ๋ฌ๋ ํ๋ซํผ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋จ์ ์ด๋ ๊ด๋ฆฌ๊ฐ ์๋๋ผ ๋ฌ๋์ ํ๋์ ์ฌ์ ์ผ๋ก ๋ง๋๋ ๊ฒฝํ์ ๋ง๋ค๊ณ ์ ํฉ๋๋ค.
์์ผ๋ก๋ ๋ ํ์ฅ์ฑ๊ณผ ์์ ์ฑ ์๋ ์๋น์ค๋ก ๋ฐ์ ํ ์์ ์ ๋๋ค.


