Skip to content

ReTrip-Dev/ReTrip-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

148 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ„ ReTrip - ์—ฌํ–‰์„ ์š”์•ฝํ•ด์ฃผ๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ์‹์˜ SNS

Retrip์€ ์—ฌํ–‰์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ์—ฌํ–‰ ์š”์•ฝ SNS์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์—ฌํ–‰ ์‚ฌ์ง„ ์† ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์—ฌํ–‰์˜ ์ „์ฒด์ ์ธ ๋ถ„์œ„๊ธฐ์™€ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ์š”์•ฝํ•ด์ฃผ๋Š” ํŠน๋ณ„ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • Retrip(Remember Your Trip)์€ ์—ฌํ–‰์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ์—ฌํ–‰ ์š”์•ฝ SNS์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์—ฌํ–‰ ์‚ฌ์ง„์„ ์—…๋กœ๋“œํ•˜๋ฉด, ์œ„์น˜ ๋ฐ ์‹œ๊ฐ„ ์ •๋ณด์™€ ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ†ตํ•ด ์—ฌํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ถœ๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌํ–‰ ์š”์•ฝ๋ณธ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ๋œ ์š”์•ฝ ์ด๋ฏธ์ง€๋Š” SNS ํ”ผ๋“œ์ฒ˜๋Ÿผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜, ํžˆ์Šคํ† ๋ฆฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด์„œ ์ถ”์–ต ์—ฌํ–‰์„ ๋– ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์› ๊ตฌ์„ฑ

๊น€์šฉ๋ฒ” ์˜ค์ผ์šฐ

@Bumnote

@Oilwoo

1. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Front: HTML, Vue3, Vuetify3
  • Back-end: Spring Boot 3.4.5, Java 21, Spring Data JPA, Spring Security
  • Database: MySQL, Redis
  • AI/ML: OpenAI GPT-4 Vision API
  • ์ธํ”„๋ผ: Docker, Nginx, AWS S3
  • ๋ฒ„์ „ ๋ฐ ์ด์Šˆ๊ด€๋ฆฌ: Github, Github Issues, Github Project
  • ํ˜‘์—… ํˆด: Discord, Notion
  • ์„œ๋น„์Šค ๋ฐฐํฌ ํ™˜๊ฒฝ: AWS EC2, Docker Compose

2. ์ฑ„ํƒํ•œ ๊ฐœ๋ฐœ ๊ธฐ์ˆ ๊ณผ ๋ธŒ๋žœ์น˜ ์ „๋žต

๊ธฐ์ˆ  ์Šคํƒ ์ƒ์„ธ

Backend Framework

  • Spring Boot 3.4.5 (Java 21) - ์ตœ์‹  LTS ๋ฒ„์ „ ์‚ฌ์šฉ์œผ๋กœ ์•ˆ์ •์„ฑ ํ™•๋ณด
  • Spring Web MVC - RESTful API ๊ตฌํ˜„
  • Spring Data JPA - ORM์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ
  • Spring Security - OAuth2 ๊ธฐ๋ฐ˜ ์†Œ์…œ ๋กœ๊ทธ์ธ (Kakao)

AI & ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

  • OpenAI GPT-4 Vision API - ์ด๋ฏธ์ง€ ๋ถ„์„ ๋ฐ ์—ฌํ–‰ ํŒจํ„ด ์ธ์‹
  • metadata-extractor 2.18.0 - EXIF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ (GPS, ์‹œ๊ฐ„ ์ •๋ณด)
  • TwelveMonkeys ImageIO - HEIF, HEIC ๋“ฑ ๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท ์ง€์›
  • Thumbnailator - ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง• ๋ฐ ์ตœ์ ํ™”

๋ชจ๋‹ˆํ„ฐ๋ง

  • Spring Actuator - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง
  • Prometheus & Micrometer - ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ธŒ๋žœ์น˜ ์ „๋žต

  • main: ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ๋ธŒ๋žœ์น˜
  • dev: ๊ฐœ๋ฐœ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜
  • feature/๊ธฐ๋Šฅ๋ช…: ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜
  • refactor/๋ฆฌํŒฉํ† ๋ง๋ช…: ๋ฆฌํŒฉํ† ๋ง ๋ธŒ๋žœ์น˜

3. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

retrip-api/
โ”œโ”€โ”€ src/main/java/ssafy/retrip/
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ controller/          # REST API ์—”๋“œํฌ์ธํŠธ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ retrip/
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ RetripController.java
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ response/    # API ์‘๋‹ต DTO
โ”‚   โ”‚   โ””โ”€โ”€ service/
โ”‚   โ”‚       โ”œโ”€โ”€ openai/          # OpenAI GPT ์—ฐ๋™
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ GptImageAnalysisService.java
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ OpenAiClient.java
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ response/    # GPT ์‘๋‹ต ๋ชจ๋ธ
โ”‚   โ”‚       โ””โ”€โ”€ retrip/          # ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”‚           โ”œโ”€โ”€ RetripService.java
โ”‚   โ”‚           โ”œโ”€โ”€ ImageConverter.java
โ”‚   โ”‚           โ””โ”€โ”€ info/        # ๋„๋ฉ”์ธ ์ •๋ณด ๊ฐ์ฒด
โ”‚   โ”œโ”€โ”€ config/                  # ์„ค์ • ํด๋ž˜์Šค
โ”‚   โ”‚   โ”œโ”€โ”€ SecurityConfig.java  # Spring Security ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ OpenAiConfig.java    # OpenAI ํด๋ผ์ด์–ธํŠธ ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ RedisConfig.java     # Redis ์„ค์ •
โ”‚   โ”‚   โ””โ”€โ”€ WebConfig.java       # CORS ์„ค์ •
โ”‚   โ”œโ”€โ”€ domain/                  # JPA ์—”ํ‹ฐํ‹ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ retrip/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Retrip.java      # ์—ฌํ–‰ ์š”์•ฝ ์—”ํ‹ฐํ‹ฐ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ TimeSlot.java    # ์‹œ๊ฐ„๋Œ€ Enum
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ RetripRepository.java
โ”‚   โ”‚   โ””โ”€โ”€ place/
โ”‚   โ”‚       โ””โ”€โ”€ RecommendationPlace.java  # ์ถ”์ฒœ ์žฅ์†Œ ์—”ํ‹ฐํ‹ฐ
โ”‚   โ””โ”€โ”€ utils/                   # ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค
โ”‚       โ”œโ”€โ”€ ImageMetaDataUtil.java  # ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ
โ”‚       โ”œโ”€โ”€ CoordinateUtil.java     # GPS ์ขŒํ‘œ ์ฒ˜๋ฆฌ
โ”‚       โ””โ”€โ”€ DistanceUtil.java       # ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ
โ”œโ”€โ”€ docker/                      # Docker ์„ค์ •
โ”œโ”€โ”€ nginx/                       # Nginx ์„ค์ • (SSL, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ)
โ”œโ”€โ”€ scripts/                     # ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ
โ””โ”€โ”€ src/main/resources/
    โ”œโ”€โ”€ application.yml          # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •
    โ””โ”€โ”€ analysis.prompt          # GPT ๋ถ„์„ ํ”„๋กฌํ”„ํŠธ

4. ์—ญํ•  ๋ถ„๋‹ด

๐Ÿ’๐Ÿปโ€โ™‚๏ธ ๊น€์šฉ๋ฒ”

  • AI ๋ชจ๋ธ ์—ฐ๋™ ๋ฐ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง
  • ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ ๋ฐ ์ฒ˜๋ฆฌ
  • GPS ๊ธฐ๋ฐ˜ ์œ„์น˜ ๋ถ„์„ ๋กœ์ง ๊ตฌํ˜„
  • Docker ๋ฐ ์ธํ”„๋ผ ๊ตฌ์„ฑ

๐Ÿ’๐Ÿปโ€โ™‚๏ธ ์˜ค์ผ์šฐ

  • Spring Boot ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
  • RESTful API ๊ฐœ๋ฐœ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ฐ JPA ๊ตฌํ˜„
  • Spring Security ๋ฐ OAuth2 ์ธ์ฆ ๊ตฌํ˜„

5. ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋ฐ ์ž‘์—… ๊ด€๋ฆฌ

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

  • ์ „์ฒด ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2025-04-28 ~ ing
  • ๋ฐฑ์—”๋“œ API ๊ฐœ๋ฐœ : 2025-04-28 ~ 2025-05-10
  • AI ๋ชจ๋ธ ์—ฐ๋™ : 2025-05-11 ~ 2025-05-20
  • ์ธํ”„๋ผ ๊ตฌ์ถ• : 2025-05-21 ~ 2025-05-25
  • ํ…Œ์ŠคํŠธ ๋ฐ ์ตœ์ ํ™” : 2025-05-26 ~ ing

์ž‘์—… ๊ด€๋ฆฌ

  • Github Projects๋ฅผ ํ™œ์šฉํ•œ ์นธ๋ฐ˜ ๋ณด๋“œ ์šด์˜
  • ์ฃผ 2ํšŒ ์ •๊ธฐ ๋ฏธํŒ…์„ ํ†ตํ•œ ์ง„ํ–‰์ƒํ™ฉ ๊ณต์œ 
  • Discord๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

6. ์‹ ๊ฒฝ ์“ด ๋ถ€๋ถ„

๐ŸŽฏ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์ตœ์ ํ™”

  • ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ๋ฆฌ์‚ฌ์ด์ง•
  • HEIF/HEIC ๋“ฑ ์ตœ์‹  ์ด๋ฏธ์ง€ ํฌ๋งท ์ง€์›
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด์กดํ•˜๋ฉด์„œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ตœ์ ํ™”

๐Ÿค– AI ๋ถ„์„ ์ •ํ™•๋„

  • GPT-4 Vision ํ”„๋กฌํ”„ํŠธ ์ตœ์ ํ™”๋กœ ๋ถ„์„ ์ •ํ™•๋„ ํ–ฅ์ƒ
  • ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ AI ๋ถ„์„ ๊ฒฐ๊ณผ์˜ ๊ต์ฐจ ๊ฒ€์ฆ
  • ์œ„์น˜ ์ •๋ณด ๊ธฐ๋ฐ˜ ๋งž์ถคํ˜• ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ”’ ๋ณด์•ˆ ๋ฐ ์•ˆ์ •์„ฑ

  • Spring Security๋ฅผ ํ†ตํ•œ ์ธ์ฆ/์ธ๊ฐ€ ์ฒ˜๋ฆฌ
  • ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์‹œ ์•…์„ฑ ํŒŒ์ผ ๊ฒ€์ฆ
  • Rate Limiting์œผ๋กœ API ๋‚จ์šฉ ๋ฐฉ์ง€

๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง

  • Prometheus + Grafana๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์ฃผ์š” ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”ํŠธ๋ฆญ ์ถ”์ 
  • ์—๋Ÿฌ ๋กœ๊น… ๋ฐ ์•Œ๋ฆผ ์‹œ์Šคํ…œ

7. ํŽ˜์ด์ง€๋ณ„ ๊ธฐ๋Šฅ

๐Ÿ“ธ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ๋ถ„์„

  • ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (5~20์žฅ)
  • ์‹ค์‹œ๊ฐ„ ์—…๋กœ๋“œ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ
  • ์ด๋ฏธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ์ˆœ์„œ ์กฐ์ •

๐Ÿ—บ๏ธ ์—ฌํ–‰ ์š”์•ฝ ๊ฒฐ๊ณผ

  • AI ๊ธฐ๋ฐ˜ ์—ฌํ–‰ ์Šคํƒ€์ผ ๋ถ„์„ (MBTI, ์—ฌํ–‰ ์„ฑํ–ฅ)
  • ์‹œ๊ฐ์  ์—ฌํ–‰ ์š”์•ฝ ์นด๋“œ ์ƒ์„ฑ
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ์žฅ์†Œ ์ œ๊ณต
  • ์—ฌํ–‰ ํ†ต๊ณ„ (์ด๋™ ๊ฑฐ๋ฆฌ, ์ฃผ์š” ํ™œ๋™ ์‹œ๊ฐ„๋Œ€ ๋“ฑ)

๐Ÿ“ฑ SNS ๊ณต์œ 

  • ์ƒ์„ฑ๋œ ์š”์•ฝ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ
  • ์ฃผ์š” SNS ํ”Œ๋žซํผ ๊ณต์œ  ๊ธฐ๋Šฅ
  • ๊ณ ์œ  URL์„ ํ†ตํ•œ ๊ฒฐ๊ณผ ๊ณต์œ 

8. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๐Ÿ”ง ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ด์Šˆ

  • ๋ฌธ์ œ: ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ๋‹ค๋Ÿ‰ ์—…๋กœ๋“œ ์‹œ OutOfMemoryError ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ:
    • ImageIO ๋Œ€์‹  TwelveMonkeys ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ
    • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ
    • ์ ์ ˆํ•œ JVM ํž™ ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •

๐ŸŒ CORS ์ด์Šˆ

  • ๋ฌธ์ œ: ํ”„๋ก ํŠธ์—”๋“œ-๋ฐฑ์—”๋“œ ๊ฐ„ CORS ์ •์ฑ… ์œ„๋ฐ˜
  • ํ•ด๊ฒฐ:
    • WebConfig์—์„œ ๋ช…์‹œ์  CORS ์„ค์ •
    • ํ™˜๊ฒฝ๋ณ„ ํ—ˆ์šฉ Origin ๋ถ„๋ฆฌ ๊ด€๋ฆฌ

โšก GPT API ์‘๋‹ต ์‹œ๊ฐ„ ์ตœ์ ํ™”

  • ๋ฌธ์ œ: GPT-4 Vision API ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด UX ์ €ํ•˜
  • ํ•ด๊ฒฐ:
    • ์ด๋ฏธ์ง€ ์‚ฌ์ „ ์••์ถ•์œผ๋กœ ์š”์ฒญ ํฌ๊ธฐ ๊ฐ์†Œ
    • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐ ์ง„ํ–‰ ์ƒํƒœ ํ‘œ์‹œ
    • ์‘๋‹ต ์บ์‹ฑ์œผ๋กœ ์žฌ์š”์ฒญ ์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ

9. ๊ฐœ์„  ๋ชฉํ‘œ

  • ๐Ÿš€ ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ (WebSocket)
  • ๐ŸŒ ๋‹ค๊ตญ์–ด ์ง€์› ํ™•๋Œ€
  • ๐Ÿ“Š ๋” ์ •๊ตํ•œ ์—ฌํ–‰ ํŒจํ„ด ๋ถ„์„
  • ๐ŸŽจ ๋‹ค์–‘ํ•œ ์š”์•ฝ ํ…œํ”Œ๋ฆฟ ์ œ๊ณต
  • ๐Ÿ‘ฅ ์†Œ์…œ ๊ธฐ๋Šฅ ๊ฐ•ํ™” (ํŒ”๋กœ์šฐ, ์ข‹์•„์š”, ๋Œ“๊ธ€)
  • ๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ

10. ํ”„๋กœ์ ํŠธ ํ›„๊ธฐ

๐Ÿ’๐Ÿปโ€โ™‚๏ธ ๊น€์šฉ๋ฒ”

AI ๊ธฐ์ˆ ์„ ์‹ค์ œ ์„œ๋น„์Šค์— ์ ์šฉํ•˜๋ฉด์„œ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ AI ๋ถ„์„์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋” ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์ด ํฅ๋ฏธ๋กœ์› ์Šต๋‹ˆ๋‹ค. Docker์™€ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ํ†ตํ•ด DevOps ์—ญ๋Ÿ‰๋„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’๐Ÿปโ€โ™‚๏ธ ์˜ค์ผ์šฐ

Spring Boot์™€ JPA๋ฅผ ํ™œ์šฉํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์Œ“์„ ์ˆ˜ ์žˆ์—ˆ๊ณ , ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. OAuth2 ์ธ์ฆ๊ณผ ๋ณด์•ˆ ์„ค์ •์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์‹ค๋ฌด์—์„œ ํ•„์š”ํ•œ ๋ณด์•ˆ ์ง€์‹๋„ ์Šต๋“ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.



๐Ÿš€ Quick Start

์š”๊ตฌ์‚ฌํ•ญ

  • Java 21+
  • MySQL 8.0+
  • Redis 7.0+
  • Docker & Docker Compose (์„ ํƒ์‚ฌํ•ญ)

๋กœ์ปฌ ํ™˜๊ฒฝ ์‹คํ–‰

# 1. ํ”„๋กœ์ ํŠธ ํด๋ก 
git clone https://github.com/ReTrip-Dev/ReTrip-api.git
cd ReTrip-api

# 2. application-secret.yml ์„ค์ •
# src/main/resources/application-secret.yml ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ํ•„์š”ํ•œ ์„ค์ • ์ถ”๊ฐ€

# 3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
./gradlew bootRun

API ํ…Œ์ŠคํŠธ

# ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ๋ถ„์„
curl -X POST http://localhost:8080/api/images/uploads \
  -F "images=@photo1.jpg" \
  -F "images=@photo2.jpg" \
  -F "images=@photo3.jpg" \
  -F "images=@photo4.jpg" \
  -F "images=@photo5.jpg"

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ฌธ์˜์‚ฌํ•ญ์€ Issues๋ฅผ ํ†ตํ•ด ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

About

Back

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors