μμ·¨μμ μν AI κΈ°λ° νΈμ¦ν리 μ리 보쑰 μ±μ Spring Boot λ°±μλ μλ²μ λλ€.
λ μνΌ μ¬μ§μ μ¬λ¦¬λ©΄ OCR + GPTλ‘ λ¨κ³λ₯Ό μλ ꡬ쑰ννκ³ , μΉ΄λ©λΌΒ·μμ± μΈμμΌλ‘ ν°μΉ μμ΄ μ리λ₯Ό μλ΄ν©λλ€.
| λΆλ₯ | κΈ°μ |
|---|---|
| Language / Framework | Java 17, Spring Boot |
| Database / ORM | MySQL 8.0, Spring Data JPA |
| Infra | Docker, Docker Compose, AWS EC2, AWS S3 |
| CI/CD | GitHub Actions |
| API λ¬Έμ | Swagger (SpringDoc) |
| External API | OpenAI GPT API, Kakao OAuth2, Kakao μ΄λ―Έμ§ API |
| AI μ°λ | Python Flask μλ² (PaddleOCR, YOLOv8, ResNet) |
[GitHub Push]
β
βΌ
[GitHub Actions] ββ Docker μ΄λ―Έμ§ λΉλ
β
βΌ
[AWS EC2] ββ Docker Compose
βββ Spring Boot (λ°±μλ API :8080)
βββ MySQL 8.0
βββ Python Flask (AI μλ² β OCR / κ°μ²΄Β·νλ μΈμ)
β
[AWS S3] ββ λ μνΌ μ΄λ―Έμ§ / μΈλ€μΌ
λ μνΌ μ λ‘λ νλ¦
μ΄λ―Έμ§ μ
λ‘λ
β S3 μλ³Έ μ μ₯
β Flask AI μλ²: PaddleOCRλ‘ ν
μ€νΈ μΆμΆ
β GPT API: λ¨κ³Β·μ¬λ£ JSON ꡬ쑰ν
β Kakao μ΄λ―Έμ§ API: μΈλ€μΌ μλ μ μ₯
β DB μ μ₯ β ν΄λΌμ΄μΈνΈμ λ μνΌ ID λ°ν
μΈνλΌ Β· λ°°ν¬
- Dockerfile + Docker Composeλ‘ λ°±μλ / AI / DB / S3 νκ²½ ν΅ν© ꡬμ±
- GitHub Actions CI/CD β AWS EC2 μλ λ°°ν¬ νμ΄νλΌμΈ ꡬμΆ
- CORS μ€μ , Swagger REST API λ¬Έμν
λλ©μΈ κ°λ°
- JPA μν°ν° μ€κ³: Member, Recipe, Ingredient, RecipeStep, MemberRecipe, Image
- BaseEntity μμμΌλ‘ createdAt / updatedAt / μννΈ μμ κ³΅ν΅ μ²λ¦¬
- 곡κ°Β·λΉκ³΅κ° λ μνΌ κ΅¬λΆ, μ¦κ²¨μ°ΎκΈ°(isLiked), νμ λ μνΌ(originalRecipeId μκΈ°μ°Έμ‘°)
μΈλΆ API μ°λ
- Kakao OAuth2 μμ λ‘κ·ΈμΈ + JWT μΈμ¦ νλ¦ κ΅¬ν
- Kakao μ΄λ―Έμ§ API μ°λ β λν μΈλ€μΌ μλ μ μ₯
- GPT API ν둬ννΈ μ€κ³ β μΆμΆ ν μ€νΈλ₯Ό λ¨κ³Β·μ¬λ£ JSONμΌλ‘ ꡬ쑰ν
- Flask AI μλ²μ OCR νμ΄νλΌμΈ μ°λ
server/yechef/
βββ .github/ # GitHub Actions μν¬νλ‘μ°
βββ yechef/
β βββ src/
β βββ main/java/ # λλ©μΈλ³ ν¨ν€μ§ (member, recipe, ingredient ...)
βββ Dockerfile
βββ docker-compose.yml
βββ build.gradle
βββ settings.gradle
docker-compose.ymlμ΄ env_file: .envλ₯Ό μ°Έμ‘°ν©λλ€.
# DB
DB_ROOT_PASSWORD=
DB_NAME=
SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/yechef
SPRING_DATASOURCE_USERNAME=
SPRING_DATASOURCE_PASSWORD=
# OpenAI
OPENAI_MODEL=
OPENAI_API_URL=
# Kakao
KAKAO_REST_API_KEY=
# AWS S3
AWS_ACCESS_KEY=
AWS_SECRET_KEY=
S3_BUCKET_NAME=docker-compose up --build- API μλ²:
http://localhost:8080 - Swagger:
http://localhost:8080/swagger-ui/index.html
| μν | μ΄λ¦ |
|---|---|
| λ°±μλ (νμ₯) | κΉμμ |
| λ°±μλ | μ μμ§ |
| νλ‘ νΈμλ | κΉμ§μ |
| AI | κΉν리 |


