UMC Product Team이 제작하는 동아리 운영 관리 iOS 애플리케이션입니다.
이 README는 다음을 동시에 관리합니다.
- 공통 운영 정보(아키텍처, 개발 환경, 규칙)
- 기수별 정보(팀원, 기간, 신규 기능, 변경 사항)
기수가 늘어나도 아래 "기수 운영 보드"와 "기수별 상세"만 추가하면 누적 관리가 가능합니다.
| 기수 | 기간 | 상태 | 리드 | 상세 |
|---|---|---|---|---|
| 1기 | 2025.12.27 - 2026.02.20 | 완료 | 리버/이재원 | 1기 상세 |
| 2기 | YYYY.MM.DD - YYYY.MM.DD | 예정 | 제옹/정의찬 | 2기 상세 |
| N기 | YYYY.MM.DD - YYYY.MM.DD | 진행/예정 | TBD | 아래 템플릿으로 추가 |
"Focus on Growth, We Handle the Ops"
UMC(University MakeUs Challenge) 동아리 운영 관리 앱입니다. 디스코드, 구글 시트, 노션으로 분산된 운영 도구를 하나의 앱으로 통합하여 운영 효율성을 높이고, 부원들이 성장에 집중할 수 있는 환경을 제공합니다.
- 공지사항 수신 확인 (The Ping)
- Mobile-First Admin (출석/경고/공지 관리)
- GPS 기반 스마트 출석
- 커뮤니티 게시판
- iOS 26.0+
- Xcode 26.2
- Swift 6.3
Secrets.xcconfig의 실제 키 값(BASE_URL,KAKAO_KEY)은 팀 내부 문서 기준으로 설정합니다.GoogleService-Info.plist는 내부 가이드에 따라 발급/배치합니다.- 실제 키/설정 파일은 원격 저장소에 업로드하지 않습니다.
Feature-based Modular + Clean Architecture + Observation
View <-> ViewModel(@Observable) -> UseCase(Protocol) -> Repository -> DataSource
^
DIContainer가 Protocol 구현체 주입
| 계층 | 역할 | 의존 방향 |
|---|---|---|
| Presentation | View, ViewModel | -> Domain |
| Domain | UseCase, Model, Interface | <- Data(구현) |
| Data | Repository, Router, DTO | Domain Protocol 구현 |
AppProduct/AppProduct/
├── App/
├── Core/
│ ├── Alert/
│ ├── Common/
│ │ ├── DesignSystem/
│ │ ├── Error/
│ │ └── UIComponents/
│ ├── DIContainer/
│ ├── Manager/
│ ├── Navigation/
│ ├── NetworkAdapter/
│ └── Services/
└── Features/
├── Activity/
├── Auth/
├── Community/
├── Home/
├── MyPage/
├── Notice/
├── Splash/
└── Tab/
xcodebuild -project AppProduct/AppProduct.xcodeproj \
-scheme AppProduct \
test- 인증 연동 테스트에는 루트
.test-config.json이 필요합니다. - 샘플은
AppProduct/AppProductTests/AuhTest/EmailVerificationTests.swift를 참고합니다.
main/develop직접 푸시 금지, 기능 브랜치에서 PR- 커밋 제목 형식:
type: 작업 내용 - PR 본문 최소 항목: 작업 내용 / 변경 이유 / 리뷰 포인트 / 추후 작업
- UI 변경 시 스크린샷/영상 첨부
- 최소 1명 Approve 후
Squash and Merge
| 리버/이재원 | 제옹/정의찬 | 마티/김미주 | 소피/이예지 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| PL | iOS, PM | iOS | iOS |
| 리버 | 제옹 | 마티 | 소피 |
- The Ping 공지 미확인자 추적 및 재알림 UX 고도화
- Mobile-First Admin 운영 플로우 정착
- GPS 기반 스마트 출석 흐름 통합
- 알림 히스토리 SwiftData 저장 및 CloudKit 폴백 구조 적용
- 디자인 시스템에서 iOS 26 Liquid Glass 가이드라인 반영
- CoreML 기반 알림 분류 테스트 리소스 운영
| 구분 | 이름/실명 | 역할 | GitHub |
|---|---|---|---|
| 리더 | 제옹/정의찬 | PL | 제옹 |
| 팀원 1 | 입력 필요 | 입력 필요 | GitHub |
| 팀원 2 | 입력 필요 | 입력 필요 | GitHub |
| 팀원 3 | 입력 필요 | 입력 필요 | GitHub |
| 팀원 4 | 입력 필요 | 입력 필요 | GitHub |
| 팀원 5 | 입력 필요 | 입력 필요 | GitHub |
| 팀원 6 | 입력 필요 | 입력 필요 | GitHub |
- [신규] 기능 A
- [개선] 기능 B
- [실험] 기능 C
- 운영/기술 의사결정 요약
- 다음 기수로 넘길 TODO
아래 블록을 복사해서 기수별 상세 섹션 하단에 이어서 추가하세요.
### 🥈 N기 (YYYY.MM.DD - YYYY.MM.DD)
#### 팀 구성
| 이름/실명 | 이름/실명 | 이름/실명 |
|:------:|:------:|:------:|
| 역할 | 역할 | 역할 |
| [GitHub](https://github.com/) | [GitHub](https://github.com/) | [GitHub](https://github.com/) |
#### N기 신규/강화 기능
- [신규] 기능 A
- [개선] 기능 B
- [실험] 기능 C
#### N기 비고
- 운영/기술 의사결정 요약
- 다음 기수로 넘길 TODO그리고 "기수 운영 보드"에 해당 기수 행을 1줄 추가합니다.
README.mdCLAUDE.md.github/pull_request_template.mdAppProduct/Documentation.docc/Resources/NETWORK_API_GUIDE.mdAppProduct/Documentation.docc/Resources/SECRET_CIDCD_GUIDE.mdAppProduct/Documentation.docc/Resources/NOTICE_CLASSIFIER_GUIDE.mdAppProduct/Documentation.docc/Resources/SCHEDULE_CLASSIFIER_GUIDE.mdAppProduct/Documentation.docc/Resources/NOTICE_EDITOR_ROLE_TARGET_GUIDE.mdAppProduct/Documentation.docc/Resources/NOTICE_TAB_MENU_SCHEME.md
SwiftData CloudKit init failed로그는 CloudKit 실패 후 로컬 폴백 상황일 수 있습니다.- 시뮬레이터에서는 APNS 토큰 미설정으로 FCM 토큰 발급이 제한될 수 있습니다.
- Preview에서 ModelContainer 오류가 발생하면 in-memory 컨테이너 주입 여부를 확인하세요.



