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 Platform에서 API 키 발급
.env파일에OPENAI_API_KEY설정
- Supabase 프로젝트 생성
.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 기반 |
| 기타 캠퍼스 | 🚧 준비중 | 추후 확장 예정 |
앱이 실행되지 않는 경우
- iOS 버전 확인: iOS 17.0 이상 필요
- 권한 확인: 카메라, 앨범 접근 권한 허용
- 재설치: 앱 삭제 후 재설치
로그인이 안 되는 경우
- Apple ID 확인: 설정 > Apple ID > iCloud에서 Apple ID 상태 확인
- 네트워크 연결: 인터넷 연결 상태 확인
- 게스트 모드: 임시로 게스트 모드 사용
AI 메뉴 인식이 작동하지 않는 경우
- API 키 확인: OpenAI API 키가 올바르게 설정되었는지 확인
- 이미지 품질: 선명하고 메뉴가 잘 보이는 사진 사용
- 권한 확인: 카메라 및 앨범 접근 권한 허용
위젯이 업데이트되지 않는 경우
- 메인 앱 실행: 최신 데이터 동기화를 위해 앱 실행
- 위젯 재추가: 위젯 제거 후 재추가
- 기기 재부팅: 시스템 캐시 초기화
- 🏗️ 프로젝트 구조 대폭 개선
- 📁 화면별 모듈 구조로 재구성 (Screens/Auth, Screens/Menu, Screens/Settings)
- 🔧 중앙화된 에러 처리 시스템 구현
- 📊 구조화된 로깅 시스템 추가
- 🌐 중앙화된 네트워크 관리 시스템
- 💾 계층적 캐싱 시스템 (메모리 + 디스크)
- 🧪 포괄적인 테스트 프레임워크
- 🍽️ 위젯 직접 데이터 로딩 기능
- 📚 문서화 개선 및 통합
- 🔒 API 키 보안 강화
- 🍽️ 위젯 초기 설치 시 데이터 로딩 개선
- 🌐 위젯이 항상 네트워크 요청을 시도하여 최신 데이터 로드
- 📱 로그인 후 위젯에서 실제 API 데이터 표시
- 🔧 네트워크 실패 시 캐시된 데이터 또는 기본 데이터 사용
- 🔧 버그 수정 및 안정성 개선
- 🐛 회원탈퇴 시 데이터베이스 정리 로직 개선
- 🔑 Apple Sign-In 키체인 처리 추가
- 🗑️ 메뉴 삭제 시 사용자별 필터링 개선
- 🎉 초기 릴리즈
- ✨ Apple Sign-In 지원
- 🍽️ AI 기반 메뉴 인식 (GPT-4o-mini)
- 📱 iOS 위젯 지원 (A타입/B타입)
- 🌙 다크모드 완벽 지원
- 🏫 대전캠퍼스 메뉴 관리
- 🏫 추가 캠퍼스 지원: 서울, 광주, 구미, 부산
- 🔔 알림 기능: 메뉴 변경 알림
- ⭐ 메뉴 즐겨찾기: 자주 먹는 메뉴 저장
- 📊 통계 및 분석: 식단 패턴 분석
- 🎯 개인화: 사용자 맞춤 추천
- 📈 트렌드 분석: 인기 메뉴 통계
- 🤝 소셜 기능: 메뉴 공유 및 리뷰
- 🏆 게임화: 식단 관리 챌린지
- 🔗 외부 연동: 캘린더, 건강 앱 연동
SSAFYHub 프로젝트에 기여하고 싶으시다면:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- 코딩 컨벤션: Swift API Design Guidelines 준수
- 아키텍처: ComposableArchitecture 패턴 사용
- 테스트: 새로운 기능에 대한 테스트 작성
- 문서화: 명확한 주석과 README 업데이트
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
- 이슈 리포트: GitHub Issues
- 기능 요청: GitHub Discussions
- 문서: Wiki
- SSAFY: 삼성 청년 소프트웨어 아카데미
- OpenAI: GPT-4o-mini API 제공
- Supabase: 백엔드 인프라 제공
- Point-Free: ComposableArchitecture 프레임워크