Skip to content

CobyApp/SSAFYHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🍽️ SSAFYHub

SSAFY 학생듀을 μœ„ν•œ 슀마트 식단 관리 μ•±

iOS Swift License Version

✨ κ°œμš”

SSAFYHubλŠ” μ‚Όμ„± μ²­λ…„ μ†Œν”„νŠΈμ›¨μ–΄ 아카데미(SSAFY) 캠퍼슀의 식단 정보λ₯Ό μ œκ³΅ν•˜κ³  관리할 수 μžˆλŠ” iOS μ•±μž…λ‹ˆλ‹€. AI 기반 메뉴 인식과 μ‹€μ‹œκ°„ μœ„μ ―μ„ 톡해 ν•™μƒλ“€μ˜ 식단 관리λ₯Ό λ”μš± νŽΈλ¦¬ν•˜κ²Œ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.

πŸš€ 핡심 κΈ°λŠ₯

πŸ” 인증 μ‹œμŠ€ν…œ

  • Apple Sign-In: μ•ˆμ „ν•˜κ³  λΉ λ₯Έ 둜그인
  • 게슀트 λͺ¨λ“œ: μ œν•œλœ κΈ°λŠ₯으둜 μ²΄ν—˜ κ°€λŠ₯
  • μžλ™ μ„Έμ…˜ 관리: μ•± μž¬μ‹œμž‘ μ‹œ μžλ™ 둜그인

🍽️ 메뉴 관리

  • μ£Όκ°„ 메뉴 νŽΈμ§‘: ν•œ λ²ˆμ— 5일치 메뉴 등둝
  • AI 메뉴 인식: GPT-4o-mini둜 μ‹λ‹¨ν‘œ 사진 μžλ™ 뢄석
  • μ‹€μ‹œκ°„ 동기화: 메뉴 λ³€κ²½ μ‹œ μ¦‰μ‹œ 반영
  • μΊ νΌμŠ€λ³„ 관리: λŒ€μ „μΊ νΌμŠ€ 지원 (μΆ”ν›„ ν™•μž₯ μ˜ˆμ •)

πŸ“± μœ„μ ― 지원

  • Aνƒ€μž…/Bνƒ€μž… μœ„μ ―: ν™ˆ ν™”λ©΄μ—μ„œ λ°”λ‘œ 메뉴 확인
  • μžλ™ μ—…λ°μ΄νŠΈ: 맀일 μžμ •, 점심, 저녁 μžλ™ κ°±μ‹ 
  • 직접 데이터 λ‘œλ”©: μ•± μ‹€ν–‰ 없이도 μ΅œμ‹  메뉴 ν‘œμ‹œ

🎨 μ‚¬μš©μž κ²½ν—˜

  • 닀크λͺ¨λ“œ μ™„λ²½ 지원: 라이트/닀크/μ‹œμŠ€ν…œ ν…Œλ§ˆ
  • 직관적인 UI: SwiftUI 기반 λͺ¨λ˜ λ””μžμΈ
  • μ ‘κ·Όμ„±: κ³ λŒ€λΉ„ 색상과 μ μ ˆν•œ 폰트 크기

πŸ—οΈ 기술 μŠ€νƒ

Frontend SwiftUI, ComposableArchitecture (TCA)
Backend Supabase (PostgreSQL, Auth)
AI OpenAI GPT-4o-mini (이미지 뢄석)
Build System Tuist
Authentication Apple Sign-In, Guest Mode
Widget WidgetKit (iOS widgets)
Architecture MVVM + Coordinator Pattern

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

SSAFYHub/
β”œβ”€β”€ πŸ“ Configuration/              # μ„€μ • 파일
β”‚   └── env.example               # ν™˜κ²½ λ³€μˆ˜ μ˜ˆμ‹œ
β”œβ”€β”€ πŸ“ Scripts/                   # λΉŒλ“œ 슀크립트
β”œβ”€β”€ πŸ“ SharedModels/              # 곡유 λͺ¨λΈ
β”œβ”€β”€ πŸ“ SSAFYHub/                  # 메인 μ•±
β”‚   β”œβ”€β”€ πŸ“ Sources/
β”‚   β”‚   β”œβ”€β”€ πŸ“ App/               # μ•± μ§„μž…μ 
β”‚   β”‚   β”œβ”€β”€ πŸ“ Core/              # 핡심 λͺ¨λ“ˆ
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Caching/       # 캐싱 μ‹œμŠ€ν…œ
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ ErrorHandling/ # μ—λŸ¬ 처리
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Logging/       # λ‘œκΉ… μ‹œμŠ€ν…œ
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Managers/      # μ„œλΉ„μŠ€ λ§€λ‹ˆμ €
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Network/       # λ„€νŠΈμ›Œν¬ 관리
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Testing/       # ν…ŒμŠ€νŠΈ μœ ν‹Έλ¦¬ν‹°
β”‚   β”‚   β”‚   └── πŸ“ Utilities/     # μœ ν‹Έλ¦¬ν‹°
β”‚   β”‚   β”œβ”€β”€ πŸ“ Screens/           # 화면별 λͺ¨λ“ˆ
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Auth/          # 인증 ν™”λ©΄
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“ Menu/          # 메뉴 ν™”λ©΄
β”‚   β”‚   β”‚   └── πŸ“ Settings/      # μ„€μ • ν™”λ©΄
β”‚   β”‚   β”œβ”€β”€ πŸ“ Shared/            # 곡유 μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   └── SSAFYHubApp.swift     # μ•± μ§„μž…μ 
β”‚   └── πŸ“ Tests/                 # ν…ŒμŠ€νŠΈ
└── πŸ“ SSAFYHubWidget/            # μœ„μ ― ν™•μž₯

πŸš€ λΉ λ₯Έ μ‹œμž‘

πŸ“‹ ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

  • Xcode: 15.0+
  • iOS: 17.0+
  • Swift: 5.9+
  • Tuist: 4.0+

⚑ μ„€μΉ˜ 및 μ‹€ν–‰

# 1. μ €μž₯μ†Œ 클둠
git clone https://github.com/CobyApp/SSAFYHub.git
cd SSAFYHub

# 2. μ˜μ‘΄μ„± μ„€μΉ˜
tuist install

# 3. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp Configuration/env.example .env
# .env νŒŒμΌμ— μ‹€μ œ API ν‚€ μ„€μ •

# 4. ν”„λ‘œμ νŠΈ 생성 및 μ‹€ν–‰
tuist generate
# Xcodeμ—μ„œ ν”„λ‘œμ νŠΈ μ—΄κΈ°

πŸ”§ ν™˜κ²½ μ„€μ •

OpenAI API μ„€μ •

  1. OpenAI Platformμ—μ„œ API ν‚€ λ°œκΈ‰
  2. .env νŒŒμΌμ— OPENAI_API_KEY μ„€μ •

Supabase μ„€μ •

  1. Supabase ν”„λ‘œμ νŠΈ 생성
  2. .env νŒŒμΌμ— λ‹€μŒ μ„€μ •:
    SUPABASE_URL=your_supabase_url
    SUPABASE_ANON_KEY=your_supabase_anon_key

🍽️ μœ„μ ― κ°€μ΄λ“œ

πŸ“± μœ„μ ― μ’…λ₯˜

  • Aνƒ€μž… μœ„μ ―: 주황색 ν…Œλ§ˆ, Aνƒ€μž… 메뉴 ν‘œμ‹œ
  • Bνƒ€μž… μœ„μ ―: μ΄ˆλ‘μƒ‰ ν…Œλ§ˆ, Bνƒ€μž… 메뉴 ν‘œμ‹œ

πŸ”„ μžλ™ μ—…λ°μ΄νŠΈ

  • μ—…λ°μ΄νŠΈ μ‹œκ°„: 맀일 μžμ •, 점심(12μ‹œ), 저녁(18μ‹œ)
  • μ‹€μ‹œκ°„ 동기화: 메인 μ•±μ—μ„œ 메뉴 μˆ˜μ • μ‹œ μœ„μ ― μžλ™ μ—…λ°μ΄νŠΈ
  • 직접 데이터 λ‘œλ”©: μœ„μ ―μ΄ λ…λ¦½μ μœΌλ‘œ λ„€νŠΈμ›Œν¬μ—μ„œ μ΅œμ‹  데이터 λ‘œλ“œ

πŸ“ 지원 크기

  • Small: μž‘μ€ 크기 (κΈ°λ³Έ)
  • Medium: 쀑간 크기 (더 λ§Žμ€ 메뉴 ν‘œμ‹œ)

πŸ§ͺ ν…ŒμŠ€νŠΈ

# λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ‹€ν–‰
tuist test

# νŠΉμ • ν…ŒμŠ€νŠΈ νƒ€κ²Ÿ μ‹€ν–‰
tuist test SSAFYHubTests

# λΉŒλ“œ ν…ŒμŠ€νŠΈ
tuist build

πŸ” λ³΄μ•ˆ

  • Row Level Security (RLS): Supabaseμ—μ„œ 데이터 μ ‘κ·Ό μ œμ–΄
  • μ‚¬μš©μžλ³„ κΆŒν•œ: 게슀트/인증된 μ‚¬μš©μž ꡬ뢄
  • μΊ νΌμŠ€λ³„ 데이터 격리: 각 캠퍼슀의 메뉴 데이터 독립 관리
  • App Group: μœ„μ ―κ³Ό 메인 μ•± κ°„ μ•ˆμ „ν•œ 데이터 곡유
  • API ν‚€ λ³΄μ•ˆ: ν™˜κ²½λ³€μˆ˜ 기반 관리

πŸ“Š ν˜„μž¬ 지원 μƒνƒœ

κΈ°λŠ₯ μƒνƒœ λΉ„κ³ 
λŒ€μ „μΊ νΌμŠ€ βœ… μ™„μ „ 지원 메뉴 쑰회, νŽΈμ§‘, AI 인식
닀크λͺ¨λ“œ βœ… μ™„μ „ 지원 라이트/닀크/μ‹œμŠ€ν…œ ν…Œλ§ˆ
μœ„μ ― βœ… μ™„μ „ 지원 Aνƒ€μž…/Bνƒ€μž… μœ„μ ―
AI 메뉴 인식 βœ… μ™„μ „ 지원 GPT-4o-mini 기반
기타 캠퍼슀 🚧 쀀비쀑 μΆ”ν›„ ν™•μž₯ μ˜ˆμ •

πŸ› 문제 ν•΄κ²°

일반적인 문제

앱이 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 경우
  1. iOS 버전 확인: iOS 17.0 이상 ν•„μš”
  2. κΆŒν•œ 확인: 카메라, 앨범 μ ‘κ·Ό κΆŒν•œ ν—ˆμš©
  3. μž¬μ„€μΉ˜: μ•± μ‚­μ œ ν›„ μž¬μ„€μΉ˜
둜그인이 μ•ˆ λ˜λŠ” 경우
  1. Apple ID 확인: μ„€μ • > Apple ID > iCloudμ—μ„œ Apple ID μƒνƒœ 확인
  2. λ„€νŠΈμ›Œν¬ μ—°κ²°: 인터넷 μ—°κ²° μƒνƒœ 확인
  3. 게슀트 λͺ¨λ“œ: μž„μ‹œλ‘œ 게슀트 λͺ¨λ“œ μ‚¬μš©
AI 메뉴 인식이 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 경우
  1. API ν‚€ 확인: OpenAI API ν‚€κ°€ μ˜¬λ°”λ₯΄κ²Œ μ„€μ •λ˜μ—ˆλŠ”μ§€ 확인
  2. 이미지 ν’ˆμ§ˆ: μ„ λͺ…ν•˜κ³  메뉴가 잘 λ³΄μ΄λŠ” 사진 μ‚¬μš©
  3. κΆŒν•œ 확인: 카메라 및 앨범 μ ‘κ·Ό κΆŒν•œ ν—ˆμš©
μœ„μ ―μ΄ μ—…λ°μ΄νŠΈλ˜μ§€ μ•ŠλŠ” 경우
  1. 메인 μ•± μ‹€ν–‰: μ΅œμ‹  데이터 동기화λ₯Ό μœ„ν•΄ μ•± μ‹€ν–‰
  2. μœ„μ ― μž¬μΆ”κ°€: μœ„μ ― 제거 ν›„ μž¬μΆ”κ°€
  3. κΈ°κΈ° μž¬λΆ€νŒ…: μ‹œμŠ€ν…œ μΊμ‹œ μ΄ˆκΈ°ν™”

πŸ“ μ—…λ°μ΄νŠΈ 둜그

πŸ†• v1.0.6 (2025λ…„ 1μ›”)

  • πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰 λŒ€ν­ κ°œμ„ 
  • πŸ“ 화면별 λͺ¨λ“ˆ ꡬ쑰둜 μž¬κ΅¬μ„± (Screens/Auth, Screens/Menu, Screens/Settings)
  • πŸ”§ μ€‘μ•™ν™”λœ μ—λŸ¬ 처리 μ‹œμŠ€ν…œ κ΅¬ν˜„
  • πŸ“Š κ΅¬μ‘°ν™”λœ λ‘œκΉ… μ‹œμŠ€ν…œ μΆ”κ°€
  • 🌐 μ€‘μ•™ν™”λœ λ„€νŠΈμ›Œν¬ 관리 μ‹œμŠ€ν…œ
  • πŸ’Ύ 계측적 캐싱 μ‹œμŠ€ν…œ (λ©”λͺ¨λ¦¬ + λ””μŠ€ν¬)
  • πŸ§ͺ 포괄적인 ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬
  • 🍽️ μœ„μ ― 직접 데이터 λ‘œλ”© κΈ°λŠ₯
  • πŸ“š λ¬Έμ„œν™” κ°œμ„  및 톡합
  • πŸ”’ API ν‚€ λ³΄μ•ˆ κ°•ν™”

v1.0.5 (2025λ…„ 1μ›”)

  • 🍽️ μœ„μ ― 초기 μ„€μΉ˜ μ‹œ 데이터 λ‘œλ”© κ°œμ„ 
  • 🌐 μœ„μ ―μ΄ 항상 λ„€νŠΈμ›Œν¬ μš”μ²­μ„ μ‹œλ„ν•˜μ—¬ μ΅œμ‹  데이터 λ‘œλ“œ
  • πŸ“± 둜그인 ν›„ μœ„μ ―μ—μ„œ μ‹€μ œ API 데이터 ν‘œμ‹œ
  • πŸ”§ λ„€νŠΈμ›Œν¬ μ‹€νŒ¨ μ‹œ μΊμ‹œλœ 데이터 λ˜λŠ” κΈ°λ³Έ 데이터 μ‚¬μš©

v1.0.1 (2025λ…„ 8μ›”)

  • πŸ”§ 버그 μˆ˜μ • 및 μ•ˆμ •μ„± κ°œμ„ 
  • πŸ› νšŒμ›νƒˆν‡΄ μ‹œ λ°μ΄ν„°λ² μ΄μŠ€ 정리 둜직 κ°œμ„ 
  • πŸ”‘ Apple Sign-In 킀체인 처리 μΆ”κ°€
  • πŸ—‘οΈ 메뉴 μ‚­μ œ μ‹œ μ‚¬μš©μžλ³„ 필터링 κ°œμ„ 

v1.0.0 (2025λ…„ 8μ›”)

  • πŸŽ‰ 초기 릴리즈
  • ✨ Apple Sign-In 지원
  • 🍽️ AI 기반 메뉴 인식 (GPT-4o-mini)
  • πŸ“± iOS μœ„μ ― 지원 (Aνƒ€μž…/Bνƒ€μž…)
  • πŸŒ™ 닀크λͺ¨λ“œ μ™„λ²½ 지원
  • 🏫 λŒ€μ „μΊ νΌμŠ€ 메뉴 관리

πŸ—ΊοΈ ν–₯ν›„ κ³„νš

🚧 v1.1.0 (μ˜ˆμ •)

  • 🏫 μΆ”κ°€ 캠퍼슀 지원: μ„œμšΈ, κ΄‘μ£Ό, ꡬ미, λΆ€μ‚°
  • πŸ”” μ•Œλ¦Ό κΈ°λŠ₯: 메뉴 λ³€κ²½ μ•Œλ¦Ό
  • ⭐ 메뉴 즐겨찾기: 자주 λ¨ΉλŠ” 메뉴 μ €μž₯

🚧 v1.2.0 (μ˜ˆμ •)

  • πŸ“Š 톡계 및 뢄석: 식단 νŒ¨ν„΄ 뢄석
  • 🎯 κ°œμΈν™”: μ‚¬μš©μž 맞좀 μΆ”μ²œ
  • πŸ“ˆ νŠΈλ Œλ“œ 뢄석: 인기 메뉴 톡계

🚧 v1.3.0 (μ˜ˆμ •)

  • 🀝 μ†Œμ…œ κΈ°λŠ₯: 메뉴 곡유 및 리뷰
  • πŸ† κ²Œμž„ν™”: 식단 관리 μ±Œλ¦°μ§€
  • πŸ”— μ™ΈλΆ€ 연동: μΊ˜λ¦°λ”, 건강 μ•± 연동

🀝 κΈ°μ—¬ν•˜κΈ°

SSAFYHub ν”„λ‘œμ νŠΈμ— κΈ°μ—¬ν•˜κ³  μ‹ΆμœΌμ‹œλ‹€λ©΄:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“‹ κΈ°μ—¬ κ°€μ΄λ“œλΌμΈ

  • μ½”λ”© μ»¨λ²€μ…˜: Swift API Design Guidelines μ€€μˆ˜
  • μ•„ν‚€ν…μ²˜: ComposableArchitecture νŒ¨ν„΄ μ‚¬μš©
  • ν…ŒμŠ€νŠΈ: μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μž‘μ„±
  • λ¬Έμ„œν™”: λͺ…ν™•ν•œ 주석과 README μ—…λ°μ΄νŠΈ

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

πŸ“ž 지원

πŸ™ κ°μ‚¬μ˜ 말

  • SSAFY: μ‚Όμ„± μ²­λ…„ μ†Œν”„νŠΈμ›¨μ–΄ 아카데미
  • OpenAI: GPT-4o-mini API 제곡
  • Supabase: λ°±μ—”λ“œ 인프라 제곡
  • Point-Free: ComposableArchitecture ν”„λ ˆμž„μ›Œν¬

SSAFYHub둜 더 μŠ€λ§ˆνŠΈν•œ 식단 관리 μ‹œμž‘ν•˜κΈ° 🍽️

Download on the App Store

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages